CVE-2026-89533
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: svcrdma: read_chunk_range funksiyasında ofset aritmetikasının düzəldilməsi svc_rdma_read_chunk_range() funksiyası, Position-Zero və ya Call chunk üçün bayt ofsetindən başlayan və müəyyən uzunluğa malik alt diapazon yaratmaq məqsədilə Read chunk-ın seqment siyahısını nəzərdən keçirir. Hər seqment üzrə dövr zamanı iki aritmetik qüsur yanlış DMA uzunluqlarına və u32 underflow-ya səbəb olur: pcl_for_each_segment(segment, chunk) { if (offset > segment->rs_length) { offset -= segment->rs_length; continue; } dummy.rs_handle = segment->rs_handle; dummy.rs_length = min_t(u32, length, segment->rs_length) - offset; dummy.rs_offset = segment->rs_offset + offset; Birincisi, ötürmə predikatında '>=' əvəzinə '>' istifadə olunub. Ofset seqmentin tam rs_length dəyərinə bərabər olduqda, seqment tamamilə istifadə edilmiş sayılır və ötürülməlidir, lakin dövr gövdəsinə keçid edir. Nəticədə yaranan dummy.rs_length dəyəri min_t(u32, length, rs_length) - rs_length olur ki, bu da length dəyəri rs_length-dən kiçik olduqda UINT_MAX-a yaxın bir u32 underflow-ya, əks halda isə sıfıra səbəb olur. İkincisi, uzunluq düsturu ofseti limitasiyadan əvvəl segment->rs_length-dən çıxarmaq əvəzinə, min_t() nəticəsindən çıxarır. offset > 0 olduqda, seqmentin qalığı rs_length deyil, rs_length - offset olur, buna görə də limitasiya qalıq uzunluğa tətbiq edilməlidir. Mövcud mötərizələmə ilə, length dəyəri rs_length - offset-dən kiçik olduqda, hər seqmentin uzunluğu length əvəzinə length - offset olur və yenidən qurulan chunk-dan ofset baytları səssizcə silinir. Yuxarıdakı sərhəd halı ilə birlikdə bu, həmçinin u32 underflow yolunu aktivləşdirir ki, bu da svc_rdma_build_read_segment() funksiyasına böyük nr_bvec və svc_rdma_get_rw_ctxt() funksiyasına çoxmiyalibaytlı kmalloc_array_node() ötürülməsinə səbəb olur. Əlavə olaraq, sonuncu Read chunk tam olaraq Call chunk-ın sonunda bitdikdə, svc_rdma_read_call_chunk() bu funksiyanı length == 0 parametri ilə çağıra bilər. Düzəldilmiş >= predikatı ilə hər bir seqment ötürülür və funksiya ilkin -EINVAL qaytararaq etibarlı sorğunu rədd edir. Uzunluq sıfır olduqda dərhal uğurlu nəticə qaytarılmalıdır. Həmçinin, sıfır uzunluqlu seqmentlərin svc_rdma_build_read_segment() funksiyasına ötürülməsinin qarşısını almaq üçün uzunluq tamamilə istifadə edildikdən sonra dövrdən çıxılmalıdır. Tam istifadə edilmiş seqmentin ötürülməsi üçün '>=' istifadə edilərək, limitasiyanın seqmentin qalıq uzunluğuna tətbiq olunması üçün '- offset' ifadəsi min_t() daxilinə köçürülərək, sıfır uzunluqlu sorğular üçün uğurlu nəticə qaytarılaraq və tələb olunan diapazon tamamlandıqda iterasiya dayandırılarak problem həll edilmişdir.
Necə düzəltmək olar
- Linux Linux10873311f91db9454e2fadbf9866bc819e0646d9, addbf02dfe3b25e7e38e03bbd4e2a6ed86a14be7, cba8543c18cf42fd80fd63effb6df6ff4f7e73ce, 6ee4dc7476b3abc92ec1d444533a559f33f59561, a46b35f213c2426f5d6a0458a8f7e873fc59cdfd, 4493c96bbd0068fadf69cbae8d13426202e34cdc, 4a44c140cc2f3643a39e258bb0c0ab9d0f494f5e və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < 10873311f91db9454e2fadbf9866bc819e0646d9, d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < addbf02dfe3b25e7e38e03bbd4e2a6ed86a14be7, d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < cba8543c18cf42fd80fd63effb6df6ff4f7e73ce, d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < 6ee4dc7476b3abc92ec1d444533a559f33f59561, d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < a46b35f213c2426f5d6a0458a8f7e873fc59cdfd, d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < 4493c96bbd0068fadf69cbae8d13426202e34cdc, d7cc73972661be4a02a1b09f1d9b3283c6c05154 ≤ v < 4a44c140cc2f3643a39e258bb0c0ab9d0f494f5e, 5.11 | 10873311f91db9454e2fadbf9866bc819e0646d9, addbf02dfe3b25e7e38e03bbd4e2a6ed86a14be7, cba8543c18cf42fd80fd63effb6df6ff4f7e73ce, 6ee4dc7476b3abc92ec1d444533a559f33f59561, a46b35f213c2426f5d6a0458a8f7e873fc59cdfd, 4493c96bbd0068fadf69cbae8d13426202e34cdc, 4a44c140cc2f3643a39e258bb0c0ab9d0f494f5e |
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.