CVE-2026-41564CryptX Perl模块在0.088版本之前存在安全漏洞。该模块的Crypt::PK::*对象在构造函数中初始化PRNG状态,且未检测进程fork操作。当对象在fork前创建时,子进程会继承完全相同的PRNG状态,导致生成的随机数(包括密钥和签名Nonce)完全一致。攻击者可利用重用的Nonce从两个签名中恢复出私钥,严重影响预fork类型服务(如Starman)的安全性。
该漏洞源于CryptX库中的Crypt::PK::RSA、Crypt::PK::DSA等组件在对象构造时播种伪随机数生成器(PRNG)状态,但未实现fork安全机制。在Unix-like系统中,父进程调用fork()创建子进程时,子进程会复制父进程的内存空间。如果在fork之前创建了Crypt::PK对象,该对象内部的PRNG状态会被原样复制到所有子进程中。由于PRNG状态相同,各子进程在进行加密操作(如生成密钥对或计算签名)时,会产生完全相同的随机数。在DSA或ECDSA算法中,如果两次签名使用了相同的随机数(Nonce),攻击者可以通过简单的数学运算恢复出私钥。这种问题常见于使用prefork模型(如Starman)的Web服务器,若在启动阶段加载加密对象,所有工作进程都将共享该高风险状态。