CVE-2024-53195

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: KVM: arm64: userspace_irqchip_in_use kaldırıldı userspace_irqchip_in_use değişkeninin hatalı kullanımı, syzbot'un kvm_timer_update_irq() fonksiyonundaki şu WARN_ON() ifadesini tetiklemesine yol açmıştır: WARNING: CPU: 0 PID: 3281 at arch/arm64/kvm/arch_timer.c:459 kvm_timer_update_irq+0x21c/0x394 Call trace: kvm_timer_update_irq+0x21c/0x394 arch/arm64/kvm/arch_timer.c:459 kvm_timer_vcpu_reset+0x158/0x684 arch/arm64/kvm/arch_timer.c:968 kvm_reset_vcpu+0x3b4/0x560 arch/arm64/kvm/reset.c:264 kvm_vcpu_set_target arch/arm64/kvm/arm.c:1553 [inline] kvm_arch_vcpu_ioctl_vcpu_init arch/arm64/kvm/arm.c:1573 [inline] kvm_arch_vcpu_ioctl+0x112c/0x1b3c arch/arm64/kvm/arm.c:1695 kvm_vcpu_ioctl+0x4ec/0xf74 virt/kvm/kvm_main.c:4658 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl fs/ioctl.c:893 [inline] __arm64_sys_ioctl+0x108/0x184 fs/ioctl.c:893 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline] invoke_syscall+0x78/0x1b8 arch/arm64/kernel/syscall.c:49 el0_svc_common+0xe8/0x1b0 arch/arm64/kernel/syscall.c:132 do_el0_svc+0x40/0x50 arch/arm64/kernel/syscall.c:151 el0_svc+0x54/0x14c arch/arm64/kernel/entry-common.c:712 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 Senaryoya şu dizi yol açmıştır: - Kullanıcı alanı bir VM ve bir vCPU oluşturur. - vCPU, KVM_ARM_VCPU_INIT sırasında KVM_ARM_VCPU_PMU_V3 ile başlatılır. - vGIC veya vPMU gibi başka herhangi bir kurulum yapılmadan kullanıcı alanı, vCPU üzerinde KVM_RUN komutunu verir. vPMU talep edilmiş ancak kurulmamış olduğu için kvm_arch_vcpu_run_pid_change() içindeki kvm_arm_pmu_v3_enable() başarısız olur. Sonuç olarak KVM_RUN, zamanlayıcıyı etkinleştirdikten sonra ancak 'userspace_irqchip_in_use' değerini artırmadan önce döner: kvm_arch_vcpu_run_pid_change() ret = kvm_arm_pmu_v3_enable() if (!vcpu->arch.pmu.created) return -EINVAL; if (ret) return ret; [...] if (!irqchip_in_kernel(kvm)) static_branch_inc(&userspace_irqchip_in_use); - Kullanıcı alanı hatayı görmezden gelir ve tekrar KVM_ARM_VCPU_INIT komutunu verir. Zamanlayıcı zaten etkin olduğundan kontrol akışı şu yolu izler ve nihayetinde WARN_ON() ifadesine ulaşır: kvm_timer_vcpu_reset() if (timer->enabled) kvm_timer_update_irq() if (!userspace_irqchip()) ret = kvm_vgic_inject_irq() ret = vgic_lazy_init() if (unlikely(!vgic_initialized(kvm))) if (kvm->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V2) return -EBUSY; WARN_ON(ret); Teorik olarak, userspace_irqchip_in_use işlevselliği basitçe '!irqchip_in_kernel()' ile değiştirilebildiğinden, kötü yönetimi önlemek adına statik anahtar kaldırılmıştır; bu işlem aynı zamanda syzbot sorununa da yardımcı olmaktadır.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın27 Ara 2024
İlk görülme27 Ara 2024

Nasıl düzeltilir

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernelv < 6.6.64, 6.7 ≤ v < 6.11.11, 6.12 ≤ v < 6.12.26.6.64, 6.11.11, 6.12.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-2024-53195 · Linux Kernel · Dark Radar