CVE-2025-68169
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: netpoll: spinlock altında bellek tahsisindeki deadlock hatası düzeltildi skb_pool->lock tutulurken yapılan bellek tahsisinin özyinelemeli bir kilit edinme girişimini tetikleyebildiği refill_skbs() fonksiyonundaki bir AA deadlock durumu düzeltildi. Deadlock senaryosu, sistem ciddi bellek baskısı altındayken meydana gelir: 1. refill_skbs(), skb_pool->lock (spinlock) kilidini edinir 2. Kilit tutulurken alloc_skb() çağrılır 3. Bellek tahsis edici başarısız olur ve slab_out_of_memory() fonksiyonunu çağırır 4. Bu durum, OOM uyarısı için printk() fonksiyonunu tetikler 5. Konsol çıktı yolu netpoll_send_udp() fonksiyonunu çağırır 6. netpoll_send_udp(), aynı skb_pool->lock kilidini edinmeye çalışır 7. Deadlock: kilit zaten aynı CPU tarafından tutulmaktadır Çağrı yığını (Call stack): refill_skbs() spin_lock_irqsave(&skb_pool->lock) <- kilit edinildi __alloc_skb() kmem_cache_alloc_node_noprof() slab_out_of_memory() printk() console_flush_all() netpoll_send_udp() skb_dequeue() spin_lock_irqsave(&skb_pool->lock) <- deadlock girişimi Bu hata, refill_skbs() fonksiyonunu kritik yoldan (iç içe printk çağrılarının ertelendiği yer) çıkaran ve böylece refill_skbs() içerisinden iç içe printk çağrılmasına izin veren 248f6571fd4c51 ("netpoll: Optimize skb refilling on critical path") commit'i ile ortaya çıkmıştır. refill_skbs(), spinlock tutulurken asla bellek tahsis etmeyecek şekilde yeniden yapılandırılmıştır. Bu sorunu çözmek için başka bir olası çözüm, refill_skbs() fonksiyonunu iç içe printk çağrılarına karşı korumaktı; temel olarak refill_skbs() içerisinde printk_deferred_{enter,exit}() çağırılarak herhangi bir iç içe pr_warn() çağrısının ertelenmesi sağlanabilirdi. Gelecekte alloc_skb() fonksiyonunun GFP_ATOMIC yerine GFP_KERNEL'a taşınmasının iyi bir fikir olduğunu düşündüğüm için bu yaklaşımı tercih ettim; dolayısıyla alloc_skb() işleminin kilidin dışında olması gerekli bir adımdır. Havuz uzunluğu kontrol edilirken ve yeni tahsis edilen skb kuyruğa eklenirken olası bir TOCTOU sorunu vardır ancak havuzda fazladan bir SKB bulunması zararsız olduğundan ve sonunda kullanılacağından bu bir sorun teşkil etmez.
Nasıl düzeltilir
- Linux Linux06742a3ab884d7428c9050b205ffcf6a8a548397, 327c20c21d80e0d87834b392d83ae73c955ad8ff ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 248f6571fd4c51531f7f8f07f186f7ae98a50afc ≤ v < 06742a3ab884d7428c9050b205ffcf6a8a548397, 248f6571fd4c51531f7f8f07f186f7ae98a50afc ≤ v < 327c20c21d80e0d87834b392d83ae73c955ad8ff, 6.15 | 06742a3ab884d7428c9050b205ffcf6a8a548397, 327c20c21d80e0d87834b392d83ae73c955ad8ff |
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.