Weaknesses of type CWE-330
156 resultsUso de valores aleatórios insuficientemente randômicos
A aplicação usa geradores de números aleatórios fracos (como Math.random(), rand() ou seeds previsíveis) para criar tokens, chaves, IVs ou outros valores que precisam ser criptograficamente seguros. Um atacante consegue prever ou reproduzir esses valores, comprometendo a segurança de autenticação, sessão ou criptografia.
Um sistema gera tokens de reset de senha usando Math.random() em JavaScript ou srand(time()) em C, permitindo que um atacante adivinhe o token de outro usuário em poucas tentativas. Outro caso: usar UUID v1 (baseado em timestamp) em vez de UUID v4 (randômico) para criar chaves criptográficas.
Use geradores de números aleatórios criptograficamente seguros: crypto.getRandomValues() (JS), java.security.SecureRandom (Java), secrets.token_bytes() (Python), ou equivalentes nativos da plataforma. Nunca use time() ou valores previsíveis como seed; confie em /dev/urandom ou APIs de sistema operacional que coletam entropia real.