Falhas do tipo CWE-597

3 resultados

Uso de operador errado em comparação de strings

Quando o desenvolvedor usa um operador de comparação inadequado (como == em vez de .equals() em Java, ou comparação de referência em vez de valor) para validar ou comparar strings. Isso pode levar a comparações falhadas porque verifica o endereço de memória em vez do conteúdo real, permitindo que validações de segurança sejam contornadas.

Exemplo

Em Java, usar `senha == senhaArmazenada` em vez de `senha.equals(senhaArmazenada)` pode falhar mesmo com senhas idênticas, porque == compara referências. Um atacante poderia contornar autenticação se a comparação não funcionar corretamente.

Como mitigar

Use os métodos corretos para comparação de strings: .equals() ou .equalsIgnoreCase() em Java; === em JavaScript (ao invés de ==); comparadores de valor em linguagens compiladas. Em comparações de segurança (senhas, tokens), prefira bibliotecas especializadas que implementam timing-safe comparison.