CVE-2025-38209
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: nvme-tcp: ikinci admin kuyruğu yapılandırması başarısız olduğunda etiket kümesini kaldırın 104d0e2f6222 numaralı commit ("nvme-fabrics: reset admin connection for secure concatenation"), nvme_tcp_setup_ctrl() fonksiyonunun nvme_tcp_configure_admin_queue() fonksiyonunu iki kez çağırmasını sağlayacak şekilde değiştirmiştir. İlk çağrı DH-CHAP müzakeresi için hazırlık yapar ve ikinci çağrı güvenli birleştirme (secure concatenation) için gereklidir. Ancak bu değişiklik, blk_mq_queue_tag_busy_iter() içerisinde BUG KASAN slab-use-after-free hatasını tetiklemiştir. Bu hata, blktests nvme/063 test durumu birkaç kez tekrarlanarak yeniden oluşturulabilir [1]. Hata meydana geldiğinde, nvme_tcp_create_ctrl() aşağıdaki çağrı zincirinde başarısız olur: nvme_tcp_create_ctrl() nvme_tcp_alloc_ctrl() new=true ... nvme_tcp_ctrl ve admin_tag_set tahsis edilir nvme_tcp_setup_ctrl() new=true nvme_tcp_configure_admin_queue() new=true ... Başarılı nvme_alloc_admin_tag_set() ... admin_tag_set için etiket kümesi tahsis edilir nvme_stop_keep_alive() nvme_tcp_teardown_admin_queue() remove=false nvme_tcp_configure_admin_queue() new=false nvme_tcp_alloc_admin_queue() ... Başarısız, ancak nvme_remove_admin_tag_set() çağrılmaz nvme_uninit_ctrl() nvme_put_ctrl() ... nvme_tcp_ctrl ve admin_tag_set serbest bırakılır nvme_tcp_configure_admin_queue() fonksiyonunun ilk çağrısı new=true argümanı ile başarılı olur. İkinci çağrı ise new=false argümanı ile başarısız olur. Bu ikinci çağrı, new=false argümanı nedeniyle başarısızlık durumunda nvme_remove_admin_tag_set() fonksiyonunu çağırmaz. Böylece yönetici etiket kümesi (admin tag set) kaldırılmaz. Ancak nvme_tcp_create_ctrl(), nvme_tcp_setup_ctrl() fonksiyonunun nvme_remove_admin_tag_set() fonksiyonunu çağıracağını varsayar. Ardından, admin_tag_set alanına sahip olan struct nvme_tcp_ctrl yapısını serbest bırakır. Daha sonra zaman aşımı işleyicisi admin_tag_set alanına erişir ve BUG KASAN slab-use-after-free hatasına neden olur. Yönetici etiket kümesinin kalmaması için, ikinci nvme_tcp_configure_admin_queue() çağrısı başarısız olduğunda nvme_remove_admin_tag_set() fonksiyonunu çağırın. Başarısızlık durumunda nvme_tcp_setup_ctrl() fonksiyonundan geri dönmeyin; bunun yerine, nvme_remove_admin_tag_set() fonksiyonunu çağıran nvme_tcp_teardown_admin_queue() işlemini yürütmek için "destroy_admin" go-to etiketine dallanın.
Nasıl düzeltilir
- linux linux_kernel6.15.4 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.15.4 | 6.15.4 |
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.