Fallos del tipo CWE-733
9 resultadosRemoção ou modificação de código crítico de segurança por otimização do compilador
O compilador remove ou transforma instruções que você escreveu para proteger dados sensíveis (como limpeza de senhas em memória, validações de segurança), porque as considera 'código morto' ou 'operações desnecessárias'. Isso anula a proteção intencional e deixa informações sensíveis expostas ou permite bypass de controles de segurança.
Você escreve um loop para zerar um buffer com senha: `memset(senha, 0, sizeof(senha))`. O compilador em nível de otimização -O2 remove o memset porque detecta que a variável não é usada depois, deixando a senha na memória. Um atacante consegue recuperá-la de um core dump ou análise pós-execução.
Use funções seguras específicas para limpeza de memória (como `explicit_bzero` ou `sodium_memzero` nas bibliotecas criptográficas) que o compilador não otimiza, ou declare buffers sensíveis como `volatile` para forçar o compilador a manter as operações de limpeza intactas. Revise flags de compilação e desconfie de comportamentos inesperados em segurança ao mudar níveis de otimização.