CVE-2026-5087该漏洞存在于Perl模块PAGI::Middleware::Session::Store::Cookie 0.001003及之前版本中。模块在生成用于加密Cookie的初始化向量(IV)时使用了不安全的随机字节生成方式。虽然代码优先尝试从/dev/urandom读取数据,但在Windows等缺乏该设备的系统上失败时,会回退使用Perl内置的rand函数。由于rand函数不具备密码学安全性,生成的IV具有可预测性。攻击者利用这一缺陷可以更容易地解密存储在Cookie中的会话数据或篡改数据,从而严重威胁用户数据的机密性。
漏洞的根源在于PAGI::Middleware::Session::Store::Cookie模块在随机数生成逻辑上的设计缺陷。在源码的156-173行,模块首先尝试直接从/dev/urandom设备读取随机字节。然而,当此操作失败(例如在Windows系统上运行时),代码会发出警告并回退到使用Perl内置的rand()函数来填充随机字节缓冲区。rand()函数是一个伪随机数生成器,其输出是可预测的,不适用于加密安全场景。这些不安全的随机字节随后被用作加密算法的初始化向量(IV)。虽然IV本身通常不需要保密,但在某些加密模式下,IV的不可预测性对于保证密文的安全性至关重要。如果IV可被预测,攻击者可以通过选择密文攻击或位翻转攻击等方式,逐步推断出加密密钥或解密会话内容。值得注意的是,尽管警告信息建议用户安装Crypt::URandom,但受影响的代码并未实际集成该库,因此安装该模块无法缓解此漏洞。