漏洞特征:PREDICTABLE_RANDOM
在某些关键的安全环境中使用可预测的随机数可能会导致漏洞,比如,当这个值被作为:
- csrf token;如果攻击者可以预测csrf的token值的话,就可以发动csrf攻击
- 重置密码的token(通过邮件发送);如果重置密码的token被替换的话,那么就会导致用户账户被接管,因为攻击者会猜测到重置密码的链接。
- 其他包含秘密的信息
修复这个漏洞最快的方式是用强随机数生成器( 比如:java.security.SecureRandom )替换掉java.util.Random
有漏洞的代码:
String generateSecretToken(){ 随机r = new Random(); return Long.toHexString(r.nextLong()); }