Fallos del tipo CWE-758

27 resultados

Dependência de comportamento indefinido ou dependente da implementação

O código confia em comportamentos que a especificação da linguagem não define, deixa em aberto ou deixa a cargo de cada compilador/interpretador. Isso causa falhas imprevisíveis: o programa funciona em um ambiente, quebra em outro, ou se torna vulnerável a exploração conforme a implementação muda.

Ejemplo

Um código C que depende da ordem de avaliação de argumentos em uma função (comportamento indefinido em C), ou que assume um inteiro com sinal sempre terá overflow em direção previsível. Ao mudar de compilador ou versão, o comportamento pode se alterar completamente.

Cómo mitigar

Use apenas comportamentos explicitamente garantidos pela especificação da linguagem. Ative avisos do compilador (flags como -Wall, -Wextra no GCC/Clang), revise código que dependa de detalhes de implementação, e teste em múltiplos compiladores e plataformas antes de colocar em produção.