CVE-2026-31789OpenSSL在32位平台上将过大的OCTET STRING值转换为十六进制字符串时,存在堆缓冲区溢出漏洞。攻击者可利用特制的X.509证书触发该漏洞,导致服务崩溃或可能执行任意代码。
该漏洞源于OpenSSL在处理X.509证书扩展(如Subject Key Identifier或Authority Key Identifier)时的逻辑缺陷。当应用程序打印或记录证书内容,尝试将OCTET STRING值转换为十六进制字符串时,代码使用`输入长度 * 3`的公式来计算目标缓冲区的大小。在32位平台上,如果攻击者提供的证书中包含超过1GB的OCTET STRING数据,该乘法运算将触发整数回绕,导致系统分配一个远小于实际需求的缓冲区。随后的数据拷贝操作会写入超出缓冲区界限的数据,从而引发堆缓冲区溢出。尽管需要超大尺寸的证书限制了利用场景,但在允许上传或处理不受信任证书的32位应用中,该漏洞仍可能导致严重的拒绝服务或潜在的攻击者控制代码执行。