CVE-2026-5083Perl的Ado::Sessions模块在0.935及之前的版本中存在严重的安全缺陷,导致生成的会话ID具有可预测性。该模块使用SHA-1哈希算法结合内置的rand函数、当前纪元时间和进程ID(PID)来生成会话ID。由于PID的数值空间较小,且纪元时间容易被猜测或通过HTTP Date头泄露,加之Perl内置的rand函数并非密码学安全的伪随机数生成器,攻击者可以通过有限的计算资源预测出有效的会话ID。成功利用此漏洞可能导致攻击者劫持用户会话,从而在无需认证的情况下获取系统访问权限。目前Ado项目已停止维护并从CPAN索引中移除。
该漏洞的核心在于熵源不足和弱随机数算法的使用。Ado::Sessions生成会话ID的公式大致为SHA-1(rand() + time + PID)。首先,PID通常是一个较小的整数(例如1到32768),这大大降低了搜索空间。其次,时间戳可以通过网络延迟估算或直接从HTTP响应头中获取。最关键的是,Perl标准的`rand`函数使用线性同余生成器,其输出序列是可预测的,不适合用于安全上下文。攻击者可以通过获取一个或少量会话ID,或者在已知时间窗口内,遍历可能的PID和`rand`种子状态,暴力破解或计算出当前有效的会话ID。一旦预测成功,攻击者便可伪造Cookie进行会话劫持。