CVE-2025-22083

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: vhost-scsi: vhost_scsi_set_endpoint fonksiyonuna yapılan çoklu çağrıların işlenmesi düzeltildi Eğer vhost_scsi_set_endpoint, aralarında bir vhost_scsi_clear_endpoint çağrısı olmadan birden fazla kez çağrılırsa, Haoran Zhang tarafından bulunan şu hatalarla karşılaşılabilir: 1. Hiçbir tpg bulunamadığında ortaya çıkan serbest bırakıldıktan sonra kullanım (use-after-free): Bu düzeltme, vhost_scsi_set_endpoint fonksiyonunun birden fazla kez çağrıldığı ve ilk çağrıdan sonraki çağrıların vs_tpg'ye eklenecek herhangi bir tpg bulamadığı durumlarda meydana gelen bir serbest bırakıldıktan sonra kullanım hatasını giderir. vhost_scsi_set_endpoint ilk kez vs_tpg dizisine eklenecek tpg'ler bulduğunda match=true olur ve şunlar gerçekleştirilir: vhost_vq_set_backend(vq, vs_tpg); ... kfree(vs->vs_tpg); vs->vs_tpg = vs_tpg; vhost_scsi_set_endpoint tekrar çağrıldığında ve hiçbir tpg bulunamadığında match=false olur; böylece vhost_vq_set_backend çağrısı atlanır ve ardından şu şekilde serbest bırakılan vs_tpg işaretçisi kalır: kfree(vs->vs_tpg); vs->vs_tpg = vs_tpg; Ardından bir scsi isteği gönderilirse şunlar gerçekleşir: vhost_scsi_handle_vq -> vhost_scsi_get_req -> vhost_vq_get_backend bu işlem, az önce üzerinde kfree işlemi yapılmış olan vs_tpg'yi görür. 2. Tpg dizini kaldırma askıda kalma sorunu: Bu yama, referans sayacının (refcount) -1'e düşmesi nedeniyle bir LIO/target katmanı tpg'sinin (ve hedef gibi üzerindeki yapıların) dizininin kaldırılamadığı bir sorunu giderir. Sorun şudur: Eğer vhost_scsi_set_endpoint, bir tpg'nin zaten vs->vs_tpg dizisinde olduğunu tespit ederse veya tpg kaldırıldığı için target_depend_item başarısız olursa, undepend goto yöneticisi vs_tpg dizisindeki tüm tpg'ler üzerinde target_undepend_item işlemini gerçekleştirerek bunların referans sayacını 0'a indirir. Bu sırada vs_tpg, hem mevcut vhost_scsi_set_endpoint çağrısında eklediğimiz tpg'leri hem de önceki çağrılarda eklenen ve aynı zamanda vs->vs_tpg içinde bulunan tpg'leri içerir. Daha sonra vhost_scsi_clear_endpoint çalıştığında, vs->vs_tpg içindeki tüm tpg'ler üzerinde target_undepend_item işlemini gerçekleştirecektir ve bu da onların referans sayısını -1'e düşürecektir. Kullanıcı alanı daha sonra tpg'yi kaldıramayacak ve tpg dizini üzerinde rmdir yapmaya çalıştığında işlem askıda kalacaktır. 3. Tpg sızıntısı: Bu, vhost_scsi_set_endpoint farklı hedef isimleriyle birden fazla kez çağrıldığında hedef isminin üzerine yazılması nedeniyle tpg'lerin sızmasına ve kaldırılamaz hale gelmesine yol açan bir hatayı giderir. Hata, bir kullanıcının VHOST_SCSI_SET_ENDPOINT çağırması ve bir vhost-scsi cihazını target/tpg eşlemesine kurması, ardından daha önce görülmemiş tpg'lere sahip yeni bir hedef ismiyle tekrar VHOST_SCSI_SET_ENDPOINT çağırması durumunda oluşur (target1 tpg1'e sahiptir ancak target2 tpg2'ye sahiptir). Bu olduğunda eski hedef tpg eşlemesini sonlandırmıyoruz, sadece hedef isminin ve vs->vs_tpg dizisinin üzerine yazıyoruz. Daha sonra vhost_scsi_clear_endpoint yaptığımızda bize ya target1 ya da target2'nin ismi iletilir ve vs->vs_tpg üzerinden döngü kurduğumuzda yalnızca o hedefin tpg'lerini eşleştiririz. Ardından, tpg'ler üzerinde target_undepend_item işlemini yapmadan fonksiyondan döneriz. Tüm bu hatalar nedeniyle, vhost_scsi_set_endpoint fonksiyonunun birden fazla kez çağrılabilmesinin hiçbir zaman desteklenmediği görülmektedir. Başlıca kullanıcı olan QEMU, bu kullanım durumunu önlemek için halihazırda kontrollere sahiptir. Dolayısıyla sorunları gidermek için bu yama, eğer zaten başarıyla tpg'ler eklenmişse vhost_scsi_set_endpoint fonksiyonunun çağrılmasını engeller. Tpg konfigürasyonunu veya hedef ismini eklemek, kaldırmak veya değiştirmek için önce vhost_scsi_clear_endpoint yapmanız gerekir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın16 Nis 2025
İlk görülme16 Nis 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.6.87, 6.12.23, 6.13.11, 6.14.2 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.9.1 ≤ v < 6.6.87, 6.7 ≤ v < 6.12.23, 6.13 ≤ v < 6.13.11, 6.14 ≤ v < 6.14.2, 3.96.6.87, 6.12.23, 6.13.11, 6.14.2

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.

Intelligence 360 paketinde

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.

CVE-2025-22083 · Linux Kernel · Dark Radar