Fallos del tipo CWE-768

1 resultado

Avaliação incorreta de curto-circuito em operadores lógicos

Ocorre quando o código não interrompe a avaliação de uma expressão lógica no momento esperado, causando execução de código que deveria ser evitado. Isso acontece quando operadores lógicos (&&, ||) não fazem short circuit corretamente, seja por erro do compilador, configuração incorreta ou lógica defeituosa, permitindo efeitos colaterais não previstos ou validações ineficazes.

Ejemplo

Um código valida credenciais com `if (usuário != NULL && verificarSenha(usuário))` esperando que a segunda função não seja chamada se usuário for nulo, mas se o compilador não fizer short circuit, verificarSenha() executa mesmo assim, causando erro ou desvio de segurança. Ou um teste `if (validarPermissão() && processarDados())` onde, sem short circuit, processarDados() roda mesmo se a validação falhar.

Cómo mitigar

Verifique que o compilador/interpretador da sua linguagem respeita short circuit (padrão em C, Java, Python, JS). Separe condições complexas em variáveis intermediárias para tornar a lógica explícita e mais fácil de debugar. Teste casos onde a primeira condição falha, garantindo que efeitos colaterais não ocorrem.