描述
远程主机上安装的 OpenSSL 版本低于 3.0.19。因此,该软件受到 3.0.19 公告中提及的多个漏洞影响。
- 问题摘要:在未首先验证类型的情况下访问 ASN1_TYPE union 成员时,已签名 PKCS#7 数据的签名验证中存在类型混淆漏洞,这会在处理畸形 PKCS#7 数据时造成无效指针或空指针取消引用。影响摘要:对 PKCS#7 数据执行签名验证或直接调用 PKCS7_digest_from_attributes() 函数的应用程序在执行读取操作时,可能会取消引用无效指针或空指针,从而导致拒绝服务。函数 PKCS7_digest_from_attributes() 可在未验证消息摘要属性值类型的情况下访问该值。当类型不是 V_ASN1_OCTET_STRING 时,这将导致通过 ASN1_TYPE union 访问无效内存,从而造成崩溃。如要利用此漏洞,攻击者需要向执行验证操作的应用程序提供畸形的已签名 PKCS#7。利用此漏洞只会导致拒绝服务,PKCS7 API 为旧版 API,应用程序应改用 CMS API。出于这些原因,我们将该问题的严重性评级为“低危”。3.5、3.4、3.3 和 3.0 中的 FIPS 模块不受此问题的影响,因为 PKCS#7 解析实现位于 OpenSSL FIPS 模块边界之外。OpenSSL 3.6、3.5、3.4、3.3、3.0、1.1.1 和 1.0.2 容易受此问题影响。已在 OpenSSL 3.0.19 中修复(影响 3.0.0 之前的版本)。(CVE-2026-22796)
- 问题摘要:应用程序在处理畸形 PKCS#12 文件时,会发生无效指针或空指针取消引用。影响摘要:若应用程序处理畸形 PKCS#12 文件,就会在读取内存时造成取消引用无效指针或空指针,从而导致拒绝服务。PKCS#12 解析代码中存在类型混淆漏洞,此漏洞可导致在未首先验证类型的情况下访问 ASN1_TYPE union 成员,进而导致无效指针读取。该位置被限制为 1 字节地址空间,这意味着任何指针操纵尝试都只能将 0x00 与 0xFF 之间的地址作为目标。此范围对应的是零页面,而此页面在大多数现代操作系统上未被映射,这虽然一定会导致系统崩溃,但仅会造成拒绝服务。若要利用此问题,用户或应用程序还需处理恶意构建的 PKCS#12 文件。在应用程序中接受不可信的 PKCS#12 文件并不常见,因为这类文件通常用于存储私钥(本身就被定义为受信任)。出于这些原因,我们将该问题的严重性评级为“低危”。3.5、3.4、3.3 和 3.0 中的 FIPS 模块不受此问题的影响,因为 PKCS12 实现位于 OpenSSL FIPS 模块边界之外。OpenSSL 3.6、3.5、3.4、3.3、3.0 和 1.1.1 容易受此问题影响。OpenSSL 1.0.2 不受此问题影响。已在 OpenSSL 3.0.19 中修复(影响 3.0.0 之前的版本)。(CVE-2026-22795)
- 问题摘要:处理畸形 PKCS#12 文件可在 PKCS12_item_decrypt_d2i_ex() 函数中触发空指针取消引用。影响摘要:空指针取消引用可能会导致处理 PKCS#12 文件的应用程序崩溃,进而造成拒绝服务。PKCS12_item_decrypt_d2i_ex() 函数未在取消引用 oct 参数之前检查该参数是否为空。使用畸形 PKCS#12 文件从 PKCS12_unpack_p7encdata() 执行调用时,此参数可能为空,进而造成崩溃。该漏洞仅可导致拒绝服务,并且无法进一步造成代码执行或内存泄露。如要利用此问题,攻击者需要向处理相应文件的应用程序提供畸形的 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 和 1.0.2 容易受此问题影响。已在 OpenSSL 3.0.19 中修复(影响 3.0.0 之前的版本)。(CVE-2025-69421)
- 问题摘要:在未首先验证类型的情况下访问 ASN1_TYPE union 成员时,时间戳响应验证代码中存在类型混淆漏洞,这会在处理畸形时间戳响应文件时造成无效指针或空指针取消引用。影响摘要:若应用程序通过畸形时间戳响应调用 TS_RESP_verify_response(),就会在执行读取操作时导致取消引用无效指针或空指针,从而导致拒绝服务。函数 ossl_ess_get_signing_cert() 和 ossl_ess_get_signing_cert_v2() 可在未验证类型的情况下访问签名证书属性值。
当类型不是 V_ASN1_SEQUENCE 时,这将导致通过 ASN1_TYPE union 访问无效内存,从而造成崩溃。如要利用此漏洞,攻击者需要向验证时间戳响应的应用程序提供畸形的时间戳响应。TimeStamp 协议 (RFC 3161) 未得到广泛使用,且利用此漏洞的影响只有拒绝服务。出于这些原因,我们将该问题的严重性评级为“低危”。3.5、3.4、3.3 和 3.0 中的 FIPS 模块不受此问题的影响,因为时间戳响应位于 OpenSSL FIPS 模块边界之外。OpenSSL 3.6、3.5、3.4、3.3、3.0 和 1.1.1 容易受此问题影响。OpenSSL 1.0.2 不受此问题影响。已在 OpenSSL 3.0.19 中修复(影响 3.0.0 之前的版本)。(CVE-2025-69420)
- 问题摘要:在恶意构建的 PKCS#12 文件中调用 PKCS12_get_friendlyname() 函数时,如果该文件具有包含非 ASCII BMP 代码点的 BMPString (UTF-16BE) 友好名称,则可在分配的缓冲区之前触发单字节写入。影响摘要:越界写入漏洞可造成内存损坏,而内存损坏可导致多种后果,包括拒绝服务。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,并将此负值添加到输出长度却不进行验证,从而导致长度变为负值。然后,在负偏移处写入后续的尾部空字节,导致在堆分配的缓冲区之外进行写入。
在解析由攻击者控制的 PKCS#12 文件时,可以通过公开 PKCS12_get_friendlyname() API 利用此漏洞。尽管 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 不受此问题影响。已在 OpenSSL 3.0.19 中修复(影响 3.0.0 之前的版本)。(CVE-2025-69419)
请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。
解决方案
升级到 OpenSSL 版本 3.0.19 或更高版本。
插件详情
代理: windows, macosx, unix
配置: 启用全面检查 (optional)
支持的传感器: Continuous Assessment, Nessus Agent, Nessus
风险信息
矢量: CVSS2#AV:N/AC:L/Au:N/C:N/I:N/A:C
矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
时间矢量: CVSS:3.0/E:P/RL:O/RC:C
漏洞信息
CPE: cpe:/a:openssl:openssl
必需的 KB 项: installed_sw/OpenSSL
易利用性: Exploits are available