CVE-2025-69419
PKCS12_get_friendlyname() UTF-8 转换中的越界写入
- 已发布
- 2026年1月27日
- 已更新
- 2026年5月12日
- 分配 CNA
- openssl
- 观察到的证据
- 2026年8月28日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N低 · 未来 30 天
- 百分位
- 46.0%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
问题摘要:在解析恶意构造的 PKCS#12 文件时,若该文件包含一个带有非 ASCII BMP 码点的 BMPString(UTF-16BE)友好名称,调用 PKCS12_get_friendlyname() 函数可能会在分配的缓冲区之前触发一个字节的写入。影响摘要:越界写入可能导致内存损坏,进而引发多种后果,包括拒绝服务。OPENSSL_uni2utf8() 函数对 PKCS#12 BMPString(UTF-16BE)执行两次转换以生成 UTF-8。在第二次转换中,当输出 UTF-8 字节时,辅助函数 bmp_to_utf8() 错误地将剩余的 UTF-16 源字节数作为目标缓冲区容量转发给 UTF8_putc()。对于高于 U+07FF 的 BMP 码点,UTF-8 需要三个字节,但转发的容量可能仅为两个字节。随后 UTF8_putc() 返回 -1,该负值未经校验便加到输出长度上,导致长度变为负数。接着,末尾的 NUL 终止字节被写入到负偏移位置,从而在堆分配的缓冲区之外发生写入。该漏洞可通过公开的 PKCS12_get_friendlyname() API 在解析攻击者控制的 PKCS#12 文件时被触发。虽然 PKCS12_parse() 使用了不同的代码路径从而避免了此问题,但 PKCS12_get_friendlyname() 直接调用了存在漏洞的函数。利用该漏洞需要攻击者提供一个恶意 PKCS#12 文件供应用程序解析,且攻击者只能触发在分配的缓冲区之前写入一个零字节。因此,根据我们的安全策略,该问题被评估为低严重性。3.6、3.5、3.4、3.3 和 3.0 中的 FIPS 模块不受此问题影响,因为 PKCS#12 实现位于 OpenSSL FIPS 模块边界之外。OpenSSL 3.6、3.5、3.4、3.3、3.0 和 1.1.1 受此问题影响。OpenSSL 1.0.2 不受此问题影响。
来源
1CVE-2025-69419 的最小概念验证复现器,该漏洞是 OpenSSL 的 PKCS12_get_friendlyname() 中由特制 BMPString 触发的堆缓冲区溢出。用于回归测试和安全研究。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。