AWS 云开发工具漏洞可能导致 AWS 账户被彻底接管

图片

作者 | Sergio De Simone
译者 | 马可薇
策划 | Tina

安全公司 Aqua 在 AWS 云开发工具(CDK)中发现了一个新漏洞:手动删除 AWS S3 存储桶的对象可能导致黑客完全接管目标的 AWS 账户。虽然 AWS 已经修复了该漏洞,但如果使用的 CDK 为 v2.148.1 或更早版本,则仍需采取行动。

AWS 云开发工具(CDK)是一款 IaC 工具,允许开发人员使用 Python、TypeScript 或 JavaScript 定义云基础设施。

Aqua 安全研究人员 Ofek Itach 和 Yakir Kadkoda 解释说,该漏洞本质在于 CDK 在 S3 存储桶命名上过于随意,这些都是 CDK 用来存储那些根据用户需求创建 AWS 基础架构启动过程所需的文件,而其中的文件都存在了一个命名模式为 cdk-{Qualifier}-{Description}-{Account-ID}-{Region} ({cdk}-{限定符}-{描述}-{Account ID}-{地区})的 S3 存储桶中。

虽然用户可以在运行 CDK 时指定要使用的 Qualifier,但是,

由于许多用户在运行 cdk bootstrap 命令时都不会自定义限定符(qualifier),因此 S3 暂存桶的明明模式变得可以预测;桶的名称限定符默认值都是 hnb659fds,导致桶的名称更容易猜到了。

研究人员称,根据这种命名方式,攻击者可以提前给某个账号创建 S3 存储桶的 CDK bootstrap,从而导致账号的实际拥有者在试图使用 CDK bootstrap 时导致错误。

这种攻击本质来说是一种拒绝服务(DoS)攻击,更严重的还会导致账户被完全接管。而如果被入侵的 S3 存储桶即可读取也可写入,攻击者还可以注入管理员角色:

CDK 暂存桶中包含 CloudFormation 模板,如果攻击者能访问其他用户的 CDK 暂存桶,这些文件就可能被轻易篡改和回溯,从而在部署过程中将恶意资源注入受害者的账户。

具体来说,用户在启动 CDK S3 存储桶后再将其删除(比如为了减少正在使用的存储桶数量),就会导致这种情况。正如研究人员在文章中详解的一样,攻击者可能会“劫持”已发布的 CDK S3 存储桶,并设置权限和机制来拦截其所有者在日后所有运行 cdk bootstrap 或 cdk deploy 的任何尝试。

本质来说,如果有人删除了在引导过程中创建的 CDK S3 暂存桶,随后再次尝试使用 CDK,我们就能在目标账户中创建一个管理员角色。

在对近四万个账户的分析中,研究人员估计约有 1% 的 CDK 用户可能会受到这种形式的攻击。

虽然 AWS 通过更为严格的所有权检查修复了 v2.149.0 版本的 CDK,并更新了文档强调使用自定义限定符的重要性,但所有使用了任何旧版本引导 CDK 的用户,即使是更新了 CDK 也可能会受到漏洞攻击。此外,出了更新 CDK 之外,用户还需再次运行 cdk bootstrap 命令,或是为 FilePublishingRole CDK 角色定义 IAM 策略条件:cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}。

查看英文原文:

AWS Cloud Development Kit Vulnerability Enables Full AWS Account Takeover(https://www.infoq.com/news/2024/12/aws-cdk-full-account-takeover/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。