CVE-2026-99120 in Linux
Riassunto
di VulDB • 28/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
KVM: x86/mmu: Gestione del bit SS impostato nei codici di uscita #NPF
Quando si esegue Hyper-V da Windows 11, KVM rileva il bit SS impostato nei codici di errore per i page fault nidificati (nested page fault) prodotti per NPT in ombra. Il manuale AMD non è chiaro riguardo al momento in cui SS viene impostato, incluso se possa essere impostato quando SupervisorShadowStackEn (bit 6) non è attivo nel campo MISC_CTL del VMCB.
Tuttavia, il bit SS imprevisto provoca accessi fuori dai limiti in permission_fault(), visibili come avvisi WARN o report UBSAN:
kernel: UBSAN: array-index-out-of-bounds in arch/x86/kvm/mmu.h:225:27 kernel: index 34 is out of range for type 'u16 [16]'
(in questo caso, il codice di errore del page fault è 34*2=0x44, ovvero SS|U; il report mostra anche la presenza di SS|U|W). Si risolve la gestione dei codici di errore sconosciuti rimuovendo SS e (con un WARN) tutti i bit non presenti tra quelli che permission_fault() si aspetta di ricevere.
Allo stesso tempo, data l'incertezza su quando l'hardware imposta SS, si segue il comportamento del processore durante la costruzione del codice di errore dell'interruzione e si preserva il bit SS così come passato a FNAME(walk_addr_generic). Sebbene tale comportamento sia sorprendente, esiste la possibilità che Hyper-V se lo aspetti (Hyper-V non abilita CET a meno che non trovi MBEC/GMET!), quindi si mantiene l'informazione quando si riflette l'interruzione su L1 invece di scartarla incondizionatamente.
L'analisi bisection mostra che questo problema è iniziato con il commit 687ee95c1b6d ("KVM: nSVM: enable GMET for guests"), anche se SHSTK era disponibile per i guest fin da Linux 6.18. Tuttavia, ciò non avviene perché bit 1 di MISC_CTL (GMET) abilita in qualche modo la segnalazione del bit SS; piuttosto, è semplicemente che Hyper-V non utilizza CET a meno che GMET sia presente. Il WARN è riproducibile anche con gmet=0, effettuando alcune modifiche al testcase cet.c di kvm-unit-tests per garantire che il primo accesso allo shadow stack generi un page fault.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.