Weaknesses of type CWE-760

10 results

Hash 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.

Example

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.

How to mitigate

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.