CVE-2025-15618Business::OnlinePayment::StoredTransaction Perl模块(0.01及以下版本)存在严重安全漏洞。该模块用于处理信用卡交易数据,但在生成加密密钥时使用了不安全的方法。具体而言,它仅对内置rand函数的一次调用结果进行MD5哈希来生成密钥。由于rand函数不具备密码学安全性,其输出极易被预测或暴力破解。攻击者可利用此缺陷推导出加密密钥,进而解密敏感的信用卡信息,导致严重的数据泄露风险。
该漏洞的核心在于密钥生成算法的弱随机性。Business::OnlinePayment::StoredTransaction在初始化时通过调用`md5_hex(rand())`来生成用于加密数据的密钥。Perl的内置rand函数通常不是密码学安全的伪随机数生成器(CSPRNG),其输出具有可预测性,且熵值较低。
攻击原理如下:
1. **低熵空间**:单次调用rand函数输出的可能值范围有限(通常取决于系统实现,可能只有2^15到2^31种可能性)。
2. **离线破解**:攻击者一旦获取到加密的信用卡数据,可以在本地编写脚本,遍历所有可能的rand输出,计算对应的MD5值,并尝试使用该值作为密钥解密数据。
3. **高成功率**:由于计算成本极低,攻击者能在短时间内匹配到正确的密钥,从而恢复出明文的信用卡号、有效期等敏感信息。该漏洞允许攻击者在无需认证和用户交互的情况下,通过网络获取加密数据并离线破解。