CVE-2026-98829
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: wifi: mac80211: extra_len daşmasının qarşısını almaq üçün həddindən artıq böyük fraqmentləri rədd edin ieee80211_rx_h_defragment() funksiyasında növbəti fraqmentlər gəldikcə fraqment faylları (payloads) entry->extra_len dəyişənində toplanır: entry->extra_len += rx->skb->len; Sonuncu fraqment gəldikdə, başlanğıc fraqment növbədən çıxarılır və kopyalama əməliyyatından əvvəl bütün növbədə gözləyən fraqmentlər üçün kifayət qədər sonluq sahəsinin (tailroom) təmin edilməsi məqsədilə pskb_expand_head() funksiyası entry->extra_len ilə çağırılır: if (skb_tailroom(rx->skb) < entry->extra_len) { if (unlikely(pskb_expand_head(rx->skb, 0, entry->extra_len, GFP_ATOMIC))) { ... } } while ((skb = __skb_dequeue(&entry->skb_list))) { skb_put_data(rx->skb, skb->data, skb->len); dev_kfree_skb(skb); } 69f132236827 ("mac80211: shrink struct ieee80211_fragment_entry") commit-ində strukturun yaddaş izini azaltmaq üçün entry->extra_len tipi unsigned int-dən u16 tipinə endirilmişdi. Lakin, IEEE 802.11 freym ardıcıllığı 16 fraqmentə qədər (fraqment nömrələri 0..15) ehtiva edə bilər. Əgər böyük fraqmentlərdən ibarət bir ardıcıllıq daxil olarsa (məsələn, bədniyyətli tərəfdən və ya saxta AP-dən), fraqment uzunluqlarının cəmi 65535 baytı aşa bilər (məsələn, hər biri 4400 bayt olan 15 fraqment cəmi 66000 bayt edir). extra_len u16 olduğu üçün bu toplama əməliyyatı daşma verir və modulo 65536 üzrə dövr edir (məsələn, 66000 dəyəri 464-ə çevrilir). Nəticədə, pskb_expand_head() yalnız kəsilmiş miqdarda sonluq sahəsi ayırır (və ya başlanğıc fraqmentin artıq >= 464 bayt sonluq sahəsi varsa, bu proses tamamilə ötürülür). Sonradan skb_put_data() növbədə gözləyən skb siyahısı boyunca iterasiya etdikdə, tam faylı kiçik ölçülü buferə əlavə edir ki, bu da skb_put()-ın skb_over_panic()-i tetikləməsinə və softirq kontekstində kernel-in çökməsinə səbəb olur. IEEE 802.11 standartında legitim MSDU maksimum 2304 baytdır (və ya fraqmentləşdirilməyən A-MSDU üçün 7935/11454 bayta qədər), bu da U16_MAX dəyərindən xeyli aşağıdır. Gələn fraqment uzunluğunun əlavə edilməsinin U16_MAX dəyərini aşıb-aşmayacağını yoxlayaraq, struct ieee80211_fragment_entry strukturunun ölçüsünü artırmadan bu problemi həll edin. Əgər aşırsa, növbədə gözləyən fraqmentləri təmizləyin və freymi rədd edin. [ayrıca rədd etmə səbəbi təyin edin]
Necə düzəltmək olar
Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| microsoft azl3_kernel_6.6.157.1-1 | Aralıq göstərilməyib | — |
| microsoft azl3_kernel_6.6.159.1-1 | Aralıq göstərilməyib | — |
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.