CVE-2026-52969

Yüksek

Açıklama

Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: KVM: kvm_reset_dirty_gfn() fonksiyonundaki sarmalanmış (wrapped) offset değerini reddet kvm_reset_dirty_gfn(), gfn aralığını şu şekilde korur: if (!memslot || (offset + __fls(mask)) >= memslot->npages) return; ancak offset u64 tipindedir ve toplama işlemi kontrol edilmemektedir. Bu kontrol, bir u64 sarmalamasıyla sessizce atlatılabilir. Bu girişleri destekleyen dirty ring, vcpu fd'sinin KVM_DIRTY_LOG_PAGE_OFFSET adresinde MAP_SHARED olarak tanımlanmıştır; bu nedenle VMM, çekirdek bunları ilettiği an ile KVM_RESET_DIRTY_RINGS tarafından tüketildikleri an arasında herhangi bir girişin slot ve offset alanlarını yeniden yazabilir. Sıfırlama sırasında, kvm_dirty_ring_reset() değerleri READ_ONCE() aracılığıyla yeniden okur ve doğrudan bu kontrole gönderir; yalnızca flag el sıkışması devir teslim olarak kabul edilir, slot/offset yükü ise güvenilir kabul edilir. Şu iki giriş oluşturulduğunda: entry[i].offset = 0xffffffffffffffc1 entry[i+1].offset = 0 kvm_dirty_ring_reset() içindeki birleştirme döngüsü şunu hesaplar: delta = (s64)(0 - 0xffffffffffffffc1) = 63 bu değer [0, BITS_PER_LONG) aralığında olduğundan, 63. biti ayarlayarak entry[i+1]'i mevcut maskeye dahil eder. Ardından gelen kvm_reset_dirty_gfn() çağrısı offset = 0xffffffffffffffc1 ve __fls(mask) = 63 değerlerini görür; toplam u64 formatında 0 olur ve sınır kontrolü başarıyla geçilir. Bu offset, kvm_arch_mmu_enable_log_dirty_pt_masked() fonksiyonuna değişmeden aktarılır. Eski MMU yolunda -- kvm_memslots_have_rmaps() == true, yani gölge sayfalama (shadow paging), gölge kökler tahsis etmiş herhangi bir VM veya yazma takipli bir slot durumunda -- bu değer gfn_to_rmap() fonksiyonuna ulaşır ve slot->arch.rmap[0][] dizisini U64_MAX'a yakın bir gfn ile indeksler. Bu, bir kvm_rmap_head'in sınır dışı (out-of-bounds) okunmasıdır ve ardından yüklenen işaretçinin gösterdiği yerdeki PT_WRITABLE_MASK'ın koşullu olarak temizlenmesiyle devam eder. Bu yola /dev/kvm erişimine sahip herhangi bir işlemden ulaşılabilir. Toplama işleminin sarmalanmaması için önce offset değeri tek başına aralık kontrolünden geçirilir. memslot->npages değeri U64_MAX'ın oldukça altında sınırlandırılmıştır, dolayısıyla offset < npages koşulu sağlandığında, offset + __fls(mask) (__fls(mask) < BITS_PER_LONG iken) aralıkta kalır.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın24 Haz 2026
İlk görülme24 Haz 2026
Zayıflık türüCWE-190Tamsayı taşması

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.141, 6.7 ≤ v < 6.12.91, 6.13 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10, 7.15.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10

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