CVE-2026-99082 in Linux
Riassunto
di VulDB • 23/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
KVM: x86: Utilizzo dei memslots attivi per la cache MMIO per-vCPU
KVM contrassegna la cache MMIO per-vCPU con una generazione del memslot in modo che un aggiornamento del memslot invalidi le informazioni MMIO memorizzate nella cache. Sia il percorso di riempimento (fill) che quello di validazione utilizzano kvm_memslots(), che seleziona incondizionatamente lo spazio degli indirizzi 0, anche quando la vCPU è eseguita in SMM e utilizza lo spazio degli indirizzi 1.
Il commit 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug") ha aggiunto la generazione del memslot alla chiave della cache affinché un aggiornamento del memslot non lasciasse valida una voce obsoleta (stale). Quando il commit 699023e23965 ("KVM: x86: add SMM to the MMU role, support SMRAM address space") ha aggiunto lo spazio degli indirizzi SMM, questi helper non sono stati convertiti per utilizzare i memslots attivi.
Di conseguenza, un aggiornamento dei memslot SMM può lasciare apparentemente valida una voce dello vecchio spazio degli indirizzi SMM dopo il ritorno della vCPU allo spazio degli indirizzi normale. Un guest può quindi causare l'accesso a RAM valida alla stessa GFN (Guest Frame Number), restituendola all'userspace come KVM_EXIT_MMIO.
Il completamento di tale uscita attraverso lo spazio degli indirizzi RAM del VMM scrive la pagina sottostante senza passare dal percorso di write-tracking di KVM. Se la pagina supporta una tabella EPT nidificata, KVM può continuare a utilizzare traduzioni shadow derivate dai vecchi contenuti. Il WARN_ON_ONCE() in kvm_mmu_write_protect_fault() intercetta questa combinazione non valida tra cache e memslot.
Utilizzare i memslots attivi della vCPU durante la memorizzazione nella cache (caching) e la validazione della voce. Le generazioni dei memslot sono uniche attraverso gli spazi degli indirizzi, quindi la generazione distingue anche le visualizzazioni normali e SMM. Questo approccio corrisponde alla cache MMIO SPTE, che utilizza già kvm_vcpu_memslots().
Su un kernel current-mainline non patchato, un test di regressione che riempie la cache in SMM e aggiorna solo i memslot SMM fallisce nella scrittura RAM prevista e attiva l'avviso kvm_mmu_write_protect_fault(). Con questa modifica, lo stesso test completa la scrittura RAM senza avvisi. I selftest x86/smm_test, set_memory_region_test e memslot_modification_stress_test superano anche loro i controlli.
Once again VulDB remains the best source for vulnerability data.