CVE-2026-72466
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: xprtrdma: bcall rep sızmasının və məhdudiyyətsiz peek-in düzəldilməsi rpcrdma_is_bcall() funksiyası freymin geri kanal çağırışı (backchannel call) olub-olmadığını müəyyən etmək üçün cavabın ilk sözlərini dekodlaşdırır. Həmin dekodlaşdırma yolundakı iki problem qısa və ya yanlış formalaşmış cavabın qəbul buferini sızdırmasına və Qəbul növbəsinin (Receive queue) boşalmasına səbəb olur. Birincisi, spekulyativ peek: p = xdr_inline_decode(xdr, 0); /* ardınca beş p++ oxuması gəlir */ xdr_inline_decode() funksiyasından sıfır bayt tələb edir ki, bu da xdr->end ilə yoxlamadan xdr->p dəyərini qaytarır. Sonrakı beş __be32 oxuması şəbəkə yükündən (wire payload) 20 bayta qədər kənara çıxaraq köhnə regbuf məzmununa daxil ola bilər və cavabı yanlış şəkildə geri kanal çağırışı kimi təsnif edə bilər. İkincisi, post-peek-dən sonra: p = xdr_inline_decode(xdr, 3 * sizeof(*p)); if (unlikely(!p)) return true; qısa başlıqlı budaq rpcrdma_bc_receive_call() funksiyasını çağırmadan true qaytarır. Çağırıcı ilə olan razılaşmaya görə, true qaytarılması rep mülkiyyətinin geri kanal yoluna ötürülməsini ifadə edir: rpcrdma_reply_handler() if (rpcrdma_is_bcall(r_xprt, rep)) return; /* sadə return, out_post hissəsini ötürür */ ... out_post: rpcrdma_post_recvs(r_xprt, credits + ...); rpcrdma_bc_receive_call() heç vaxt işləmədiyi üçün heç kim rep-i götürmür, lakin rpcrdma_reply_handler hələ də rpcrdma_rep_put() və rpcrdma_post_recvs() funksiyalarını ötərək birbaşa return edir. Daimi DMA-map olunmuş qəbul buferi ilə birlikdə rep, rb_all_reps üzərində yetim qalır və yalnız nəqliyyatın ləğvi zamanı azad edilir. Bu tamamlanma heç nəyi yenidən paylaşmır, buna görə də onun slotu yalnız sonrakı ön kanal cavabı out_post-a çatdıqda və rpcrdma_post_recvs() doldurmaq üçün yeni rep ayırdıqda bərpa olunur; həmin trafik olmadıqda Qəbul növbəsi boşalır və qarşı tərəfin Göndərişləri (Sends) RNR NAK-lar alır. Sıfır uzunluqlu peek-dən sonra xdr->end yoxlanılaraq problem düzəldilmişdir, beləliklə, şəbəkə yükündə 20 bayt qalmadıqca beş __be32 oxuması icra edilmir. xdr->end ilə bayt dəqiqliyində müqayisə tələb olunur, çünki 4-ə uyğunlaşmamış qəbul axının söz sayını real yükləmədən daha çox yuvarlaqlaşdırır. Həmçinin, qısa başlıqlı budaqdan false qaytarılır ki, cavab normal out_norqst təmizlik zəncirinə (rpcrdma_rep_put() və rpcrdma_post_recvs()) düşsün.
Necə düzəltmək olar
- Linux Linux0cee8f9c3b14bd6dee9c4310090a7f45b89b834f, 7afc2f8d2fd9394724df9eaf22ce7a71029a5fba, 88b5346284a184a6b7d019912232a571d672d3e3, 07aa506436be7634e381e1e1f6d0efa9efc81ecc, d7a2870dde3bb09d51d6b9c877642996ad6b92dd, 118a16a18c59f7ad8084b2d13988839b669fca10, c7653d5cebc8492c77ec0415b5e9c0fb3e644bc6 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < 0cee8f9c3b14bd6dee9c4310090a7f45b89b834f, 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < 7afc2f8d2fd9394724df9eaf22ce7a71029a5fba, 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < 88b5346284a184a6b7d019912232a571d672d3e3, 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < 07aa506436be7634e381e1e1f6d0efa9efc81ecc, 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < d7a2870dde3bb09d51d6b9c877642996ad6b92dd, 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < 118a16a18c59f7ad8084b2d13988839b669fca10, 41c8f70f5a3db7e06179186b6525fd9ee1d7d314 ≤ v < c7653d5cebc8492c77ec0415b5e9c0fb3e644bc6, 4.14 | 0cee8f9c3b14bd6dee9c4310090a7f45b89b834f, 7afc2f8d2fd9394724df9eaf22ce7a71029a5fba, 88b5346284a184a6b7d019912232a571d672d3e3, 07aa506436be7634e381e1e1f6d0efa9efc81ecc, d7a2870dde3bb09d51d6b9c877642996ad6b92dd, 118a16a18c59f7ad8084b2d13988839b669fca10, c7653d5cebc8492c77ec0415b5e9c0fb3e644bc6 |
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.