CVE-2026-23198

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: KVM: irqfd ataması kaldırılırken irqfd yönlendirme türünün üzerine yazılmaması Bir KVM_IRQFD ataması kaldırılırken, irqfd'nin IRQ yönlendirme girişi kopyasının üzerine yazılmamalıdır; çünkü bu işlem, açıkça KVM_IRQ_ROUTING_MSI arayan x86 ve arm64 üzerindeki kvm_arch_irq_bypass_del_producer() fonksiyonunu bozar. Bunun yerine, eşzamanlı bir yönlendirme güncellemesini yönetmek için, yönlendirme bilgileri tüketilmeden önce irqfd'nin hala aktif olduğu doğrulanmalıdır. x86 ve arm64 hataları ile kvm_arch_update_irqfd_routing() içindeki başka bir hatanın kanıtladığı üzere, mimari koda bildirimde bulunmadan giriş türünün üzerine yazılması şaşırtıcıdır ve hataya meyillidir. Ek olarak, irqfd'nin aktif olduğunun kontrol edilmesi, KVM'nin neden ataması kaldırılmakta olan bir irqfd için yönlendirme girişini tüketmemesi gerektiğini belgelemek için uygun bir konum sağlar: irqfd listeden silindiğinde (bu işlem eventfd ayrılmadan *önce* gerçekleşir), artık kvm_irq_routing_update() aracılığıyla güncellemeler almayacaktır ve böylece KVM, bayat yönlendirme bilgilerini kullanarak (KVM_SET_GSI_ROUTING kullanıcı alanına döndüğünde) bir olay iletebilir. Hatta daha da önemlisi, irqfd'nin aktif olduğunun açıkça kontrol edilmesi, üzerine yazma işleminin önlemeye çalıştığı hataya benzer bir hatayı düzeltir: eğer bir irqfd devre dışı bırakılırsa ve ardından yönlendirmesi değiştirilirse, kvm_irq_routing_update() fonksiyonu kvm_arch_update_irqfd_routing()'i çağırmayacaktır (çünkü irqfd listede değildir). Bu durumda, eğer irqfd bypass modundaysa, IRQ'lar eski yönlendirme bilgileri kullanılarak gönderilmeye devam edecektir. kvm_arch_irq_bypass_del_producer() açısından bakıldığında, yönlendirme türünün üzerine yazılması, KVM'nin IRQ'yu yanlışlıkla bypass modunda tutmasına neden olur; bu durum özellikle AMD üzerinde sorunludur çünkü KVM, bir vCPU'ya gönderilen IRQ'ları ömrü irqfd'ye bağlı olan bir listede takip eder. Serbest bırakıldıktan sonra kullanım (use-after-free) durumlarını tespit eden KASAN yardımı olmadan, AMD üzerindeki en yaygın belirti, irqfd yapısı için ayrılan belleğin yeniden tahsis edilip sıfırlanması nedeniyle amd_iommu_update_ga() fonksiyonundaki bir NULL işaretçi referansıdır; bu durum avic_update_iommu_vcpu_affinity() tarafından okunduğunda irqfd->irq_bypass_data değerinin NULL olmasına yol açar: BUG: kernel NULL pointer dereference, address: 0000000000000018 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0 Oops: Oops: 0000 [#1] SMP CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test Tainted: G U W O 6.19.0-smp--5dddc257e6b2-irqfd #31 NONE Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025 RIP: 0010:amd_iommu_update_ga+0x19/0xe0 Call Trace: <TASK> avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd] __avic_vcpu_load+0xf4/0x130 [kvm_amd] kvm_arch_vcpu_load+0x89/0x210 [kvm] vcpu_load+0x30/0x40 [kvm] kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm] kvm_vcpu_ioctl+0x571/0x6a0 [kvm] __se_sys_ioctl+0x6d/0xb0 do_syscall_64+0x6f/0x9d0 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x46893b </TASK> ---[ end trace 0000000000000000 ]--- Eğer irfd ataması kaldırıldığında AVIC engellenmişse, hata liste bozulması şeklinde ortaya çıkacaktır (örneğin bir sonraki irqfd atamasında): list_add corruption. next->prev should be prev (ffff8d474d5cd588), but was 0000000000000000. (next=ffff8d8658f86530). ------------[ cut here ]------------ kernel BUG at lib/list_debug.c:31! Oops: invalid opcode: 0000 [#1] SMP CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test Tainted: G U W O 6.19.0-smp--f19dc4d680ba-irqfd #28 NONE Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025 RIP: 0010:__list_add_valid_or_report+0x97/0xc0 Call Trace: <TASK> avic_pi_update_irte+0x28e/0x2b0 [kvm_amd] kvm_pi_update_irte+0xbf/0x190 [kvm] kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm] irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---kesildi---

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın14 Şub 2026
İlk görülme14 Şub 2026

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.250, 5.15.200, 6.1.163, 6.6.124, 6.12.70, 6.18.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel4.4 ≤ v < 5.10.250, 5.11 ≤ v < 5.15.200, 5.16 ≤ v < 6.1.163, 6.2 ≤ v < 6.6.124, 6.7 ≤ v < 6.12.70, 6.13 ≤ v < 6.18.10, 6.195.10.250, 5.15.200, 6.1.163, 6.6.124, 6.12.70, 6.18.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.