MASTG-TEST-0204: 不安全随机 API 使用
概述¶
Android 应用有时会使用不安全的 伪随机数生成器 (PRNG),例如 java.util.Random
,它是一种线性同余生成器,对于任何给定的种子值,都会生成一个可预测的序列。 因此,对于任何相同的种子,java.util.Random
和 Math.random()
(后者只是在静态 java.util.Random
实例上调用 nextDouble()
)在所有 Java 实现中都会生成可重现的序列。 这种可预测性使其不适合加密或其他安全敏感的上下文。
通常,如果 PRNG 没有明确记录为密码安全,则不应在必须预测随机性的地方使用。 有关更多详细信息,请参阅 Android 文档 和 “随机数生成”指南。
步骤¶
- 在应用上运行静态分析 ( Android 上的静态分析) 工具,并查找不安全的随机 API,或者您可以使用 方法追踪 来检测此类 API 的使用情况。
- 对于每个已识别的 API 用途,请检查它们是否用于安全相关的上下文中。 您可以反编译应用 ( 反编译 Java 代码) 并检查代码 ( 审查反编译的 Java 代码) 以进行确认。
观察¶
输出应包含使用不安全随机 API 的位置列表。
评估¶
如果发现使用这些 API 生成的随机数用于安全相关的上下文,例如生成密码或身份验证令牌,则测试用例失败。