概 述
JFrog 安全研究团队正在追踪新披露的 OpenSSL 漏洞 CVE-2025-15467,这是一个可能导致远程代码执行(RCE)的堆栈溢出问题。虽然目前尚未有官方的 CVSS 评分,但 OpenSSL 已将其评为“高”严重级别,并且根据其特征,我们评估 NVD 可能会将其评为“严重”级别。
OpenSSL 最近修复了 12 个漏洞,其中包括 10 个低危漏洞、1 个中危漏洞和 1 个高危漏洞,但这个栈溢出漏洞因其潜在影响而格外引人注目。攻击者可以通过发送精心构造的 CMS AuthEnvelopedData 消息来利用此栈缓冲区溢出漏洞,该消息包含恶意构造的 AEAD 参数。
哪些人会受到 CVE-2025-15467 的影响?
以下 OpenSSL 版本存在漏洞:3.6, 3.5, 3.4, 3.3, 3.0。
版本 1.1.1 和 1.0.2 不受影响。
3.6、3.5、3.4、3.3 和 3.0 中的 FIPS 模块不受影响,因为 CMS 实现位于 FIPS 模块边界之外。
复现 CVE-2025-15467
JFrog 安全研究团队通过直接调用 CMS_Decrypt API 成功复现了该漏洞:

我们发现以下案例存在 CVE-2025-15467 漏洞:
1.调用以下任何 API 的基于 OpenSSL 的应用程序:
● CMS_RecipientInfo_decrypt
● CMS_decrypt_set1_pkey_and_peer
● CMS_decrypt_set1_pkey
● CMS_decrypt
● PKCS7_decrypt
● EVP_CIPHER_asn1_to_param
● CMS_EnvelopedData_decrypt
2.调用以下任何 OpenSSL 工具的应用程序:
● openssl cms
● openssl smime
请注意,这只是初步评估,可能还存在更多相关的攻击途径,请继续关注我们更新的博客。
如何解决 CVE-2025-15467 漏洞?
受影响的用户应按以下方式升级:
3.6 ➙ 3.6.1
3.56 ➙ 3.5.5
3.4 ➙ 3.4.4
3.3 ➙ 3.3.6
3.0 ➙ 3.0.19
CMS AuthEnvelopedData
CMS(Cryptographic Message Syntax,加密消息语法)是一种用于安全传输消息的标准,可确保消息的机密性、完整性和真实性。它广泛应用于诸如用于安全电子邮件通信的 S/MIME 等应用,以及文件存储和其他对数据保护要求极高的场景。
AuthEnvelopedData 是一种专门用于提供加密和身份验证的 CMS 结构。其主要特性包括:
1.保密性:消息内容经过加密,只有拥有相应密钥的预期接收者才能解密和读取。
2.完整性和身份验证:AuthEnvelopedData 包含多种机制,确保消息在传输过程中未被篡改。这通常通过消息认证码(MAC)或身份验证标签来实现,以确认数据完整且真实。
OpenSSL 中典型的 CMS AuthEnvelopedData 消息包含:
◎ 加密内容:需要通过加密保护的实际数据或消息。
◎ 接收者信息:关于预期接收者的详细信息,通常包括允许他们解密消息的加密密钥或证书。
◎ AEAD 密码参数:消息可能使用带有附加数据的认证加密(AEAD)方法,例如 AES-GCM,该方法在一个统一的过程中提供加密和完整性保护。
◎ 初始化向量(IV):许多加密算法必不可少的随机值,它确保即使对于相同的明文,每次加密操作也能生成唯一的密文。
当 OpenSSL 使用 AEAD 密码解析 CMS AuthEnvelopedData 结构时,它会提取 IV(在 ASN.1 参数中编码)以准备解密和真实性验证。
CVE-2025-15467 漏洞
该漏洞的产生是因为 CMS AuthEnvelopedData 结构中的初始化向量(IV)可能过大。OpenSSL 会将 IV 复制到固定大小的栈缓冲区中,而不会验证其长度,从而导致栈溢出,进而可能引发崩溃或远程代码执行(RCE)。
重要的是,溢出发生在任何身份验证之前,这意味着攻击者不需要有效的加密密钥。他们只需要构造一个包含过大初始化向量(IV)的恶意内容管理系统(CMS)消息即可触发溢出。
这使得使用 AEAD 密码解析不受信任的 CMS 或 PKCS#7 内容的应用程序和服务(例如,使用 AES-GCM 的 S/MIME AuthEnvelopedData)容易受到攻击。远程代码执行(RCE)的可利用性取决于平台和工具链的缓解措施,但基于栈的写入原语本身就构成重大风险。
从漏洞修复提交(https://github.com/openssl/openssl/commit/2c8f0e5fa9b6ee5508a0349e4572ddb74db5a703)中可以明显看出,OpenSSL 在复制 IV 时没有检查 IV 大小是否超过固定大小的堆栈缓冲区(EVP_MAX_IV_LENGTH)。

这个漏洞为什么很重要
此堆栈溢出发生在身份验证之前,因此在处理不受信任的 CMS 消息的场景中可被利用。虽然官方尚未发布 CVSS 评分,但鉴于远程代码执行(RCE)的风险,预计 NVD 至少会将此漏洞评为“高”严重性问题,甚至可能评为“严重”严重性问题。
使用受影响的 OpenSSL 版本的组织应立即打补丁,并审查处理 S/MIME 或 PKCS#7 内容的系统,以减轻潜在的攻击。
JFrog 安全研究团队将持续监控此漏洞,以了解其后续更新和潜在利用途径。受影响的版本已在 JFrog Xray 和 JFrog Catalog 数据库中标记,帮助我们的客户快速识别并降低风险。

关注“JFrog捷蛙”公众号
了解DevOps国际资讯
