OpenSSL 3.0.0 < 3.0.8 多个漏洞

high Nessus 插件 ID 168829

简介

远程服务受到多个漏洞的影响。

描述

远程主机上安装的 OpenSSL 版本低于 3.0.8。因此,它受到拒绝服务 (DoS) 漏洞的影响。如果 X.509 证书包含畸形策略限制并且启用了策略处理,则会递归进行两次写入锁定。在某些操作系统上(最广泛的是:Windows),这将在受影响的进程挂起时造成拒绝服务。在公开服务器上启用的策略处理不被视为常见设置。将 -policy 参数传递给命令行实用工具,或者调用 X509_VERIFY_PARAM_add0_policy() 或 X509_VERIFY_PARAM_set1_policy() 函数,即可启用策略处理。

- 存在一个与 X.509 GeneralName 内的 X.400 地址处理相关的类型混淆漏洞。
X.400 地址被解析为 ASN1_STRING,但 GENERAL_NAME 的公共结构定义错误地将 x400Address 字段的类型指定为 ASN1_TYPE。随后,按照 OpenSSL 函数 GENERAL_NAME_cmp 的解读,此字段应为 ASN1_TYPE 而不是 ASN1_STRING。CRL 检查启用(即应用程序设置 X509_V_FLAG_CRL_CHECK 标记)后,攻击者利用此漏洞可向 memcmp 调用传递任意指针,让指针能够读取内存内容或引起拒绝服务。在大多数情况下,攻击者需要同时提供证书链和 CRL 才能发起攻击,而这两者都不需要具有有效的签名。如果攻击者仅控制其中一个输入,则另一个输入必须已包含作为 CRL 分发点的 X.400 地址,但这种情况并不常见。因此,此漏洞最有可能只影响本身已实现通过网络检索 CRL 功能的应用程序。(CVE-2023-0286)

- 如果 X.509 证书包含畸形策略限制并且启用了策略处理,则会递归进行两次写入锁定。在某些操作系统上(最广泛的是:Windows),这将在受影响的进程挂起时造成拒绝服务。在公开服务器上启用的策略处理不被视为常见设置。通过将“-policy”参数

传递给命令行实用程序或调用“X509_VERIFY_PARAM_set1_policies()”函数来启用策略处理。更新(2023 年 3 月 31 日):已根据 CVE-2023-0466 修正策略处理启用的描述。(CVE-2022-3996)

- 读取缓冲区溢出可在 X.509 证书验证中触发,在名称限制检查中更是如此。请注意,这会在证书链签名验证之后发生,并且需要 CA 签署恶意证书,或者要求应用程序在未能构建到受信任颁发者的路径的情况下继续证书验证。读取缓冲区溢出可能导致崩溃,进而导致拒绝服务攻击。理论上,该漏洞也可能导致私有内存内容(如私钥或敏感纯文本)泄露,尽管截至本公告发布之时,我们尚未发现任何会有效导致内存内容泄露的漏洞。在 TLS 客户端中,这可通过连接到恶意服务器来触发。在 TLS 服务器中,如果服务器请求客户端认证并连接了恶意客户端,就会触发此问题。(CVE-2022-4203)

- OpenSSL RSA 解密实现中存在一个基于时序的边信道,足以用于在 Bleichenbacher 式攻击中跨网络恢复明文。若要成功解密,攻击者必须能够发送大量的测试消息进行解密。
该漏洞影响所有 RSA 填充模式:PKCS#1 v1.5、RSA-OEAP 和 RSASVE。例如,在 TLS 连接中,客户端通常会使用 RSA 向服务器发送经过加密的预主密钥。如果攻击者能够发现客户端与服务器之间的真正连接,则可向服务器发送测试消息并记录消息处理用时。在发送足够多的消息后,攻击者可恢复用于原始连接的预主密钥,进而解密通过该连接发送的应用程序数据。(CVE-2022-4304)

- 函数 PEM_read_bio_ex() 会读取 BIO 中的 PEM 文件,并解析和解码名称(例如,
CERTIFICATE)、任何标头数据和负载数据。如果函数成功完成上述操作,则会使用指向包含相关解码数据的缓冲区的指针填充 name_out、header 和 data 参数。
调用程序负责释放这些缓冲区。构建的 PEM 文件中可能不会含有负载数据。在这种情况下,PEM_read_bio_ex() 将返回故障代码,但会使用指向已完成释放的缓冲区的指针填充标头参数。如果调用程序也释放了此缓冲区,则会发生双重释放。这很有可能会导致崩溃。如果攻击者能够提供恶意 PEM 文件以进行解析,则可实现拒绝服务攻击。函数 PEM_read_bio() 和 PEM_read() 是对 PEM_read_bio_ex() 的简单封装,因此这两个函数也会直接受到影响。这些函数也会受到许多其他 OpenSSL 函数的间接调用,包括同样容易受到攻击的 PEM_X509_INFO_read_bio_ex() 和 SSL_CTX_use_serverinfo_file()。有时,在 OpenSSL 内部使用这些函数不易受到攻击,因为如果 PEM_read_bio_ex() 返回故障代码,调用程序便不会释放标头参数。这些位置包括 PEM_read_bio_TYPE() 函数以及 OpenSSL 3.0 中引入的解码器。OpenSSL asn1parse 命令行应用程序也会受到此问题的影响。(CVE-2022-4450)

请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。

解决方案

升级到 OpenSSL 版本 3.0.8 或更高版本。

另见

https://www.cve.org/CVERecord?id=CVE-2023-0401

https://www.openssl.org/news/secadv/20230207.txt

https://www.openssl.org/policies/secpolicy.html

https://www.cve.org/CVERecord?id=CVE-2023-0286

https://www.cve.org/CVERecord?id=CVE-2023-0217

https://www.cve.org/CVERecord?id=CVE-2023-0216

https://www.cve.org/CVERecord?id=CVE-2023-0215

https://www.cve.org/CVERecord?id=CVE-2022-4450

https://www.cve.org/CVERecord?id=CVE-2022-4304

https://www.cve.org/CVERecord?id=CVE-2022-4203

插件详情

严重性: High

ID: 168829

文件名: openssl_3_0_8.nasl

版本: 1.17

类型: combined

代理: windows, macosx, unix

系列: Web Servers

发布时间: 2022/12/15

最近更新时间: 2024/1/8

支持的传感器: Nessus Agent, Nessus

风险信息

VPR

风险因素: Medium

分数: 6.0

CVSS v2

风险因素: High

基本分数: 7.1

时间分数: 5.3

矢量: CVSS2#AV:N/AC:H/Au:N/C:C/I:N/A:C

CVSS 分数来源: CVE-2023-0286

CVSS v3

风险因素: High

基本分数: 7.4

时间分数: 6.4

矢量: CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H

时间矢量: CVSS:3.0/E:U/RL:O/RC:C

漏洞信息

CPE: cpe:/a:openssl:openssl

必需的 KB 项: installed_sw/OpenSSL

易利用性: No known exploits are available

补丁发布日期: 2022/12/13

漏洞发布日期: 2022/12/13

参考资料信息

CVE: CVE-2022-3996, CVE-2022-4203, CVE-2022-4304, CVE-2022-4450, CVE-2023-0215, CVE-2023-0216, CVE-2023-0217, CVE-2023-0286, CVE-2023-0401

IAVA: 2022-A-0518-S