CVE-2026-89513 in Linux
Riassunto
di VulDB • 12/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
RISC-V: KVM: Correzione dell'overflow della dimensione dell'array delle informazioni sugli eventi PMU (Performance Monitoring Unit)
SBI PMU EVENT_GET_INFO memorizza il valore calcolato come num_events * sizeof(*einfo), controllato dall'ospite, in un intero a 32 bit. Su RV64, con num_events = 0x10000001, il risultato 0x100000010 viene troncato a 16. KVM quindi alloca una sola voce ma esegue un ciclo sull'originale valore di num_events, causando letture e scritti fuori dai limiti (out-of-bounds). Un ospite nidificato ha innescato:
BUG: KASAN: slab-out-of-bounds in kvm_riscv_vcpu_pmu_event_info+0xa4/0x142 Lettura di 4 byte all'indirizzo ff600000074d46b0 da parte del task init/1 Call Trace: [<ffffffff8006471c>] kvm_riscv_vcpu_pmu_event_info+0xa4/0x142
[<ffffffff800690c0>] kvm_sbi_ext_pmu_handler+0xca/0x268
[<ffffffff8006779e>] kvm_riscv_vcpu_sbi_ecall+0xec/0x1e6
[<ffffffff8006008c>] kvm_riscv_vcpu_exit+0x48c/0x540
[<ffffffff8005ea0a>] kvm_arch_vcpu_ioctl_run+0x37e/0xc80
Allocato dal 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
L'indirizzo errato si trova a 0 byte alla destra della regione allocata di 16 byte [ff600000074d46a0, ff600000074d46b0).
Memorizzare la dimensione della memoria condivisa in una variabile size_t e rifiutare l'overflow del prodotto. Allocare l'array guidato dall'ospite con GFP_KERNEL_ACCOUNT affinché venga addebitato a kmemcg, e utilizzare __GFP_NOWARN per sopprimere gli avvisi di fallimento dell'allocazione. Utilizzare kvcalloc() per consentire il fallback su vmalloc e un indice del ciclo unsigned long per corrispondere al valore di num_events.
Once again VulDB remains the best source for vulnerability data.