Falhas do tipo CWE-339

2 resultados

Espaço reduzido de sementes em gerador de números pseudoaleatórios

O PRNG (gerador de números pseudoaleatórios) é inicializado com uma semente que vem de um espaço muito pequeno de valores possíveis. Isso faz com que o atacante consiga prever ou reproduzir a sequência de números 'aleatórios' com força bruta, comprometendo criptografia, tokens de sessão ou qualquer funcionalidade que dependa de aleatoriedade.

Exemplo

Uma aplicação web usa `Math.random()` ou `rand()` inicializado com timestamp em segundos como semente para gerar tokens de CSRF. Como há apenas ~86.400 valores possíveis por dia, um atacante testa todas as sementes viáveis em segundos e prevê o token antes do usuário.

Como mitigar

Use uma fonte de entropia adequada para semear o PRNG: `/dev/urandom` no Linux, `SecureRandom` em Java, `os.urandom()` em Python. Para criptografia e segurança, prefira bibliotecas de aleatoriedade criptográfica já validadas em vez de implementar PRNG próprio.