CVE-2026-89928

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: KVM: x86/mmu: Kilitsiz rmap gezintisinde kilitli rmap değerini kullanın __kvm_rmap_lock(), boş bir rmap gözlemlediğinde rmap kilidini kasıtlı olarak atlar. Bu durumda kvm_rmap_lock_readonly() ayrıca ön kesmeyi (preemption) yeniden etkinleştirir ve sıfır döndürür; böylece çağıran taraf ne rmap kilidine ne de bir ön kesme referansına sahip olur. Atlama işlemi, dayandığı değişmezliği şu şekilde belgeler: * Eğer rmap boşsa kilidi atlayın, çünkü kilitsiz gezginler (salt okunur mod) boş bir rmap üzerinde gezmeye ihtiyaç duymazlar (ve bunu yapamazlar), ayrıca rmap'e giriş ekleyemezler. Yani, boş rmap'leri işleyen tek yollar bunu mmu_lock yazma kilidini tutarken yapar ve birbirini dışlar. kvm_rmap_age_gfn_range() döndürülen değeri görmezden gelir ve koşulsuz olarak for_each_rmap_spte_lockless() fonksiyonuna girer. Yineleyici, kilidin döndürdüğü değeri kullanmak yerine rmap_head->val değerini yeniden okuyan rmap_get_first() ile başlar. Eğer bir yazıcı, kilidin okuma işlemi ile yineleyicinin yeniden okuma işlemi arasında rmap'i doldurursa, yaşlandırma yolu yeni kurulan rmap üzerinde kilidini tutmadan gezinir. Bir KVM_RMAP_MANY rmap için bu durum, gezginin hiçbir zaman kilitlemediği bir pte_list_desc zincirini takip etmesine neden olur. Yazma için mmu_lock tutan bir yazıcı, gezinti devam ederken bu zinciri kmem_cache_free() aracılığıyla serbest bırakabilir (örneğin geri dönüşüm yolundaki kvm_zap_all_rmap_sptes() veya herhangi bir rmap zap işlemi), bu da bir slab use-after-free hatasına yol açar. İkisini senkronize eden hiçbir şey yoktur: CONFIG_KVM_MMU_LOCKLESS_AGING=y olduğunda yaşlandırma yolu mmu_lock olmadan çalışır ve aksi takdirde yazıcıyı engelleyecek olan rmap kilidi atlanmıştır. Boş yol ön kesmeyi yeniden etkinleştirdiği için iki okuma arasındaki süre rastgele bir çizelgeleme gecikmesini kapsayabilir. Kilitsiz gezintinin rmap'i yeniden okumak yerine kilitten dönen değeri tüketmesi sağlanarak bu hata sınıfı düzeltilmiştir. rmap_get_first(), halihazırda okunmuş bir rmap değerinden yineleyiciyi başlatan __rmap_get_first() şeklinde bölünmüş ve for_each_rmap_spte_lockless() fonksiyonunun bu değeri alıp doğrudan __rmap_get_first()'i çağırması sağlanmıştır. kvm_rmap_age_gfn_range(), kvm_rmap_lock_readonly() tarafından döndürülen değeri iletir: kilit atlandığında değer sıfırdır, __rmap_get_first() NULL döndürür ve gezinti atlanır. Hiçbir kilitsiz gezgin rmap'i yeniden okumaz, dolayısıyla kilit-atlama değişmezliği ihlal edilemez ve yaşlandırma koduna eşleşmiş bir unlock() işlemi olmayan herhangi bir lock() yolu eklenmemiş olur.

ÖnemYüksek
CVSS8.8
İstismar olasılığı—
ÜrünLinux
Yayın16 Eyl 2026
İlk görülme16 Eyl 2026

Nasıl düzeltilir

Güncelleyin
  • Linux Linux41debfc98526c0a95c41a62435aca0a70340a26d, 8edb3c09e43f7cd8a5dfd291c6e0fc9c74d4621d, e428f9779a43737d830111238816f1928b07aefb ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linuxaf3b6a9eba48419732b07a0472db7160282f0f39 ≤ v < 41debfc98526c0a95c41a62435aca0a70340a26d, af3b6a9eba48419732b07a0472db7160282f0f39 ≤ v < 8edb3c09e43f7cd8a5dfd291c6e0fc9c74d4621d, af3b6a9eba48419732b07a0472db7160282f0f39 ≤ v < e428f9779a43737d830111238816f1928b07aefb, 6.1541debfc98526c0a95c41a62435aca0a70340a26d, 8edb3c09e43f7cd8a5dfd291c6e0fc9c74d4621d, e428f9779a43737d830111238816f1928b07aefb

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-2026-89928 · Linux · Dark Radar