GLSA-202210-02 : OpenSSL:多个漏洞

critical Nessus 插件 ID 166162

语言:

描述

远程主机受到 GLSA-202210-02 中所述漏洞的影响(OpenSSL:多个漏洞)

- Raccoon 攻击利用 TLS 规范中的一个缺陷,使攻击者能够计算使用基于 Diffie-Hellman (DH) 的密码套件的连接中的预主密钥。在这种情况下,这将导致攻击者能够窃听通过该 TLS 连接发送的所有加密通信。只有在实现重新使用跨多个 TLS 连接的 DH 机密时,攻击者才能利用此攻击。请注意,此问题仅影响 DH 加密套件,不会影响 ECDH 加密套件。
此问题影响 OpenSSL 1.0.2,该版本已不受支持,且无法再接收公共更新。OpenSSL 1.1.1 不受此问题影响。已在 OpenSSL 1.0.2w 中修复(影响 1.0.2-1.0.2v)。(CVE-2020-1968)

- 为了解密 SM2 加密的数据,应用程序应调用 API 函数 EVP_PKEY_decrypt()。通常,应用程序将会调用此函数两次。第一次:输入时,out 参数可以是 NULL,退出时,outlen 参数会填充保存解密后明文的缓冲区大小。然后,应用程序会分配大小充足的缓冲区,并再次调用 EVP_PKEY_decrypt(),但这次会为 out 参数传递非空值。SM2 解密代码的实现中存在一个错误,这意味着用于保存 EVP_PKEY_decrypt() 首次调用所返回明文的缓冲区大小的计算值可能小于第二次调用所需的实际大小。当应用程序通过过小的缓冲区第二次调用 EVP_PKEY_decrypt() 时,将会导致缓冲区溢出。能够向应用程序展示用于解密的 SM2 内容的恶意攻击者可使攻击者选择的数据溢出缓冲区多达 62 个字节,这会改变缓冲区之后保存的其他数据内容,从而可能改变应用程序行为或造成应用程序崩溃。缓冲区的位置取决于应用程序,但通常是在堆中分配。已在 OpenSSL 1.1.1l 中修复(影响 1.1.1-1.1.1k)。
(CVE-2021-3711)

- ASN.1 字符串在 OpenSSL 内表示为 ASN1_STRING 结构,该结构包含一个保存字符串数据的缓冲区和一个保存缓冲区长度的字段。此字符串与普通 C 字符串形成对比,后者表示为字符串数据的缓冲区,以 NUL(0) 字节结束。虽然不是严格要求,但使用 OpenSSL 的独有 d2i 函数(及其他类似解析函数)解析的 ASN.1 字符串,以及使用 ASN1_STRING_set() 函数设定值的任何字符串,都将额外使用 NUL 方式终止 ASN1_STRING 结构中的字节数组。但是,应用程序可能会直接构建有效的 ASN1_STRING 结构,该结构不会直接在 ASN1_STRING 数组中设置数据和长度字段,进而使用 NUL 终止字节数组。这种情况也会因使用 ASN1_STRING_set0() 函数发生。已经发现,打印 ASN.1 数据的多个 OpenSSL 函数均假设 ASN1_STRING 字节数组将使用 NUL 终止,但无法保证直接构建的字符串亦是如此。当应用程序请求打印 ASN.1 结构时,并且 ASN.1 结构包含由应用程序直接构建但并非使用 NUL 终止的 ASN1_STRING 时,将会出现读取缓冲区溢出。同样的情况也会在处理证书的名称限制期间出现(例如,证书直接由应用程序构建,而非通过 OpenSSL 解析函数加载,以及证书包含非 NUL 终止的 ASN1_STRING 结构)。这种情况也会出现在 X509_get1_email()、X509_REQ_get1_email() 和 X509_get1_ocsp() 函数中。如果恶意执行者使应用程序直接构建 ASN1_STRING,然后通过某个受影响的 OpenSSL 函数处理该字符串,此问题也会出现。此问题可能会导致崩溃(导致拒绝服务攻击)。
该问题还可能导致私有内存内容(例如私钥或敏感纯文本)泄露。已在 OpenSSL 1.1.1l 中修复(影响 1.1.1-1.1.1k)。已在 OpenSSL 1.0.2za (Affected 1.0.2-1.0.2y) 中修复。(CVE-2021-3712)

- 在 MIPS32 和 MIPS64 平方运算过程中存在一个进位传送缺陷。许多 EC 算法都会受到影响,包括一些 TLS 1.3 默认曲线。未详细分析影响,因为无法满足攻击的先决条件,并且涉及重复使用私钥。分析检测结果后发现,针对 RSA 和 DSA 的攻击难以执行,且可能性不高。由于推断私钥信息所需的大部分工作都可离线执行,针对 DH 的攻击则视为可行(尽管很难)。此类攻击所需的资源量极大。但是,若要成功对 TLS 发动攻击,服务器必须在多个客户端之间共享 DH 私钥(自 CVE-2016-0701 版本以来已无此选项)。OpenSSL 版本 1.0.2、1.1.1 和 3.0.0 会受此问题影响。2021 年 12 月 15 日发布的 1.1.1m 和 3.0.1 版本已解决此问题。对于 1.0.2 版本,此问题已在仅提供给高级支持客户的 git commit 6fc1aaaf3 中得到解决。git commit 6fc1aaaf3 将在发布 1.0.2zc 时予以提供。此问题仅影响 MIPS 平台上的 OpenSSL。已在 OpenSSL 3.0.1 中修复(影响 3.0.0)。已在 OpenSSL 1.1.1m 中修复(影响 1.1.1-1.1.1l)。已在 OpenSSL 1.0.2zc-dev 中修复(影响 1.0.2-1.0.2zb)。(CVE-2021-4160)

- 用于计算模平方根的 BN_mod_sqrt() 函数中包含一个缺陷,可导致其无限循环非质数模数。当在内部解析包含压缩形式的椭圆曲线公钥或具有以压缩形式编码的基点的显式椭圆曲线参数时,将会使用此函数。可以通过构建具有无效显式曲线参数的证书来触发无限循环。由于证书解析发生在证书签名验证之前,因此任何解析外部所提供证书的进程都可能遭受拒绝服务攻击。解析构建的私钥时也可能发生无限循环,因为其中可能包含显式椭圆曲线参数。因此,易受攻击的情况包括:- TLS 客户端使用服务器证书 - TLS 服务器使用客户端证书 - 从客户处获取证书或私钥的主机托管商 - 证书颁发机构解析用户的证书请求 - 解析 ASN.1 椭圆曲线参数以及使用 BN_mod_sqrt( ) 的任何其他应用程序,其中攻击者可控制易受此 DoS 问题影响的参数值。OpenSSL 1.0.2 版本在初始解析证书期间未解析公钥,这就使得触发无限循环变得稍难一些。但是,任何需要证书公钥的操作都将触发无限循环。特别是在证书签名验证期间,攻击者可使用自签名证书触发循环。OpenSSL 版本 1.0.2、1.1.1 和 3.0 会受此问题影响。2022 年 3 月 15 日发布的 1.1.1n 和 3.0.2 版本已解决此问题。已在 OpenSSL 3.0.2 中修复(影响 3.0.0、3.0.1)。已在 OpenSSL 1.1.1n 中修复(影响 1.1.1-1.1.1m)。已在 OpenSSL 1.0.2zd 中修复(影响 1.0.2-1.0.2zc)。(CVE-2022-0778)

- c_rehash 脚本未正确审查 shell 元字符以防止命令注入。某些操作系统以自动执行的方式分发此脚本。在此类操作系统中,攻击者可以使用脚本的权限执行任意命令。使用 c_rehash 脚本被视为过时,应由 OpenSSL rehash 命令行工具取代。
已在 OpenSSL 3.0.3 中修复(影响 3.0.0、3.0.1、3.0.2)。已在 OpenSSL 1.1.1o 中修复(影响 1.1.1-1.1.1n)。
已在 OpenSSL 1.0.2ze 中修复(影响 1.0.2-1.0.2zd)。(CVE-2022-1292)

- 用于清空哈希表的 OPENSSL_LH_flush() 函数包含一个缺陷,该缺陷会破坏被删除的哈希表条目占用的内存的重用。解码证书或密钥时使用此函数。如果长期限进程定期解码证书或密钥,其内存使用量将无限制地扩展,并且该进程可能被操作系统终止,从而导致拒绝服务。
遍历空哈希表条目也将花费越来越多的时间。通常,此类长期限进程可能是配置为接受客户端证书认证的 TLS 客户端或 TLS 服务器。OpenSSL 3.0 版本中添加了该函数,因此较早的版本不受此问题的影响。已在 OpenSSL 3.0.3 中修复(影响 3.0.0、3.0.1、3.0.2)。(CVE-2022-1473)

- 在某些情况下,使用 AES-NI 汇编优化实现的 32 位 x86 平台的 AES OCB 模式不会加密整个数据。这可能会显示内存中预先存在但未写入的 16 个字节数据。在就地加密的特殊情况下,将显示 16 个字节的纯文本。由于 OpenSSL 不支持用于 TLS 和 DTLS 的基于 OCB 的加密套件,因此它们都不会受到影响。已在 OpenSSL 3.0.5 中修复(影响 3.0.0-3.0.4)。在 OpenSSL 1.1.1q 中已修复(影响 1.1.1-1.1.1p)。(CVE-2022-2097)

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

解决方案

所有 OpenSSL 用户都应升级到最新版本:

# emerge --sync # emerge --ask --oneshot --verbose >=dev-libs/openssl-1.1.1q

另见

https://security.gentoo.org/glsa/202210-02

https://bugs.gentoo.org/show_bug.cgi?id=741570

https://bugs.gentoo.org/show_bug.cgi?id=809980

https://bugs.gentoo.org/show_bug.cgi?id=832339

https://bugs.gentoo.org/show_bug.cgi?id=835343

https://bugs.gentoo.org/show_bug.cgi?id=842489

https://bugs.gentoo.org/show_bug.cgi?id=856592

插件详情

严重性: Critical

ID: 166162

文件名: gentoo_GLSA-202210-02.nasl

版本: 1.4

类型: local

发布时间: 2022/10/16

最近更新时间: 2023/10/9

支持的传感器: Nessus

风险信息

VPR

风险因素: High

分数: 7.4

CVSS v2

风险因素: Critical

基本分数: 10

时间分数: 8.3

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

CVSS 分数来源: CVE-2022-1292

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 9.1

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

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

漏洞信息

CPE: cpe:/o:gentoo:linux, p-cpe:/a:gentoo:linux:openssl

必需的 KB 项: Host/local_checks_enabled, Host/Gentoo/release, Host/Gentoo/qpkg-list

可利用: true

易利用性: Exploits are available

补丁发布日期: 2022/10/16

漏洞发布日期: 2020/9/9

参考资料信息

CVE: CVE-2020-1968, CVE-2021-3711, CVE-2021-3712, CVE-2021-4160, CVE-2022-0778, CVE-2022-1292, CVE-2022-1473, CVE-2022-2097