.NET版Amazon S3加密客户端爆出密钥承诺漏洞CVE-2025-14759

亚马逊S3加密客户端.NET库存在一个与“密钥承诺”相关的安全漏洞,当加密数据密钥存储在“指令文件”中时,可能允许攻击者替换密钥,导致数据被恶意解密。受影响版本需升级至4.0.0或更高版本。

漏洞详情

CVE-2025-14759

摘要

S3 Encryption Client for .NET (S3EC) 是一个开源客户端加密库,用于方便地向S3写入和读取加密记录。 当加密数据密钥 (EDK) 存储在“指令文件”中而不是S3的元数据记录时,EDK会暴露于一种名为“隐形火蜥蜴”的攻击(https://eprint.iacr.org/2019/016),这可能允许用新的密钥替换EDK。

影响

背景 - 密钥承诺 这是一种密码学特性,在特定条件下,单个密文可以通过使用不同的加密密钥解密成两个不同的明文。为解决此问题,强加密方案使用所谓的“密钥承诺”,这个过程使得加密后的消息只能被一个密钥解密;即最初用于加密消息的那个密钥。

在S3EC的旧版本中,当客户也使用名为“指令文件”的功能来存储EDK时,由于一个底层的加密消息对象可能关联多个EDK,密钥承诺功能并未实现。对于此类客户,利用缺乏密钥承诺这一点的攻击是可能的。攻击者需要具备两个条件才能利用此问题:(i) 能够创建另一个能解密底层对象以产生期望明文的、恶意的EDK;(ii) 拥有向S3存储桶上传新指令文件以替换用户使用S3C放置的现有指令文件的权限。之后任何尝试使用S3EC解密底层加密消息的操作,都会在不知情的情况下使用恶意的EDK来生成有效的明文消息。

受影响版本:<= 3.1.0

补丁

亚马逊S3加密客户端正在S3EC中引入“密钥承诺”概念,将EDK与密文进行密码学绑定以解决此问题。为了保持对传输中消息的兼容性,修复将分两个版本发布。一个代码兼容的次要版本,可以读取具有密钥承诺的消息但无法写入;以及一个新的主版本,可以读写具有密钥承诺的消息。为获得最大安全性,客户被要求升级到最新的主版本:4.0.0 或更高版本

解决方法

没有解决方法,请升级到建议的S3EC版本。

参考

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

参考链接

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