MASWE-0027: Geração Inadequada de Números Aleatórios
Content in BETA
This content is in beta and still under active development, so it is subject to change any time (e.g. structure, IDs, content, URLs, etc.).
Visão Geral¶
Um algoritmo de gerador de números pseudoaleatórios (PRNG) gera sequências com base em uma semente com entropia insuficiente que pode ser previsível. As implementações comuns não são criptograficamente seguras. Por exemplo, elas normalmente usam uma fórmula linear congruente, permitindo que um invasor preveja saídas futuras, desde que observe saídas suficientes. Portanto, não é adequado para aplicações críticas de segurança ou para proteger dados sensíveis.
Impacto¶
- Bypass de Mecanismo de Proteção: O uso de um PRNG não criptograficamente seguro em um contexto de segurança, como autenticação, apresenta riscos significativos. Um invasor poderia potencialmente adivinhar os números gerados e obter acesso a dados ou funcionalidades privilegiados. Prever ou regenerar números aleatórios pode levar a violações de criptografia, comprometer informações sensíveis do usuário ou permitir a impersonação de usuários.
Modos de Introdução¶
- APIs de Aleatoriedade de Risco: O aplicativo pode usar muitas APIs existentes para gerar números aleatórios com entropia insuficiente.
- Fontes Não Aleatórias: O aplicativo pode usar métodos personalizados para criar valores "supostamente aleatórios", usando fontes não aleatórias, como a hora atual.
Mitigações¶
Para contextos relevantes à segurança, use números aleatórios criptograficamente seguros.
Em geral, é fortemente recomendado não usar qualquer função aleatória de forma determinística, mesmo que seja segura, especialmente aquelas que envolvem valores de semente hardcoded (que são vulneráveis à exposição por descompilação).
Consulte o RFC 1750 - Recomendações de Aleatoriedade para Segurança e a OWASP Cryptographic Storage Cheat Sheet - Geração Segura de Números Aleatórios para mais informações e recomendações sobre geração de números aleatórios.
Tests¶
MASTG-TEST-0204: Uso Inseguro de API de Aleatoriedade MASTG-TEST-0205: Uso de Fontes Não Aleatórias