简介
远程 Amazon Linux 2 主机缺少安全更新。
描述
因此,该软件受到 ALAS2-2024-2502 公告中提及的多个漏洞影响。
在 OpenSSL 中发现空指针取消引用缺陷。远程攻击者若能控制 GENERAL_NAME_cmp 函数的参数,则可造成使用 OpenSSL 编译的应用程序崩溃,进而出现拒绝服务的情况。此漏洞最大的威胁在于系统可用性。(CVE-2020-1971)
在某些情况下,当输入长度接近平台上整数的最大允许长度时,对 EVP_CipherUpdate、EVP_EncryptUpdate 和 EVP_DecryptUpdate 的调用可能会导致输出长度参数溢出。在此类情况下,函数调用的返回值将为 1(表示成功),但输出长度值将为负。这可导致应用程序行为不正确或崩溃。
(CVE-2021-23840)
OpenSSL 公共 API 函数 X509_issuer_and_serial_hash() 尝试根据 X509 证书中包含的颁发者和序列号数据创建唯一哈希值。但其无法正确处理在分析颁发者字段期间可能发生的任何错误(如果颁发者字段是恶意构建的,就可能发生此类错误)。随后,这可能导致空指针取消引用和崩溃,进而可能导致拒绝服务攻击。(CVE-2021-23841)
在 OpenSSL 中发现一个缺陷。如果客户端发送 TLSv1.2 重新协商 ClientHello 并忽略 signature_algorithms 扩展,但包含 signature_algorithms_cert 扩展,则可导致服务器崩溃和拒绝服务攻击。此漏洞最大的威胁在于系统可用性。
(CVE-2021-3449)
在 OpenSSL 中发现一个缺陷。未启用对证书链中存在的证书启用其他安全检查的标记,从而允许绕过用于验证链中的证书是否为有效 CA 证书的确认步骤。此漏洞最主要的威胁对象是数据机密性和完整性。(CVE-2021-3450)
发现 OpenSSL 假设 ASN.1 字符串以 NUL 结尾。恶意执行者可能会使用特制的非 NUL 结尾的字符串来强制应用程序调用 OpenSSL 函数,故意攻击此缺陷,这可导致应用程序崩溃,进而造成拒绝服务攻击,还可能造成内存泄露。此漏洞对机密性和系统可用性威胁最大。(CVE-2021-3712)
用于计算模平方根的 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) (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 中发现一个缺陷。未在 `c_rehash` 脚本的其他位置发现 CVE-2022-1292 中的该问题,即被哈希的证书文件名可能会传递给通过 shell 执行的命令。某些操作系统以自动执行的方式分发此脚本。在这些操作系统中,攻击者可以使用脚本的特权来执行任意命令。(CVE-2022-2068)
在某些情况下,使用 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)
OpenSSL RSA 解密实现中存在基于时序的边信道,足以用于在 Bleichenbacher 式攻击中跨网络恢复密文。若要成功解密,攻击者必须要能够发送大量的测试消息进行解密。此问题会影响所有 RSA 填充模式:PKCS#1 v1.5、RSA-OEAP 和 RSASVE。(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)
在 OpenSSL 的 BIO_new_NDEF 函数中发现释放后使用漏洞。公共 API 函数 BIO_new_NDEF 是辅助函数,用于通过 BIO 对 ASN.1 数据作流式处理。该函数主要在 OpenSSL 内部用于为 SMIME、CMS 和 PKCS7 提供流式传输功能支持,但也可能由最终用户应用程序直接调用。该函数从调用程序接收 BIO,在其前面附加一个新的 BIO_f_asn1 filter BIO 以形成 BIO 链,然后将 BIO 链的新标头返回给调用程序。在某些情况下(例如 CMS Recipient 公钥无效时),新的 filter BIO 将被释放,而该函数则会返回表示失败的 NULL 结果。但是,在这种情况下,由于 BIO 链未正确清理,所以调用程序传递的 BIO 仍会保留指向之前已释放的 filter BIO 的内部指针。如果调用程序随后调用 BIO 上的 BIO_pop(),则会发生释放后使用,进而可能导致程序崩溃。(CVE-2023-0215)
在 OpenSSL 处理 X.509 GeneralName 中的 X.400 地址时发现了类型混淆漏洞。CRL 检查启用(即应用程序设置 X509_V_FLAG_CRL_CHECK 标记)后,攻击者利用此漏洞可向 memcmp 调用传递任意指针,让指针能够读取内存内容或引起拒绝服务。在大多数情况下,攻击者需要同时提供证书链和 CRL 才能发起攻击,而这两者都不需要具有有效的签名。如果攻击者仅控制其中一个输入,则另一个输入必须已包含作为 CRL 分发点的 X.400 地址,但这种情况并不常见。在此情形下,此漏洞可能只会影响本身已实现通过网络检索 CRL 功能的应用程序。(CVE-2023-0286)
在所有受支持的 OpenSSL 版本中发现一个与验证包含策略限制条件的 X.509 证书链相关的安全漏洞。攻击者可能通过创建触发指数级计算资源使用的恶意证书链来会利用此漏洞,进而对受影响的系统发起拒绝服务 (DoS) 攻击。策略处理默认处于禁用状态,但可以通过将 -policy 参数传递给命令行实用工具或者调用 X509_VERIFY_PARAM_set1_policies() 函数来启用。(CVE-2023-0464)
验证证书时使用非默认选项的应用程序可能容易受到恶意 CA 的攻击,从而规避某些检查。OpenSSL 以静默的方式忽略叶证书中的无效证书策略,并跳过该证书的其他证书策略检查。恶意 CA 可利用此缺陷故意断言证书策略无效,从而完全避开对证书的策略检查。策略处理默认处于禁用状态,但可以通过将 -policy 参数传递给命令行实用工具或者调用 X509_VERIFY_PARAM_set1_policies() 函数来启用。(CVE-2023-0465)
经记载,函数 X509_VERIFY_PARAM_add0_policy() 在执行证书验证时会隐式启用证书策略检查。但是,该函数的实现并未启用允许包含无效或不正确策略的证书通过证书验证的检查。
由于突然启用策略检查可能会中断现有部署,因此决定保留 X509_VERIFY_PARAM_add0_policy() 函数的现有行为。相反,需要 OpenSSL 执行证书策略检查的应用程序需要使用 X509_VERIFY_PARAM_set1_policies() 或通过使用 X509_V_FLAG_POLICY_CHECK 标记参数调用 X509_VERIFY_PARAM_set_flags() 来显式启用策略检查。
证书策略检查在 OpenSSL 中默认禁用,而在应用程序则不常用。
(CVE-2023-0466)
问题汇总:处理某些特制的 ASN.1 对象标识符或包含这些标识符的数据可能会非常缓慢。
影响汇总:对于直接使用 OBJ_obj2txt() 或使用无消息大小限制的任何 OpenSSL 子系统 OCSP、PKCS7/SMIME、CMS、CMP/CRMF 或 TS 的应用程序,它们在处理这些消息时可能会遇到明显的延迟,这可能会导致拒绝服务。
OBJECT IDENTIFIER 由一系列数字(子标识符)组成,其中大部分没有大小限制。OBJ_obj2txt() 可用于将以 DER 编码形式(使用 OpenSSL 类型 ASN1_OBJECT)提供的 ASN.1 OBJECT IDENTIFIER 转换为其规范的数值文本形式,即十进制形式的 OBJECT IDENTIFIER 的子标识符,并以句点分隔。
当 OBJECT IDENTIFIER 中的一个子标识符非常大时(即大得不可思议,占用了数十或数百 KiB),在文本中转换为十进制数字可能需要很长时间。时间复杂度为 O(n^2),其中“n”为以字节为单位的子标识符 (*)。
OpenSSL 3.0 版引入了对使用字符串形式的名称/标识符提取加密算法的支持。这包括使用规范数字文本形式的 OBJECT IDENTIFIER 作为提取算法的标识符。
可通过 ASN.1 结构 AlgorithmIdentifier 接收此类 OBJECT IDENTIFIER,该结构通常用于多种协议中,以指定应使用什么加密算法来签署或验证、加密或解密或摘要传递的数据。
直接使用不受信任的数据调用 OBJ_obj2txt() 的应用程序会受到任何 OpenSSL 版本的影响。如果仅用于显示目的,则严重性是低危。
在 OpenSSL 3.0 和更新版本中,该问题会影响子系统 OCSP、PKCS7/SMIME、CMS、CMP/CRMF 或 TS。它还会影响处理 X.509 证书的任何内容,包括验证其签名等简单内容。
但该问题对 TLS 的影响相对较小,因为 OpenSSL 的所有版本对对等机的证书链都有 100KiB 的限制。此外,这仅影响已明确启用客户端认证的客户端或服务器。
在 OpenSSL 1.1.1 和 1.0.2 版中,这仅影响显示不同的对象,例如 X.509 证书。我们假设此问题不会以造成拒绝服务的方式发生,因此这些版本被视为不受此问题的影响,不会引起关注,其严重性被归为低危。(CVE-2023-2650)
问题摘要:检查过长的 DH 密钥或参数时可能会非常缓慢。
影响摘要:使用函数 DH_check()、DH_check_ex() 或 EVP_PKEY_param_check() 检查 DH 密钥或 DH 参数的应用程序可能会遇到长时间的延迟。如果从不受信任的来源获取正在检查的密钥或参数,这可能导致拒绝服务。
DH_check() 函数会对 DH 参数执行各种检查,其中一项检查会确认模数('p' 参数)不是太大。尝试使用非常大的模数时速度会很慢,且 OpenSSL 通常不会使用长度超过 10,000 位的模数。
但是,DH_check() 函数会检查已提供密钥或参数的多个方面。
即使发现提供的模数值过大,其中某些检查也会使用提供的模数值。
调用 DH_check() 并提供从不受信任之来源获取的密钥或参数的应用程序可能容易遭受拒绝服务攻击。
函数 DH_check() 本身会被许多其他 OpenSSL 函数调用。调用任何其他函数的应用程序可能也同样会受到影响。其他受此影响的函数为 DH_check_ex() 和 EVP_PKEY_param_check()。
使用 -check 选项时,OpenSSL dhparam 和 pkeyparam 命令行应用程序容易受到攻击。
OpenSSL SSL/TLS 实现不受此问题影响。OpenSSL 3.0 和 3.1 FIPS 提供程序不受此问题影响。(CVE-2023-3446)
问题摘要:生成过长的 X9.42 DH 密钥或检查过长的 X9.42 DH 密钥或参数时可能会非常缓慢。
影响汇总:使用函数 DH_generate_key() 生成 X9.42 DH 密钥的应用程序可能会遇到长时间的延迟。同样,使用 DH_check_pub_key()、DH_check_pub_key_ex() 或 EVP_PKEY_public_check() 检查 X9.42 DH 密钥或 X9.42 DH 参数的应用程序可能会遇到长时间的延迟。接受检查的密钥或参数来自不受信任的来源时,这可能会造成拒绝服务。
虽然 DH_check() 会执行所有必要的检查(自 CVE-2023-3817 起),但 DH_check_pub_key() 并不进行任何此类检查,因此容易受到过大 P 和 Q 参数的影响。
同样,当 DH_generate_key() 对过大的 P 执行检查时,不会检查过大的 Q。
调用 DH_generate_key() 或 DH_check_pub_key() 并提供从不受信任之来源获取的密钥或参数的应用程序可能容易遭受拒绝服务攻击。
DH_generate_key() 和 DH_check_pub_key() 也会被许多其他 OpenSSL 函数调用。调用任何其他函数的应用程序也可能会受到类似影响。受此影响的其他函数有 DH_check_pub_key_ex()、EVP_PKEY_public_check() 和 EVP_PKEY_generate()。
使用 pubcheck 选项时的 OpenSSL pkey 命令行应用程序,以及 OpenSSL genpkey 命令行应用程序均容易受到攻击。
OpenSSL SSL/TLS 实现不受此问题影响。
OpenSSL 3.0 和 3.1 FIPS 提供程序不受此问题影响。(CVE-2023-5678)
Tenable 已直接从测试产品的安全公告中提取上述描述块。
请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。
解决方案
运行“yum update edk2”或“yum update --advisory ALAS2-2024-2502”以更新系统。
插件详情
文件名: al2_ALAS-2024-2502.nasl
代理: unix
支持的传感器: Agentless Assessment, Continuous Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Nessus Agent, Nessus
风险信息
矢量: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C
矢量: CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H
时间矢量: CVSS:3.0/E:P/RL:O/RC:C
漏洞信息
CPE: p-cpe:/a:amazon:linux:edk2-ovmf, cpe:/o:amazon:linux:2, p-cpe:/a:amazon:linux:edk2-debuginfo, p-cpe:/a:amazon:linux:edk2-aarch64, p-cpe:/a:amazon:linux:edk2-tools-doc, p-cpe:/a:amazon:linux:edk2-tools, p-cpe:/a:amazon:linux:edk2-tools-python
必需的 KB 项: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list
易利用性: Exploits are available
参考资料信息
CVE: CVE-2020-1971, CVE-2021-23840, CVE-2021-23841, CVE-2021-3449, CVE-2021-3450, CVE-2021-3712, CVE-2022-0778, CVE-2022-1292, CVE-2022-2068, CVE-2022-2097, CVE-2022-4304, CVE-2022-4450, CVE-2023-0215, CVE-2023-0286, CVE-2023-0464, CVE-2023-0465, CVE-2023-0466, CVE-2023-2650, CVE-2023-3446, CVE-2023-5678