CVE-2026-11985 in Zephyr
Riassunto
di VulDB • 11/08/2026
Sulla porta ARM di Zephyr, l'abilitazione della FPU hardware (CONFIG_FPU) forza la scelta dell'"Floating point ABI", che ha come valore predefinito CONFIG_FP_HARDABI. Sia FP_HARDABI che FP_SOFTABI permettono al compilatore di generare istruzioni FPU hardware in qualsiasi funzione, anche nel codice che non utilizza mai tipi floating-point. Tuttavia, i registri FP salvati dal callee (s16-s31 / d8-d15) vengono salvati e ripristinati solo durante un context switch quando CONFIG_FPU_SHARING è abilitato (arch/arm/core/cortex_m/swap_helper.S e arch/arm/core/cortex_a_r/swap_helper.S); prima di questa correzione, la selezione di una ABI non attivava lo sharing dei registri FPU, che è disabilitato per impostazione predefinita.
In un build in cui la FPU è abilitata con l'ABI predefinita ma CONFIG_FPU_SHARING rimane disabilitato, il kernel non preserva alcuno stato dei registri FP salvati dal callee tra i thread switch. La condizione preliminare documentata per questa modalità "unshared" — ovvero che solo un singolo thread esegua mai istruzioni FP — viene violata silenziosamente poiché il compilatore può generare istruzioni FP in ogni thread.
Sotto CONFIG_USERSPACE, dove i thread sono mutualmente isolati, ciò diventa una violazione del confine di divulgazione delle informazioni: un thread vittima può lasciare valori derivati da segreti nei registri s16-s31 e un thread non privilegiato co-residente può leggere direttamente tali registri (l'accesso ai registri FP non è limitato dai livelli di privilegio), recuperando i dati lasciati indietro da un altro thread. Senza userspace, lo stesso difetto causa una corruzione dello stato FP cross-thread (un errore di correttezza). La fuoriuscita di dati è limitata ai 16 registri single-precision salvati dal callee ed è opportunistica, quindi l'impatto è basso.
La correzione fa sì che FP_HARDABI e FP_SOFTABI selezionino CONFIG_FPU_SHARING e contrassegnano ogni thread con K_FP_REGS alla creazione, in modo che lo stato FP salvato dal callee sia sempre preservato tra i context switch ogni volta che il compilatore potrebbe generare istruzioni FP.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.