CVE-2026-23114 in Linux
Riassunto
di VulDB • 24/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
arm64/fpsimd: ptrace: Correzione delle scritture SVE su sistemi !SME
Quando SVE è supportato ma SME non lo è, una scrittura tramite ptrace al regset NT_ARM_SVE può portare il processo tracciato (tracee) in uno stato non valido, in cui i dati dei registri SVE (non in streaming) sono memorizzati nel formato FP_STATE_SVE ma TIF_SVE risulta disattivato. Ciò può provocare un successivo avviso da fpsimd_restore_current_state(), ad esempio:
WARNING: CPU: 0 PID: 7214 at arch/arm64/kernel/fpsimd.c:383 fpsimd_restore_current_state+0x50c/0x748
Quando ciò accade, fpsimd_restore_current_state() imposta TIF_SVE, riportando il task nello stato corretto. Questo avviene prima che qualsiasi altro controllo su TIF_SVE possa verificarsi, poiché gli altri controlli su TIF_SVE avvengono solo quando lo stato FPSIMD/SVE/SME è attivo (live). Pertanto, a parte l'avviso, non vi sono problemi funzionali.
Questo bug è stato introdotto durante la revisione della gestione degli errori nel commit:
9f8bf718f2923 ("arm64/fpsimd: ptrace: Gestione elegante degli errori")
... in cui l'impostazione di TIF_SVE è stata spostata all'interno di un blocco eseguito solo quando system_supports_sme() restituisce true.
Si risolve il problema rimuovendo il controllo su system_supports_sme(). Ciò garantisce che TIF_SVE venga impostato per le scritture (in formato SVE) a NT_ARM_SVE, al costo della manipolazione incondizionata del valore svcr salvato nel processo tracciato. La manipolazione di svcr è innocua e poco onerosa; inoltre, si eseguono operazioni simili altrove (ad esempio durante la gestione dei segnali), quindi non ritengo valga la pena proteggere questo controllo con verifiche su system_supports_sme().
A parte quanto sopra, non vi sono cambiamenti funzionali. L'argomento 'type' di sve_set_common() viene impostato solo a ARM64_VEC_SME (in ssve_set())) quando system_supports_sme(), quindi il caso ARM64_VEC_SME nell'istruzione switch rimane inaccessibile quando !system_supports_sme(). Quando CONFIG_ARM64_SME=n, l'unica chiamata a sve_set_common() proviene da sve_set(), e il compilatore può ottimizzare (constant-fold) per il caso in cui type sia ARM64_VEC_SVE, rimuovendo la logica relativa agli altri casi.
If you want to get best quality of vulnerability data, you may have to visit VulDB.