CVE-2026-98104
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: net/sched: cls_u32: node ID hovuzu tükəndikdə təkrarlanan handle probleminin düzəldilməsi hər iki idr_alloc_u32() diapazonları dolu olduqda, gen_new_kid() funksiyası xəta bildirmək əvəzinə, maksimal (htid | 0xFFF) dəyərini qaytarmağa meyl edir. u32_change() bu dəyərə etibar edir və heş cədvəlində artıq mövcud olan handle ilə yeni knode daxil edir ki, bu da cədvəlin node ID sahəsində handle unikallığını pozur. Handle heç vaxt ht->handle_idr-də rezerv edilməmişdi, buna görə də sonrakı idr_remove(&ht->handle_idr, handle) istifadə edən hər bir xəta yolu fərqli, aktiv knode-un rezervasiyasını silir və həmin rezervasiya yenidən istifadə olunur — tək bir uğursuz əlavə daha çox təkrarlanmaya səbəb olur. 4095 limiti hər bir (table, bucket) üçündür — ht->handle_idr hər bir heş cədvəli üçündür və diapazon htid-dən (bucketid) törəyir, beləliklə, böləni 256 olan cədvəl qanuni olaraq 256*4095 knode saxlaya bilər. Oxşar köməkçi funksiya olan gen_new_htid()-də də eyni gizli daxili xəta var: tp_c handle hovuzu (1..0x7FF) dolu olduqda o, 0 qaytarır və u32_init() yoxlama aparmadan handle 0 ilə kök heş cədvəlini dərc edir. Handle 0 olan iki kök cədvəli u32_lookup_ht()-də eyniləşdirilir və bu, cross-tcf_proto knode əlavə etməyə/axtarmağa/silməyə imkan verir. Bölən yolunda artıq mövcud olan eyni tükənmə yoxlamasını əlavə edin. Node ID sahəsi tükəndikdə u32_change() ENOSPC/ENOMEM xətası ilə, heş cədvəli ID sahəsi tükəndikdə isə u32_init() -ENOMEM xətası ilə dayansın deyə xəta qaytarın. Extack mesajı hovuzun tükənməsini (-ENOSPC) müvəqqəti ayırma xətasından (-ENOMEM) fərqləndirir. Xətanı yenidən yaratmaq üçün şərtlər: - CONFIG_NET_SCHED=y, CONFIG_CLS_U32=y (və ya modul yüklənmiş halda =m) - Cihazda clsact qdisc yaradın, sonra kök heş cədvəli (tək bucket) üçün node ID sahəsini doldurmaq məqsədilə avtomatik generatsiya edilmiş handle-lara malik 4095 u32 filtri əlavə edin. 4096-cı avto-handle filtrinin əlavə edilməsi təkrarlanan handle-i tetiklir (fh 800::fff yenidən istifadə olunur). Səviyyə 2-də əlçatandır (unshare -Urn, namespace-lokal CAP_NET_ADMIN). - gen_new_htid üçün: tp_c handle hovuzunu doldurmaq üçün eyni blokda 2047 u32 proto girişi yaradın, sonra daha birini yaradın. Kök cədvəli handle 0 alır və digər handle-0 kök cədvəlləri ilə eyniləşir.
Necə düzəltmək olar
- Linux Linuxf4ee13ed7f7b22dcd8287fcf477ae37bd84567da, 84223baf21bc9b008444ae9bc38d5fb91fe00b9d, 6890e28840bae4f6805e8de981c4ec8e12a4e064, feab9261b537df4ebb8350e4779bc185373059fd, f594f04268d01c5fdc975f3f51fc219ea2159ac6, d7e7e98d23f42a92d9ab7e36302bd96bd9b33b5f və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 7801db8aec957fa6610efe0ee26a6c8bc0f1d73b ≤ v < f4ee13ed7f7b22dcd8287fcf477ae37bd84567da, 7801db8aec957fa6610efe0ee26a6c8bc0f1d73b ≤ v < 84223baf21bc9b008444ae9bc38d5fb91fe00b9d, 7801db8aec957fa6610efe0ee26a6c8bc0f1d73b ≤ v < 6890e28840bae4f6805e8de981c4ec8e12a4e064, 7801db8aec957fa6610efe0ee26a6c8bc0f1d73b ≤ v < feab9261b537df4ebb8350e4779bc185373059fd, 7801db8aec957fa6610efe0ee26a6c8bc0f1d73b ≤ v < f594f04268d01c5fdc975f3f51fc219ea2159ac6, 7801db8aec957fa6610efe0ee26a6c8bc0f1d73b ≤ v < d7e7e98d23f42a92d9ab7e36302bd96bd9b33b5f, 3.16 | f4ee13ed7f7b22dcd8287fcf477ae37bd84567da, 84223baf21bc9b008444ae9bc38d5fb91fe00b9d, 6890e28840bae4f6805e8de981c4ec8e12a4e064, feab9261b537df4ebb8350e4779bc185373059fd, f594f04268d01c5fdc975f3f51fc219ea2159ac6, d7e7e98d23f42a92d9ab7e36302bd96bd9b33b5f |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.