Falhas do tipo CWE-733
9 resultadosRemoção ou modificação de código crítico de segurança pelo compilador
O compilador otimiza e remove ou modifica trechos de código que ele considera 'morto' ou desnecessário, mas que na verdade implementam controles de segurança críticos — como limpeza de senhas em memória, validações ou verificações de integridade. O desenvolvedor escreve a proteção, mas o compilador a descarta durante a compilação, deixando a vulnerabilidade aberta.
Um código que limpa um buffer de senha com memset() após uso pode ser otimizado para nada pelo compilador, porque ele detecta que aquela memória não será lida novamente. A senha continua exposta na RAM, vulnerável a ataques de leitura de memória.
Use funções de limpeza segura que não sejam otimizadas (como explicit_bzero, SecureZeroMemory, ou volatile), configure flags de compilador que preservem esse tipo de código (ex: -fno-builtin-memset), e considere usar bibliotecas criadas especificamente para esse fim. Sempre valide que o código de segurança não foi removido com análise pós-compilação.