CVE-2026-8507Crypt::OpenSSL::PKCS12是Perl语言中用于处理PKCS12文件的模块。在1.94及之前的版本中存在一个严重的越界写入漏洞。当解析特制的PKCS12文件时,如果SAFEBAG属性中包含大于等于1 GiB的OCTET STRING或BIT STRING,通过调用info()或info_as_hash()函数,将触发堆越界写入。该漏洞源于传递给Renew()函数的大小计算中存在有符号整数溢出,攻击者可利用此漏洞在目标系统上执行任意代码。
该漏洞的根本原因在于Crypt::OpenSSL::PKCS12模块在解析PKCS12文件结构时的安全检查不足。具体而言,当处理SAFEBAG对象中的属性字段时,如果遇到长度超过1 GiB(2^30字节)的OCTET STRING或BIT STRING,程序在计算内存分配大小时会发生有符号整数溢出。由于大小参数被传递给内存重分配函数Renew(),溢出导致分配的内存块远小于实际需要的大小。随后,当程序向该内存块复制数据时,会发生堆越界写入。这种内存破坏可以覆盖堆上的关键数据结构,从而绕过安全保护机制(如ASLR/DEP),最终使得攻击者能够获得远程代码执行(RCE)权限。