Weaknesses of type CWE-336
3 resultsMesma seed em gerador de números pseudo-aleatórios
Quando um PRNG é inicializado com a mesma seed (valor de inicialização), ele sempre gera a mesma sequência de números pseudo-aleatórios. Se a seed for previsível ou reutilizada — porque falta aleatoriedade real na inicialização ou porque o código repete o processo — um atacante consegue prever os valores gerados e comprometer a segurança de operações que dependem dessa aleatoriedade, como geração de tokens, chaves criptográficas ou nonces.
Um sistema gera tokens de sessão usando `srand(time(NULL)); int token = rand();`. Se dois usuários fizerem login no mesmo segundo, receberão o mesmo token. Um atacante prediz qual será o próximo token e sequestra sessões de outros usuários.
Use fontes de aleatoriedade criptograficamente seguras (como `/dev/urandom` ou `os.urandom()` em Python) para inicializar a seed, ou melhor ainda, use diretamente funções criptográficas de geração de números aleatórios (como `secrets.token_hex()` em Python). Nunca reutilize a mesma seed e valide que a seed é realmente impredizível a cada execução.