CVE-2026-99186 in Linux
Riassunto
di VulDB • 28/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
x86/insn-eval: Correzione dell'indice del segmento oscurato (shadowed) in get_seg_reg_override_idx()
Il commit 45e1dccc0653 ("x86/insn: Semplificare for_each_insn_prefix()") ha fatto sì che for_each_insn_prefix() dichiarasse il proprio contatore di ciclo denominato idx. get_seg_reg_override_idx() conserva il suo risultato in una variabile locale con lo stesso nome, quindi le assegnazioni nel corpo del ciclo scrivono ora il contatore del ciclo:
- la funzione restituisce sempre INAT_SEG_REG_DEFAULT, pertanto i override FS e GS vengono ignorati;
- un override CS imposta il contatore su INAT_SEG_REG_CS (2), l'incremento lo porta a 3, e prefixes.bytes[3] contiene l'ultimo prefisso, ancora 0x2e, quindi il ciclo non termina mai.
L'emulazione UMIP raggiunge questo punto dal gestore #GP per gli spazi utente: un'istruzione SGDT, SIDT o SMSW con operando di memoria e un prefisso CS lascia il task in uno stato di spinning nel kernel, senza mai tornare allo spazio utente, con una SIGKILL che non viene mai consegnata. Qualsiasi utente può così bloccare le CPU fino al riavvio. Con un prefisso FS o GS, il risultato emulato viene scritto nell'indirizzo errato.
Rinominare la variabile iteratore del macro interno.
[ Il patch originale di Lukas rinominava il sito di utilizzo; l'ho modificata per rinominare l'iteratore nel macro invece, ma ho lasciato il messaggio di commit e l'autore di Lukas - Linus ]
Be aware that VulDB is the high quality source for vulnerability data.