CVE-2026-8721Crypt::OpenSSL::PKCS12 Perl模块在1.94及之前版本中存在严重安全漏洞。该漏洞源于底层代码使用C语言strlen函数处理密码,导致包含嵌入NULL字节的密码被意外截断。这使得二进制或KDF派生密码丢失大量熵值,极大降低了密码强度,攻击者可利用此缺陷更容易地暴力破解加密容器,造成敏感信息泄露。
该漏洞源于Crypt::OpenSSL::PKCS12 Perl模块的XS接口实现缺陷。在PKCS12.xs源码文件中,密码参数被声明为标准的char*类型。通过Perl的默认typemap机制,该参数被映射到SvPV_nolen,这导致Perl变量中存储的精确字符串长度信息被完全忽略。随后,底层的C代码或OpenSSL内部库调用strlen()函数来计算密码长度。由于strlen()函数以NULL字节(\0)作为字符串结束符,任何位于第一个NULL字节之后的密码数据都会被静默丢弃。对于使用二进制数据、KDF派生或HMAC派生的复杂密码,这种截断会导致有效密码长度大幅变短,熵值严重降低,使得原本高强度的密码实际上变为弱密码,攻击者更容易利用此缺陷破解加密容器并获取敏感信息。