跳过内容

MASTG-TEST-0204: 不安全随机 API 使用

概述

Android 应用有时会使用不安全的 伪随机数生成器 (PRNG),例如 java.util.Random,它是一种线性同余生成器,对于任何给定的种子值,都会生成一个可预测的序列。 因此,对于任何相同的种子,java.util.RandomMath.random()后者只是在静态 java.util.Random 实例上调用 nextDouble())在所有 Java 实现中都会生成可重现的序列。 这种可预测性使其不适合加密或其他安全敏感的上下文。

通常,如果 PRNG 没有明确记录为密码安全,则不应在必须预测随机性的地方使用。 有关更多详细信息,请参阅 Android 文档“随机数生成”指南

步骤

  1. 在应用上运行静态分析 ( Android 上的静态分析) 工具,并查找不安全的随机 API,或者您可以使用 方法追踪 来检测此类 API 的使用情况。
  2. 对于每个已识别的 API 用途,请检查它们是否用于安全相关的上下文中。 您可以反编译应用 ( 反编译 Java 代码) 并检查代码 ( 审查反编译的 Java 代码) 以进行确认。

观察

输出应包含使用不安全随机 API 的位置列表。

评估

如果发现使用这些 API 生成的随机数用于安全相关的上下文,例如生成密码或身份验证令牌,则测试用例失败。

缓解措施

演示

MASTG-DEMO-0007:不安全随机 API 的常见用法