MASWE-0027: 不安全的随机数生成
概述¶
一个 伪随机数生成器 (PRNG) 算法根据熵不足的种子生成序列,这些序列可能是可预测的。常见的实现不具备加密安全性。例如,它们通常使用线性同余公式,允许攻击者在观察到足够多的输出后预测未来的输出。因此,它不适用于安全关键型应用程序或保护敏感数据。
影响¶
- 绕过保护机制:在安全上下文中使用非密码安全的 PRNG(例如身份验证)会带来重大风险。攻击者可能会猜测生成的数字并获得对特权数据或功能的访问权限。预测或重新生成随机数可能导致加密漏洞、敏感用户信息泄露或用户冒充。
引入方式¶
- 有风险的随机 API:应用程序可能使用许多现有 API 来生成熵不足的随机数。
- 非随机源:应用程序可能使用自定义方法来创建“所谓的随机”值,方法是使用非随机源,例如当前时间。
缓解措施¶
对于安全相关的上下文,请使用密码安全的随机数。
总的来说,强烈建议不要以确定性方式使用任何随机函数,即使它是安全的,特别是那些涉及硬编码种子值(容易通过反编译暴露)的函数。
请参阅 RFC 1750 - 安全随机性建议 和 OWASP 加密存储备忘单 - 安全随机数生成 以获取有关随机数生成的更多信息和建议。