Skip to content

MASTG-TEST-0204: Uso Inseguro de API de Aleatoriedade

Visão Geral

Aplicativos Android às vezes utilizam um gerador de números pseudoaleatórios (PRNG, do inglês pseudorandom number generator) inseguro), como java.util.Random, que é um gerador linear congruente e produz uma sequência previsível para qualquer valor de semente (seed). Como resultado, java.util.Random e Math.random() (este último simplesmente chama nextDouble() em uma instância estática de java.util.Random) geram sequências reproduzíveis em todas as implementações Java sempre que a mesma semente é utilizada. Essa previsibilidade os torna inadequados para contextos criptográficos ou outros contextos sensíveis à segurança.

Em geral, se um PRNG não for explicitamente documentado como criptograficamente seguro, ele não deve ser utilizado onde a aleatoriedade precisa ser imprevisível. Consulte a Documentação do Android e o guia "geração de números aleatórios") para mais detalhes.

Etapas

  1. Execute uma ferramenta de análise estática ( Análise Estática no Android) no aplicativo e procure por APIs de aleatoriedade inseguras, ou você pode utilizar Rastreamento de Métodos para detectar o uso de tais APIs.
  2. Para cada um dos usos de API identificados, verifique se eles são utilizados em um contexto relevante para segurança. Você pode descompilar o aplicativo ( Descompilação de Código Java) e inspecionar o código ( Revisão de Código Java Descompilado) para confirmar.

Observação

A saída deve conter uma lista de locais onde APIs de aleatoriedade inseguras são utilizadas.

Avaliação

O caso de teste falha se for possível encontrar números aleatórios gerados utilizando essas APIs que são utilizados em contextos relevantes para segurança, como geração de senhas ou tokens de autenticação.

Mitigations

Demos

MASTG-DEMO-0007: Usos Comuns de APIs de Aleatórios Inseguros