摘要:
compat-openssl11 security update
安全等级: Critical
公告ID: KylinSec-SA-2025-2448
发布日期: 2025年5月1日
关联CVE: CVE-2024-5535 CVE-2024-13176
OpenSSL 是一个功能强大、商业级且功能齐全的工具包,用于实现传输层安全(TLS)和安全套接层(SSL)协议。
安全修复:
问题概述:ECDSA 签名计算中存在一个时序侧信道漏洞,可能允许攻击者恢复私钥。
影响概述:ECDSA 签名计算中的时序侧信道可能使攻击者能够恢复私钥,但测量时序需要攻击者能够本地访问签名应用程序,或具备高速低延迟的网络连接。
当 ECDSA 随机数值的顶部字为零时,会出现约 300 纳秒的时序信号。这种情况仅在某些支持的椭圆曲线(尤其是 NIST P-521 曲线)上有显著发生概率。攻击者进程必须位于同一物理计算机上,或具备高速低延迟的网络连接才能测量此泄漏,因此该漏洞的严重性评级为低(CVE-2024-13176)。
问题概述:调用 OpenSSL API 函数 SSL_select_next_proto 时,如果支持的客户端协议缓冲区为空,可能导致崩溃或将内存内容发送至对端。
影响概述:缓冲区越界读取可能导致多种后果,包括应用程序异常行为或崩溃。具体而言,该漏洞可能导致最多 255 字节的任意内存私有数据被发送至对端,造成机密性泄露。但仅当应用程序直接调用 SSL_select_next_proto 函数且传入空客户端协议列表时才会受此问题影响。这种情况通常不属于合法场景,一般不受攻击者控制,但可能因调用应用程序的配置或编程错误意外触发。
OpenSSL API 函数 SSL_select_next_proto 通常被支持 ALPN(应用层协议协商) 或 NPN(下一代协议协商) 的 TLS 应用程序调用。NPN 为旧版协议,未经标准化且已被弃用,推荐使用 ALPN。目前 ALPN 的部署范围远大于 NPN。该函数接收服务端协议列表和客户端协议列表,返回两个列表中首个匹配的协议。若列表无交集,则返回客户端列表的首项。无论哪种情况,函数均会反馈列表是否存在交集。但当传入长度为零的客户端列表时,函数未能检测此状态,直接返回客户端列表指针后的内存内容(并错误报告列表无交集)。
该函数通常由 服务端应用程序的 ALPN 回调 或 客户端应用程序的 NPN 回调 触发。对于 ALPN 场景,libssl 保证客户端提供的协议列表长度绝不会为零;服务端协议列表来自应用程序,通常也不应出现空列表情况。
若应用程序按规范调用 SSL_select_next_proto(将客户端提供的列表正确传入 client/client_len 参数),则不会受此漏洞影响。但若同时满足以下三个异常条件,应用程序将存在风险:
1.错误配置了空服务端列表
2.误将该空列表传入 client/client_len 参数
3. 未正确处理"无交集"响应(ALPN 场景下本应导致握手失败)
对于 NPN 场景,协议允许客户端在无协议交集时自主选择协议。为此,OpenSSL 在无交集时会返回客户端列表的首项。客户端协议列表同样来自应用程序,通常不应为空。但若意外以 client_len=0 调用该函数,函数将返回无效内存指针。若应用程序将此错误输出用作自主选择协议,则会导致前述的机密数据泄露。
该漏洞被评估为低危级,原因如下:
1.使用场景受限:仅当应用程序使用已淘汰的NPN协议(而非主流ALPN协议)时可能受影响,而NPN当前部署范围极窄;
2.触发条件严苛:需同时存在应用程序配置错误或编程缺陷;
3.不可控性:攻击者通常无法主动操控漏洞触发条件,实际利用可能性极低。
FIPS模块不受影响:OpenSSL 3.3/3.2/3.1/3.0版本的FIPS认证模块均无此漏洞。
鉴于低危性质,OpenSSL团队暂不发布专项更新,相关修复将随下一个常规版本推送(CVE-2024-5535)。
cve名称 | 产品 | 组件 | 是否受影响 |
---|---|---|---|
CVE-2024-5535 | V6 | openssl | Fixed |
CVE-2024-13176 | V6 | edk2 | Fixed |
软件名称 | 架构 | 版本号 |
---|---|---|
compat-openssl11-devel | x86_64 | 1.1.1m-13.ks6 |
compat-openssl11-libs | x86_64 | 1.1.1m-13.ks6 |
compat-openssl11-devel | aarch64 | 1.1.1m-13.ks6 |
compat-openssl11-libs | aarch64 | 1.1.1m-13.ks6 |
方法一:下载安装包进行升级安装
1、通过下载链接下载需要升级的升级包保存,如 xxx.rpm
2、通过rpm命令升级,如 rpm -Uvh xxx.rpm
方法二:通过软件源进行升级安装
1、保持能够连接上互联网
2、通过yum命令升级指定的包,如 yum install 包名