CVE-2026-5080Perl的Dancer::Session::Abstract模块在1.3522及之前的版本中存在安全漏洞。该漏洞源于生成会话ID的方式不安全,其算法结合了绝对路径名的字符代码点、进程ID、时间戳以及内置的rand()函数调用结果。由于路径名可被猜测、进程ID范围有限、时间戳可推断且rand()函数仅使用32位种子,导致生成的会话ID具有高度可预测性。攻击者利用此漏洞可预测有效的会话ID,从而劫持用户会话并获取未授权的系统访问权限。
该漏洞的核心在于Dancer::Session::Abstract模块生成会话ID的算法存在严重的熵不足问题。具体而言,会话ID是通过将绝对路径名的字符代码点之和、进程ID、当前纪元时间以及调用内置rand()函数(返回0到9990亿之间的数字)的结果相加,并将该结果重复三次拼接而成。攻击者可以通过多种途径降低预测难度:首先,应用程序的绝对路径名通常可以通过标准安装位置或错误信息推断出来;其次,进程ID(PID)通常是一个相对较小的数值集合,且工作进程的PID往往是连续的;再次,纪元时间可以通过HTTP响应头(如Date)精确推断;最后,Perl内置的rand()函数仅使用32位种子,不具备密码学安全性,容易被逆向。通过收集这些信息,攻击者可以构建一个有限的搜索空间,并在合理的时间内暴力破解或直接计算出有效的会话ID。一旦成功,攻击者即可利用预测的ID冒充合法用户,绕过身份验证机制,接管用户会话。