CVE-2026-46133
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: RDMA/rxe: Naməlum opkodları ICRC emalından əvvəl rədd edin Commit 7244491dab34 ("RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv") tətbiq edildikdən sonra belə, tək bir autentifikasiya olunmamış UDP paketi hələ də panikaya səbəb ola bilər. Həmin yamaq payload_size() alt axınını (underflow) yalnız qısa paketləri olan etibarlı opkodlar üçün həll etmişdir, naməlum opkod daşıyan paketlər üçün yox. Aşağıda təsvir olunan naməlum-opcode OOB oxuması həmin commit-dən əvvəl mövcud idi və ilkin Soft RoCE drayverinə qədər uzanır. Orada əlavə edilmiş yoxlama belədir: pkt->paylen < header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE burada header_size(pkt), rxe_opcode[pkt->opcode].length şəklində genişlənir. rxe_opcode[] massivi 256 elementdən ibarətdir, lakin yalnız təyin edilmiş IB opkodları üçün doldurulub; hər hansı digər element (məsələn, 0xff opkodu) sıfırla başladılır, buna görə də length == 0 olur və yoxlama aşağıdakı hala çevrilir: pkt->paylen < 0 + bth_pad(pkt) + RXE_ICRC_SIZE bu isə pkt->paylen-i kifayət qədər məhdudlaşdırmır. Daha sonra rxe_icrc_hdr() funksiyası bunu hesablayır: rxe_opcode[pkt->opcode].length - RXE_BTH_BYTES length == 0 olduqda bu alt axına (underflow) səbəb olur və rxe_crc32() funksiyasına çox böyük bir dəyər ötürür ki, bu da skb faydalı yükünün (payload) sərhədlərdən kənar (out-of-bounds) oxunmasına gətirib çıxarır. Həmin düzəliş tətbiq edilmiş v7.0-rc7 versiyasında, CONFIG_RDMA_RXE=y və CONFIG_KASAN=y parametrləri ilə QEMU/KVM-də, aşağıdakı əmrədən sonra təkrar istehsal edildi: rdma link add rxe0 type rxe netdev eth0 BTH opcode=0xff və QPN=IB_MULTICAST_QPN ilə 4791 portuna göndərilən tək bir 48 baytlıq UDP paketi bunları tetiklir: BUG: KASAN: slab-out-of-bounds in crc32_le+0x115/0x170 Read of size 1 at addr ... The buggy address is located 0 bytes to the right of allocated 704-byte region Call Trace: crc32_le+0x115/0x170 rxe_icrc_hdr.isra.0+0x226/0x300 rxe_icrc_check+0x13f/0x3a0 rxe_rcv+0x6e1/0x16e0 rxe_udp_encap_recv+0x20a/0x320 udp_queue_rcv_one_skb+0x7ed/0x12c0 Eyni strukturda olan növbəti paketlər xəritələnməmiş yaddaşda xəta verir və nüvəni panikaya salır. Tetikləmə üçün yalnız modulun yüklənməsi və "rdma link add" lazımdır; heç bir QP, bağlantı və ya autentifikasiya tələb olunmur. Bu problem, hər hansı uzunluq aritmetikası işə düşməzdən əvvəl, opkodu rxe_opcode[] massivində elementi olmayan (sıfır maskası və ya sıfır uzunluğu vasitəsilə aşkar edilən) paketlərin rədd edilməsi ilə həll edilir.
Necə düzəltmək olar
- linux linux_kernel5.10.258, 5.15.209, 6.1.175, 6.6.140, 6.12.88, 6.18.30, 7.0.7 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 4.8 ≤ v < 5.10.258, 5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.140, 6.7 ≤ v < 6.12.88, 6.13 ≤ v < 6.18.30, 6.19 ≤ v < 7.0.7, 7.1 | 5.10.258, 5.15.209, 6.1.175, 6.6.140, 6.12.88, 6.18.30, 7.0.7 |
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.