Falhas do tipo CWE-1281

6 resultados

Sequência de instruções do processador causa comportamento inesperado

Fraqueza onde uma sequência específica de instruções de máquina, quando executadas consecutivamente, produz um resultado diferente do esperado pelo projetista do hardware ou pelo desenvolvedor. Geralmente ocorre em processadores modernos devido a otimizações como pipeline, cache ou execução fora de ordem, criando condições onde o comportamento observable não corresponde à intenção do código.

Exemplo

Um desenvolvedor embarcado escreve código que realiza leitura de um registrador de status, seguido imediatamente de uma escrita em outro registrador crítico. O processador, por otimização, reordena essas operações ou executa-as parcialmente em paralelo, fazendo a escrita antes da leitura completar, comprometendo a sincronização esperada e causando comportamento impredizível.

Como mitigar

Use barreiras de memória (memory barriers) e instruções de sincronização apropriadas ao processador (como `dmb`, `isb` em ARM, ou `mfence` em x86). Consulte o manual do processador e evite assumir ordem de execução implícita; teste o comportamento efetivo em hardware real, especialmente em código crítico de tempo ou segurança.