AWS Ruby SDK S3加密客户端存在密钥承诺安全漏洞

本文详细分析了AWS SDK for Ruby的S3加密客户端中存在的密钥承诺(Key Commitment)安全漏洞CVE-2025-14762。当加密数据密钥存储在“指令文件”中时,可能遭受“隐形蝾螈”攻击,导致密钥被替换。文章解释了漏洞原理、影响版本、修复方案及CVSS评分。

漏洞详情

CVE ID: CVE-2025-14762 GHSA ID: GHSA-2xgq-q749-89fq 严重等级: 中等 CVSS 总体评分: 6.0

受影响的包及版本:

  • 包: aws-sdk-s3 (RubyGems)
  • 受影响版本: < 1.208.0
  • 已修复版本: 1.208.0

描述

概述 Ruby版S3加密客户端(S3EC)是一个开源客户端加密库,用于方便地向S3写入和读取加密记录。 当加密数据密钥(EDK)存储在“指令文件”(Instruction File)而非S3的元数据记录中时,EDK会暴露于“隐形蝾螈”攻击之下。这可能允许EDK被替换为新密钥。

影响 - 密钥承诺背景 存在一种加密特性,即在某些条件下,单个密文可以通过使用不同的加密密钥解密成两个不同的明文。为了解决这个问题,强加密方案使用所谓的“密钥承诺”,这是一个确保加密消息只能由原始加密所用的密钥解密的过程。

在旧版本的S3EC中,当客户同时使用称为“指令文件”的功能来存储EDK时,由于多个EDK可能与底层加密消息对象相关联,未实现密钥承诺。对于此类客户,利用缺乏密钥承诺的攻击是可能的。攻击者需要两样东西来利用此问题:(i)能够创建另一个恶意EDK,该密钥也能解密底层对象以产生期望的明文;(ii)有权将新的指令文件上传到S3存储桶,以替换用户使用S3EC放置在那里的现有指令文件。未来任何尝试使用S3EC解密底层加密消息的操作,都将无意中使用恶意EDK来产生有效的明文消息。

受影响版本: <= 1.207.0

修复方案 我们正在将“密钥承诺”的概念引入S3EC,将EDK加密绑定到密文以解决此问题。为了保持对传输中消息的兼容性,我们分两个版本发布修复:一个代码兼容的次要版本,可以读取具有密钥承诺的消息但不能写入;以及一个新的主要版本,可以同时读写具有密钥承诺的消息。为了获得最大安全性,建议客户升级到最新的主要版本:1.208.0 或更高版本。

变通方案 没有变通方案,请升级到建议的S3EC版本。

参考 如果客户对此公告有任何疑问或评论,AWS SDK for Ruby要求他们通过问题报告页面或直接发送电子邮件至 aws-security@amazon.com 联系AWS安全团队。请不要创建公开的GitHub问题。

参考链接:

CVSS v4 基础指标

可利用性指标:

  • 攻击向量: 网络
  • 攻击复杂度:
  • 攻击要求: 存在
  • 所需权限:
  • 用户交互:

脆弱系统影响指标:

  • 机密性: 无影响
  • 完整性: 高影响
  • 可用性: 无影响

后续系统影响指标:

  • 机密性: 无影响
  • 完整性: 无影响
  • 可用性: 无影响

CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

EPSS 分数

0.013% (第1百分位数) 此分数估计了此漏洞在未来30天内被利用的概率。数据由FIRST提供。

弱点

弱点: CWE-327 - 使用已破解或有风险的加密算法 描述:产品使用了已破解或有风险的加密算法或协议。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计