Weaknesses of type CWE-760
10 resultsHash unidirecional com sal previsível
Quando um desenvolvedor usa uma função hash criptográfica (como MD5, SHA-1 ou até SHA-256) para armazenar senhas ou dados sensíveis, mas escolhe um sal (salt) que é fácil de adivinhar ou previsível — como um timestamp fixo, ID do usuário ou valor constante — o atacante consegue pré-computar tabelas de hashes (rainbow tables) direcionadas e quebrar senhas rapidamente. O sal deveria ser aleatório e único por usuário justamente para inutilizar esse tipo de ataque.
Um sistema armazena senhas assim: `sha256(senha + user_id)`. Como o user_id é sequencial e previsível (1, 2, 3...), um atacante computa rainbow tables para cada user_id conhecido e quebra qualquer senha com força bruta acelerada, mesmo senhas fracas levando minutos em vez de dias.
Use um algoritmo moderno de derivação de chave como bcrypt, Argon2 ou scrypt, que já geram sais aleatórios internamente e incluem trabalho computacional para desacelerar ataques. Se precisar usar hash direto, gere sais criptograficamente aleatórios (via `os.urandom()` ou equivalente) e armazene-os junto com o hash — não reutilize ou derive sais de dados previsíveis.