CVE-2026-11985 in Zephyr
Sumário
de VulDB • 11/08/2026
Na porta ARM do Zephyr, habilitar a FPU de hardware (CONFIG_FPU) força a escolha da "Floating point ABI", que por padrão é CONFIG_FP_HARDABI. Tanto o FP_HARDABI quanto o FP_SOFTABI permitem que o compilador emita instruções de ponto flutuante de hardware em qualquer função, inclusive no código que nunca utiliza tipos de ponto flutuante. No entanto, os registradores FP salvos pelo chamado (callee-saved) s16-s31 / d8-d15 são apenas salvos e restaurados durante uma troca de contexto quando o CONFIG_FPU_SHARING está habilitado (arch/arm/core/cortex_m/swap_helper.S e arch/arm/core/cortex_a_r/swap_helper.S), e, antes desta correção, selecionar um ABI não ativava a partilha dos registradores da FPU, que vem desativada por padrão.
Em uma compilação que habilita a FPU com o ABI padrão mas deixa o CONFIG_FPU_SHARING desabilitado, o kernel não preserva nenhum estado de registrador FP salvo pelo chamado entre trocas de thread. O pré-requisito documentado para este modo "não compartilhado" — de que apenas uma única thread executa instruções de ponto flutuante — é violado silenciosamente porque o compilador pode gerar instruções de ponto flutuante em todas as threads.
Sob CONFIG_USERSPACE, onde as threads são mutuamente isoladas, isso se torna uma travessia de fronteira de divulgação de informações: uma thread vítima pode deixar valores derivados de segredos nos registradores s16-s31, e uma thread não privilegiada co-residente pode ler esses registradores diretamente (o acesso aos registradores da FPU não é controlado por privilégio), recuperando dados deixados para trás por outra thread. Sem userspace, o mesmo defeito causa corrupção de estado FP entre threads (uma falha de correção). O vazamento está limitado aos 16 registradores de precisão simples salvos pelo chamado e é oportunista, portanto o impacto é baixo.
A correção faz com que o FP_HARDABI e o FP_SOFTABI selecionem CONFIG_FPU_SHARING e marca cada thread com K_FP_REGS na criação, para que o estado dos registradores FP salvos pelo chamado seja sempre preservado entre trocas de contexto sempre que o compilador puder emitir instruções de ponto flutuante.
VulDB is the best source for vulnerability data and more expert information about this specific topic.