安全公告
摘要:在 RELEASE.2018–07–10T01–42–11Z 版本中发现了并修复了 SSE-C 安全保证违规问题。
严重程度:低
受影响对象:所有使用 S3 SSE-C API 存储对象,并且至少对两个不同对象使用了相同客户端提供的密钥的用户。
建议用户采取的措施:建议所有用户将其 Minio 部署升级到最新版本。此问题已在版本 RELEASE.2018–07–10T01–42–11Z 中修复。用户必须重新上传其对象或使用 S3 SSE-C 密钥轮换。
例如
如果您在服务器 myminio
上的 bucket
中加密了所有对象,并且您的 256 位客户端密钥为 32byteslongsecretkeymustbegiven1
,则可以运行以下命令:
mc cp --recursive --encrypt-key "myminio/bucket=32byteslongsecretkeymustbegiven1" myminio/bucket myminio
这将修复 bucket
桶的问题。用户必须对所有加密的桶/对象使用 SSE-C 密钥轮换。有关更多详细信息,请运行:mc cp -h
。
描述:当用户请求使用客户提供的密钥 (SSE-C) 进行服务器端加密时,Minio 服务器会加密对象。我们的加密应保证加密对象无法修改,除非在 S3 分段上传的情况下丢弃部分内容(如 S3 规范所述)。但是,加密对象未与对象路径进行密码学绑定。这使得攻击者在知道两个对象使用相同的客户端提供的密钥加密**并且**完全访问存储后端的情况下,可以交换这两个对象。假设您有两个使用 SSE-C 加密的对象 my-bucket/object-1
和 my-bucket/object-2
,并且这两个对象都使用相同的客户端密钥进行加密,则此类攻击者可以替换 object-1
为 object-2
且不会被检测到。**但是,攻击者无法解密或修改对象本身。**
此问题是在内部安全审计中发现的,并且已提交补丁以通过密码学绑定加密对象到对象路径来修复此漏洞。这可以防止在不知道客户端提供的密钥的情况下修改对象路径。此补丁已得到审查和接受,并且已发布新版本。
攻击者可以在特殊条件下利用此问题向 S3 客户端呈现意外对象。