CVE-2026-74488
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: wifi: mwifiex: A-MSDU TDLS freymlərini analiz edərkən altfreym uzunluğundan istifadə edin mwifiex_11n_dispatch_amsdu_pkt() funksiyası ieee80211_amsdu_to_8023s() vasitəsilə A-MSDU-nu bölür və nəticədə alınan altfreymləri nəzərdən keçirir. Hər bir altfreym üçün o, altfreym məlumat göstəricisini mwifiex_process_tdls_action_frame() funksiyasına ötürür, lakin bunu rx_skb->len əvəzinə A-MSDU valideyninin uzunluğu olan skb->len ilə birləşdirir: rx_skb = __skb_dequeue(&list); rx_hdr = (struct rx_packet_hdr *)rx_skb->data; if (ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info) && ntohs(rx_hdr->eth803_hdr.h_proto) == ETH_P_TDLS) { mwifiex_process_tdls_action_frame(priv, (u8 *)rx_hdr, skb->len); } Valideyn həmin buferin düzgün təsviri deyil və ümumiyyətlə etibarlı yaddaş sahəsi olmaya bilər. ieee80211_amsdu_to_8023s() funksiyası bununla başa çatır: if (!reuse_skb) dev_kfree_skb(skb); və o, reuse_skb dəyişənini yalnız valideyn xətti olduqda, head_frag olmadıqda və *sonuncu* altfreym kimi istifadə edildikdə təyin edir. Beləliklə, valideyn təkrar istifadə üçün uyğun olmadıqda, o artıq azad edilmiş olur və skb->len oxunuşu "use-after-free" (azad edilmis yaddaşdan istifadə) xətasına səbəb olur. Təkrar istifadə edildikdə isə skb->len sonuncu altfreymin uzunluğudur və hər bir əvvəlki altfreymə tətbiq edilir ki, bu da əvvəlki altfreym daha qısa olduqda buferin ölçüsünü olduğundan çox göstərir. Çağırılan funksiya yanlış uzunluğu kompensasiya edə bilmir, çünki öz maksimum həddini ona verilən dəyərdən törədir. Hər bir freym tipi belə hesablayır: ies_len = len - sizeof(struct ethhdr) - TDLS_*_FIX_LEN; və elementlərin gəzintisi tamamilə həmin maksimum hədlə məhdudlaşdırılır: for (end = pos + ies_len; pos + 1 < end; pos += 2 + pos[1]) { u8 ie_len = pos[1]; if (pos + 2 + ie_len > end) break; beləliklə, həddindən artıq böyük len dəyəri "end" göstəricisini altfreymin sonuna çatdırır və gəzinti prosesi onun xaricindən məlumatları oxuyur və kopyalayır. A-MSDU strukturu göndərən tərəf tərəfindən seçilir, bu da sonuncu altfreym ilə daha qısa olan əvvəlki altfreym arasındakı fərqin uzaqdan idarə olunmasını mümkün edir. Buna nail olmaq üçün proqram təminatında (firmware) TDLS dəstəyi və altfreymdə TDLS ethertype-ı tələb olunur. Digər çağırıcı, mwifiex_process_rx_packet(), doğrudur: o, RX buferinin eyni bölgəsini təsvir edən göstərici və uzunluğu ötürür. Həqiqətən analiz edilən altfreymin uzunluğu olan rx_skb->len ötürülür.
Necə düzəltmək olar
- Linux Linux707664027bb9307f7268eda403af7c4ccd9b8644, 3b02275833a0d3e6583627995d614fa99bdf364f, a1f0f7dc7eb15754e6931b433edb7beb754c996a, 25e5a3fe4f15e30f74eca42cbf3bcc3a3fbeda79, ece2ebb34247d573142617dfc534a9dc11ba59be, c9dcfe6b8b71369e1d732e2ff622c3696a2f032c, 5a21ab03829cb6d2682c127f22e2b9cd63b4393f, 99a948382af8a225e2d5e54a7052158cd6281cc6 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < 707664027bb9307f7268eda403af7c4ccd9b8644, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < 3b02275833a0d3e6583627995d614fa99bdf364f, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < a1f0f7dc7eb15754e6931b433edb7beb754c996a, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < 25e5a3fe4f15e30f74eca42cbf3bcc3a3fbeda79, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < ece2ebb34247d573142617dfc534a9dc11ba59be, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < c9dcfe6b8b71369e1d732e2ff622c3696a2f032c, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < 5a21ab03829cb6d2682c127f22e2b9cd63b4393f, 776f742040ca5eb6242c60f29ac73d5752a5b621 ≤ v < 99a948382af8a225e2d5e54a7052158cd6281cc6, 4.5 | 707664027bb9307f7268eda403af7c4ccd9b8644, 3b02275833a0d3e6583627995d614fa99bdf364f, a1f0f7dc7eb15754e6931b433edb7beb754c996a, 25e5a3fe4f15e30f74eca42cbf3bcc3a3fbeda79, ece2ebb34247d573142617dfc534a9dc11ba59be, c9dcfe6b8b71369e1d732e2ff622c3696a2f032c, 5a21ab03829cb6d2682c127f22e2b9cd63b4393f, 99a948382af8a225e2d5e54a7052158cd6281cc6 |
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.