CVE-2026-64112
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: rbd: unmap sırasında lock_dwork boşaltımındaki bir yarış durumu ortadan kaldırıldı rbd_lock_add_request() ve rbd_img_exclusive_lock() fonksiyonlarının yazılış biçimi nedeniyle, lock_dwork aslında gerekenden daha fazla (yeniden) kuyruğa alınabilir: örneğin, başka bir I/O isteği adına rbd_acquire_lock() işleminin ortasındayken yeni bir I/O isteğinin gelmesi durumunda. Bu beklenen bir durumdur ve rbd_release_lock() ile lock_dwork'ün önleyici olarak iptal edilmesi normal çalışma altında zararsızdır. Daha sorunlu bir örnek ise maybe_kick_acquire() fonksiyonudur: if (have_requests || delayed_work_pending(&rbd_dev->lock_dwork)) { dout("%s rbd_dev %p kicking lock_dwork\n", __func__, rbd_dev); mod_delayed_work(rbd_dev->task_wq, &rbd_dev->lock_dwork, 0); } delayed_work_pending() true döndürdükten hemen sonra lock_dwork'ün iptal edilmesi ve ardından mod_delayed_work()'ün onu hemen orada yeniden kuyruğa alması gerçekçi olmayan bir durum değildir. Bu klasik bir TOCTOU yarış durumudur. İmajın unmap işlemi söz konusu olduğunda, eğer tutuluyorsa kilidi açan rbd_dev_image_unlock() dönüş noktasından sonra kendi tarafından başlatılan özel kilit aktivitesinin olmayacağına dair örtülü bir varsayım vardır. Bu kilit açma işleminin nihai olduğu varsayılır ve lock_dwork'ün (ve aslında diğer tüm özel kilit görevlerinin) tekrar kuyruğa alınması beklenmez. Ancak, lock_dwork yalnızca cancel_tasks_sync() içinde (yani unmap dizisinin ilerleyen aşamalarında) iptal edilir ve bunun üzerine iptal işlemi maybe_kick_acquire() tarafından etkisiz hale getirilebilir. Bu durum, rbd_dev_device_release() ve rbd_dev_image_release() çalışıp birçok şeyi serbest bıraktıktan ve/veya sıfırladıktan sonra rbd_acquire_lock()'un yürütülmesiyle sonuçlanabilir. Olası hata modlarından biri, rbd_post_acquire_action() üzerinden rbd_dev_refresh() aracılığıyla çağrılan rbd_dev_header_info() içerisindeki şu ifadenin ihlal edilmesidir: rbd_assert(rbd_image_format_valid(rbd_dev->image_format)); Daha mantıklı semantikler sağlamak ve rbd_dev_image_unlock() etrafındaki varsayımları karşılamak için özel kilit görevi boşaltımı yeniden düzenlendi.
Nasıl düzeltilir
- linux linux_kernel6.12.92, 6.18.34, 7.0.11 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 | 4.12 ≤ v < 6.12.92, 6.13 ≤ v < 6.18.34, 6.19 ≤ v < 7.0.11, 7.1 | 6.12.92, 6.18.34, 7.0.11 |
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.