摘要:
edk2 security update
安全等级: High
公告ID: KylinSec-SA-2024-3623
发布日期: 2024年9月6日
关联CVE: CVE-2021-3712 CVE-2022-0778
EDK II 是一个现代化、功能丰富、跨平台的固件开发环境,专为 UEFI 和 PI 规范而设计。
安全修复:
在 OpenSSL 中,ASN.1 字符串内部表示为 ASN1_STRING 结构,该结构包含一个用于存储字符串数据的缓冲区和一个用于存储缓冲区长度的字段。这与以 NUL(0)字节结尾的常规 C 字符串表示法不同。尽管不是严格要求,但使用 OpenSSL 自带的“d2i”函数(以及其他类似的解析函数)解析的 ASN.1 字符串,以及使用 ASN1_STRING_set() 函数设置值的任何字符串,都会在 ASN1_STRING 结构中的字节数组后额外添加一个 NUL 终止符。然而,应用程序有可能通过直接设置 ASN1_STRING 数组中的“data”和“length”字段来直接构造有效的 ASN1_STRING 结构,而这些结构中的字节数组并未以 NUL 终止。使用 ASN1_STRING_set0() 函数也可能发生这种情况。已发现许多 OpenSSL 函数在打印 ASN.1 数据时假设 ASN1_STRING 字节数组会以 NUL 终止,尽管对于直接构造的字符串来说,这并不保证。当应用程序请求打印 ASN.1 结构,且该结构包含应用程序直接构造而未在“data”字段后添加 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 中也已修复(影响 1.0.2-1.0.2y)。(CVE-2021-3712)
BN_mod_sqrt() 函数用于计算模平方根,其中存在一个漏洞,会导致它在非素数模的情况下无限循环。在解析包含以压缩形式编码的椭圆曲线公钥或显式椭圆曲线参数(其基点也以压缩形式编码)的证书时,内部会使用此函数。通过构造具有无效显式曲线参数的证书,可以触发无限循环。由于证书解析发生在验证证书签名之前,因此任何解析外部提供的证书的进程都可能因此受到拒绝服务攻击。在解析精心构造的私钥时,也可能达到无限循环,因为私钥可以包含显式椭圆曲线参数。因此,以下情况存在漏洞:- TLS 客户端接收服务器证书- TLS 服务器接收客户端证书- 托管提供商从客户那里获取证书或私钥- 证书颁发机构解析来自订阅者的认证请求- 任何解析 ASN.1 椭圆曲线参数的其他内容以及任何攻击者可以控制参数值的其他使用 BN_mod_sqrt() 的应用程序都容易受到此拒绝服务问题的影响。在 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名称 | 产品 | 组件 | 是否受影响 |
---|---|---|---|
CVE-2022-0778 | V6 | edk2 | Unaffected |
方法一:下载安装包进行升级安装
1、通过下载链接下载需要升级的升级包保存,如 xxx.rpm
2、通过rpm命令升级,如 rpm -Uvh xxx.rpm
方法二:通过软件源进行升级安装
1、保持能够连接上互联网
2、通过yum命令升级指定的包,如 yum install 包名