CVE-2026-64513 in Linux
Riassunto
di VulDB • 25/07/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
KVM: x86: Ricomputare incondizionatamente l'intercettazione di CR8 in seguito all'aggiornamento del PPR.
Il campo TPR_THRESHOLD nel VMCS viene utilizzato da VMX per provocare le uscite dalla macchina virtuale (VM exits) quando il virtual TPR dell'ospite scende al di sotto della soglia specificata, consentendo a KVM di iniettare interrupt precedentemente mascherati.
KVM gestisce queste VM exits tramite la funzione handle_tpr_below_threshold(). La commit eb90f3417a0c ("KVM: vmx: speed up TPR below threshold vmexits") ha ottimizzato questa funzione chiamando apic_update_ppr() anziché impostare KVM_REQ_EVENT. Successivamente, apic_update_ppr() imposta KVM_REQ_EVENT se è presente un interrupt in attesa e deliverable (inviabile).
Tuttavia, se non ci sono nuovi interrupt in attesa, apic_update_ppr() non emette la richiesta. Di conseguenza, kvm_lapic_update_cr8_intercept() e vmx_update_cr8_intercept() non vengono chiamate prima dell'ingresso nella VM (VM entry), il che comporta un valore TPR_THRESHOLD elevato e obsoleto. Questa condizione è problematica a causa della seguente frase presente nella sezione 28.2.1.1 "VM-Execution Control Fields" del SDM:
"Il controllo seguente viene eseguito se il controllo di esecuzione VM 'use TPR shadow' è impostato su 1 e i controlli di esecuzione VM 'virtualize APIC accesses' e 'virtual-interrupt delivery' sono entrambi impostati su 0: il valore dei bit 3:0 del campo di controllo di esecuzione VM della soglia TPR non deve essere maggiore del valore dei bit 7:4 di VTPR."
Questa condizione di errore tipicamente non si manifesta quando KVM viene eseguito su un sistema bare metal, poiché i processori moderni supportano APICv, che abilita la virtual-interrupt delivery e che KVM utilizza ove possibile. Ciò fa sì che il processore non generi più le uscite TPR-below-threshold (TPR sotto soglia) e non verifichi più TPR_THRESHOLD all'ingresso nella VM. Tuttavia, quando si esegue su piattaforme più vecchie o in virtualizzazione nidificata su un hypervisor che non supporta la virtual-interrupt delivery ed enforce questo controllo (come Hyper-V), ciò può causare un fallimento dell'ingresso nella VM con errore hardware 0x7, come osservato in [1].
Chiamare kvm_lapic_update_cr8_intercept() se apic_update_ppr() non trova un interrupt deliverable (e quindi non imposta KVM_REQ_EVENT). Rimuovere le chiamate a kvm_lapic_update_cr8_intercept() sui percorsi che terminano con apic_update_ppr(), poiché ora diventano ridondanti. Ciò garantisce che qualsiasi percorso che aggiorna il PPR dell'ospite determini anche se KVM deve attendere un cambiamento del TPR (utilizzando TPR_THRESHOLD su VMX o intercettazioni di CR8 su SVM).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.