CVE-2025-15604Perl Web框架Amon2 6.17之前版本存在不安全的随机字符串生成实现。当`/dev/urandom`不可用时,6.06至6.16版本会退化为使用弱熵源(rand、PID、时间)生成哈希值。由于PID有限且时间可预测,生成的会话ID、CSRF令牌等具有可预测性,攻击者可利用此漏洞接管会话或绕过防护。
该漏洞核心在于`Amon2::Util::random_string`函数的熵源不足及不安全的降级机制。在6.06至6.16版本中,若`/dev/urandom`不可用,系统将使用Perl内置的`rand()`函数、进程ID(PID)和高精度纪元时间组合生成SHA-1哈希。由于`rand()`非加密安全,且PID通常只有几万个可能的值,攻击者可根据HTTP响应头中的`Date`字段精确锁定时间范围。通过遍历PID和时间戳,攻击者能够在极短时间内还原随机数种子,进而准确计算出服务器生成的会话ID、CSRF令牌或Cookie签名密钥。这种可预测性允许攻击者绕过身份验证,执行会话劫持或未授权操作,对系统安全构成严重威胁。