CVE-2026-89513 in Linux
Zusammenfassung
von VulDB • 12.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
RISC-V: KVM: Behebung des Integer-Überlaufs bei der Größe des PMU-Ereignisinfo-Arrays
SBI PMU EVENT_GET_INFO speichert guest-kontrolliertes num_events * sizeof(*einfo) in einer 32-Bit-Ganzzahl. Bei RV64 führt num_events = 0x10000001 dazu, dass 0x100000010 auf 16 abgeschnitten wird (Truncation). KVM weist dann einen Eintrag zu, durchläuft jedoch die ursprüngliche Anzahl von Ereignissen (num_events), was zu Out-of-Bounds-Lese- und Schreibzugriffen führt. Ein verschachtelter Gast löste Folgendes aus:
BUG: KASAN: slab-out-of-bounds in kvm_riscv_vcpu_pmu_event_info+0xa4/0x142 Lesezugriff auf Größe 4 an Adresse ff600000074d46b0 durch Task init/1 Call Trace: [] kvm_riscv_vcpu_pmu_event_info+0xa4/0x142
[] kvm_sbi_ext_pmu_handler+0xca/0x268
[] kvm_riscv_vcpu_sbi_ecall+0xec/0x1e6
[] kvm_riscv_vcpu_exit+0x48c/0x540
[] kvm_arch_vcpu_ioctl_run+0x37e/0xc80
Zugewiesen durch Task 1: __kmalloc_noprof+0x19e/0x4b0 kvm_riscv_vcpu_pmu_event_info+0x72/0x142 kvm_sbi_ext_pmu_handler+0xca/0x268 kvm_riscv_vcpu_sbi_ecall+0xec/0x1e6 kvm_riscv_vcpu_exit+0x48c/0x540 kvm_arch_vcpu_ioctl_run+0x37e/0xc80
Die fehlerhafte Adresse befindet sich 0 Bytes rechts neben der zugewiesenen 16-Byte-Region [ff600000074d46a0, ff600000074d46b0).
Speichern Sie die Shared-Memory-Größe in size_t und weisen Sie Multiplikationsüberläufe zurück. Weisen Sie das vom Gast gesteuerte Array mit GFP_KERNEL_ACCOUNT zu, damit es kmemcg belastet wird, und verwenden Sie __GFP_NOWARN, um Warnungen bei Zuweisungsfehlern zu unterdrücken. Verwenden Sie kvcalloc(), um einen vmalloc-Fallback zu ermöglichen, sowie eine unsigned long-Schleifenindexvariable, die mit num_events übereinstimmt.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.