摘要:
openssl security update
安全等级: Medium
公告ID: KylinSec-SA-2024-3665
发布日期: 2024年7月19日
关联CVE: CVE-2024-5535
OpenSSL 项目是一个协作项目,旨在开发一个健壮、商业级、功能全面且开源的工具包,该工具包实现了安全套接层(SSL v2/v3)和传输层安全(TLS v1)协议,以及一个功能强大的通用加密库。该项目由全球志愿者社区管理,他们利用互联网进行沟通、规划和开发 OpenSSL 工具包及其相关文档。
安全修复:
问题概述:使用 OpenSSL API 函数 SSL_select_next_proto 并传入一个空的受支持客户端协议缓冲区时,可能会导致崩溃或将内存内容发送给对等方。
影响概述:缓冲区越界读取可能导致一系列潜在后果,如应用程序行为异常或崩溃。特别是,此问题可能导致最多 255 字节的任意私有内存数据被发送给对等方,从而导致机密性丧失。但是,只有那些直接以零长度受支持客户端协议列表调用 SSL_select_next_proto 函数的应用程序才会受到此问题的影响。这通常不是一个有效场景,也通常不在攻击者控制之下,但可能因调用应用程序中的配置或编程错误而意外发生。
OpenSSL API 函数 SSL_select_next_proto 通常由支持 ALPN(应用层协议协商)或 NPN(下一个协议协商)的 TLS 应用程序使用。NPN 是较旧的协议,从未标准化,并且已被弃用,转而支持 ALPN。我们认为 ALPN 的部署范围远广于 NPN。SSL_select_next_proto 函数接受来自服务器的协议列表和来自客户端的协议列表,并返回同时出现在服务器列表和客户端列表中的第一个协议。如果两个列表之间没有重叠,则返回客户端列表中的第一个项目。在任何情况下,它都会指示两个列表之间是否存在重叠。在 SSL_select_next_proto 被调用且客户端列表长度为零的情况下,它未能注意到这一条件,而是返回客户端列表指针之后的内存(并报告列表之间没有重叠)。
此函数通常从 ALPN 的服务器端应用程序回调或 NPN 的客户端应用程序回调中调用。在 ALPN 的情况下,客户端提供的协议列表由 libssl 保证其长度永远不会为零。服务器协议列表来自应用程序,并且通常也不应期望其长度为零。在这种情况下,如果 SSL_select_next_proto 函数按预期调用(将客户端提供的列表通过 client/client_len 参数传入),则应用程序不会受到此问题的影响。如果应用程序意外配置为零长度的服务器列表,并意外地将该零长度服务器列表作为 client/client_len 参数传入,并且未能正确处理“无重叠”响应(在 ALPN 中通常会导致握手失败),则它将受到此问题的影响。
在 NPN(下一个协议协商)的情况下,当没有重叠时,协议允许客户端机会性地选择一个协议。OpenSSL 在没有重叠的情况下返回客户端列表中的第一个协议以支持这一点。客户端协议列表来自应用程序,并且通常不应期望其长度为零。但是,如果 SSL_select_next_proto 函数意外地被调用且 client_len 为 0,则会返回一个无效的内存指针。如果应用程序将此输出用作机会性协议,则会发生机密性丧失。
此问题已被评估为低严重性,因为应用程序最有可能在使用 NPN 而不是 ALPN 时受到攻击,但 NPN 的使用并不广泛。此外,它还需要应用程序配置或编程错误。最后,这个问题通常不会受到攻击者的控制,因此主动利用的可能性不大。
OpenSSL 的 3.3、3.2、3.1 和 3.0 版本中的 FIPS 模块不受此问题影响。
由于此问题的严重性较低,我们目前不会发布 OpenSSL 的新版本。修复程序将在下一个版本发布时包含在内。(CVE-2024-5535)
cve名称 | 产品 | 组件 | 是否受影响 |
---|---|---|---|
CVE-2024-5535 | KY3.5.2 | openssl | Fixed |
CVE-2024-5535 | V6 | openssl | Fixed |
软件名称 | 架构 | 版本号 |
---|---|---|
openssl-help | noarch | 3.0.12-15.ks6 |
openssl | x86_64 | 3.0.12-15.ks6 |
openssl-devel | x86_64 | 3.0.12-15.ks6 |
openssl-libs | x86_64 | 3.0.12-15.ks6 |
openssl-perl | x86_64 | 3.0.12-15.ks6 |
openssl | aarch64 | 3.0.12-15.ks6 |
openssl-devel | aarch64 | 3.0.12-15.ks6 |
openssl-libs | aarch64 | 3.0.12-15.ks6 |
openssl-perl | aarch64 | 3.0.12-15.ks6 |
软件名称 | 架构 | 版本号 |
---|---|---|
openssl-help | noarch | 1.1.1m-37.ky3_5.kb1 |
openssl | x86_64 | 1.1.1m-37.ky3_5.kb1 |
openssl-devel | x86_64 | 1.1.1m-37.ky3_5.kb1 |
openssl-libs | x86_64 | 1.1.1m-37.ky3_5.kb1 |
openssl-perl | x86_64 | 1.1.1m-37.ky3_5.kb1 |
openssl | aarch64 | 1.1.1m-37.ky3_5.kb1 |
openssl-devel | aarch64 | 1.1.1m-37.ky3_5.kb1 |
openssl-libs | aarch64 | 1.1.1m-37.ky3_5.kb1 |
openssl-perl | aarch64 | 1.1.1m-37.ky3_5.kb1 |
方法一:下载安装包进行升级安装
1、通过下载链接下载需要升级的升级包保存,如 xxx.rpm
2、通过rpm命令升级,如 rpm -Uvh xxx.rpm
方法二:通过软件源进行升级安装
1、保持能够连接上互联网
2、通过yum命令升级指定的包,如 yum install 包名