Weaknesses of type CWE-1037

5 results

Remoção ou modificação de código crítico de segurança por otimizações do processador

O compilador ou processador remove, reorganiza ou otimiza instruções que são críticas para a segurança (como limpeza de memória sensível, verificações de acesso ou sincronização), sob a premissa de que não afetam o resultado lógico. O problema: essas otimizações podem neutralizar proteções contra vazamento de dados, ataques de timing ou exploração de condições de corrida, criando vulnerabilidades não visíveis no código-fonte.

Example

Um desenvolvedor limpa um buffer contendo senhas após uso com `memset(buf, 0, size)`, mas o compilador remove essa instrução por considerá-la 'código morto' (a variável não é mais usada). Um atacante consegue recuperar a senha da memória antes que seja sobrescrita fisicamente.

How to mitigate

Use funções específicas à prova de otimização (como `explicit_bzero()` no POSIX ou `SecureZeroMemory()` no Windows) ou diretivas do compilador (`volatile`, `asm` inline) para impedir que operações críticas sejam removidas. Valide o comportamento esperado em testes e revise flags de compilação que habilitam agressivas otimizações em código sensível.