CVE-2026-43121
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: io_uring/zcrx: scrub ve refill yolları arasındaki user_ref yarış durumu düzeltildi io_zcrx_put_niov_uref() fonksiyonu, user_refs değerini manipüle etmek için atomik olmayan bir kontrol-et-sonra-azalt deseni (ayrı bir atomic_dec ile takip edilen atomic_read) kullanır. Bu işlem, diğer çağrıcılara karşı rq_lock ile serileştirilir ancak io_zcrx_scrub(), aynı sayacı rq_lock tutmadan atomic_xchg() ile değiştirir. SMP sistemlerde şu yarış durumu mevcuttur: CPU0 (refill, rq_lock tutuyor) CPU1 (scrub, rq_lock yok) put_niov_uref: atomic_read(uref) - 1 // pencere açılır atomic_xchg(uref, 0) - 1 return_niov_freelist(niov) [PUSH #1] // pencere kapanır atomic_dec(uref) - -1'e döner true döndürür return_niov(niov) return_niov_freelist(niov) [PUSH #2: DOUBLE-FREE] Aynı niov, boş liste (freelist) üzerine iki kez eklenerek free_count değerinin nr_iovs değerini aşmasına neden olur. Sonraki boş liste eklemeleri, kvmalloc ile ayrılmış boş liste dizisinin ötesine, bitişikteki slab nesnesine doğru sınır dışı bir yazma işlemi (bir u32 değeri) gerçekleştirir. Bu durum, io_zcrx_put_niov_uref() içindeki atomik olmayan oku-sonra-azalt işleminin, user_refs değerini atomik olarak test eden ve azaltan bir atomic_try_cmpxchg döngüsüyle değiştirilmesiyle düzeltilmiştir. Bu, operasyonu, scrub'ın rq_lock almasını gerektirmeden eş zamanlı atomic_xchg işlemlerine karşı güvenli hale getirir. [pavel: bir uyarı ve bir yorum kaldırıldı]
Nasıl düzeltilir
- linux linux_kernel6.18.16, 6.19.6 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.15 ≤ v < 6.18.16, 6.19 ≤ v < 6.19.6 | 6.18.16, 6.19.6 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.