CVE-2025-38554

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: mm: vma->vm_refcnt düşürüldükten sonra vma->mm serbest bırakıldığında meydana gelen bir UAF hatası düzeltildi Jann Horn, doğru noktalarda gecikmeler oluşturarak, VMA'ların önbelleklerine SLAB_TYPESAFE_BY_RCU eklenerek geri dönüştürülmesine izin verilmesinden sonra ortaya çıkan ve tetiklenmesi zor olan bir UAF sorunu için yeniden üretici (reproducer) oluşturmuştur. Yarış durumu (race condition) açıklaması Jann'in keşif raporundan alınmıştır: lock_vma_under_rcu(), rcu_read_lock() altında mas_walk() ile kilit kullanmadan bir VMA araması yapar. Bu noktada VMA eşzamanlı olarak serbest bırakılabilir ve başka bir işlem tarafından geri dönüştürülebilir. Ardından vma_start_read(), (kabul edilebilir bir aralıkta ise) vma->vm_refcnt değerini artırır ve bu işlem başarılı olursa vma_start_read() geri dönüştürülmüş bir VMA döndürebilir. VMA'nın geri dönüştürüldüğü bu senaryoda, lock_vma_under_rcu() ardından uyuşmayan ->vm_mm işaretçisini tespit edecek ve vma_refcount_put() fonksiyonunu çağıran vma_end_read() aracılığıyla VMA'yı bırakacaktır. vma_refcount_put() referans sayısını düşürür ve ardından vma->vm_mm'nin bir kopyasını kullanarak rcuwait_wake_up() fonksiyonunu çağırır. Bu hatalıdır: Çağırıcının VMA'nın mm yapısını hayatta tuttuğunu varsayar ancak bu senaryoda çağırıcının VMA'nın mm yapısıyla hiçbir ilişkisi yoktur, bu nedenle rcuwait_wake_up() bir UAF'ye neden olabilir. Yarış durumunu gösteren diyagram: T1 T2 T3 == == == lock_vma_under_rcu mas_walk <VMA mm'den kaldırılır> mmap <aynı VMA yeniden tahsis edilir> vma_start_read __refcount_inc_not_zero_limited_acquire munmap __vma_enter_locked refcount_add_not_zero vma_end_read vma_refcount_put __refcount_dec_and_test rcuwait_wait_event <işlem tamamlanır> rcuwait_wake_up [UAF] T3'teki rcuwait_wait_event()'ın engellenmediğine dikkat edin çünkü referans sayısı zaten T1 tarafından düşürülmüştür. Bu noktada T3 çıkabilir ve mm'yi serbest bırakarak T1'de UAF'ye neden olabilir. Bunu önlemek için vma->vm_mm doğrulamasını vma_start_read() içerisine taşıyoruz ve vma_refcount_put() işleminden önce sabitlemek için vma->vm_mm'yi alıyoruz. [[email protected]: v3]

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın19 Ağu 2025
İlk görülme19 Ağu 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.15.10, 6.16.1 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.15 ≤ v < 6.15.10, 6.16 ≤ v < 6.16.16.15.10, 6.16.1

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-38554 · Linux Kernel · Dark Radar