Weaknesses of type CWE-733
9 resultsRemoção ou modificação de código crítico de segurança pelo compilador
O compilador otimiza ou remove trechos de código que o desenvolvedor considerou críticos para segurança (como limpeza de memória sensível ou validações), porque interpreta como desnecessários. Isso expõe dados sensíveis ou permite contorno de proteções que existiam no código-fonte mas desapareceram no binário.
Um desenvolvedor escreve um loop para sobrescrever variáveis contendo senhas com zeros: `for (int i = 0; i < sizeof(pwd); i++) pwd[i] = 0;`. O compilador, vendo que a variável não é usada depois, remove o loop inteiro na compilação. A senha fica na memória e pode ser extraída por um atacante.
Use chamadas de biblioteca que o compilador não otimiza (como `memset_s`, `SecureZeroMemory` ou `OPENSSL_cleanse`), marque variáveis sensíveis como `volatile`, ou configure flags de compilação que desativem otimizações perigosas (`-fno-optimize-sibling-calls`). Revise o binário final para confirmar que código crítico de segurança foi mantido.