Aqua Security Software
资安业者Aqua上周揭露了一个曾经存在于AWS Cloud Development Kit(AWS CDK)的安全漏洞,此一漏洞可能允许黑客接管CDK用户帐户,但在AWS收到Aqua通知之后,已于今年10月将其修补,并估计约有1%的CDK用户受到影响。
AWS CDK是个开源的基础设施即代码(Infrastructure as Code,IaC)开发框架,它让开发人员可通过自己熟悉的代码来定义云端基础设施,CDK可直接将这些代码转换成AWS可解释与部署的配置。
要使用AWS CDK之前,开发人员必须先初始化其环境,以替CDK的堆栈部署作准备,在此一进程中,AWS CDK会创建一个暂时的S3存储桶来存放部署资产,该存储桶的命名是唯一的、与用户帐户有关,而且是可预测的。因此,黑客只要知道目标对象的帐号ID,就能跨所有AWS区域替CDK创建暂存的S3存储桶。
在黑客取得AWS CDK用户的存储桶之后,有两个可能的情况,一是该存储桶属于新用户,根本尚未被创建,因此此一新用户在初始化期间要创建时就会出现错误,二是该存储桶属于旧用户,而且已被该用户移除(所以才能再被创建)。
就算AWS CDK用户手动删除了S3存储桶,但系统在部署时仍会存取该存储桶,因而让黑客有机可趁,修改用户上传的范本,进而获得目标帐户的完整控制权。
Aqua分析了38,560个AWS帐户,发现当中有2%安装了CDK,并有10%帐户及超过100个存储桶可能受到上述攻击,而AWS则说约有1%的CDK用户受到影响。
在今年6月收到Aqua的报告后,AWS即着手改善,包括在初始化时添增一个新条件,确保它只信任用户帐户中的S3存储桶,以避免CDK将数据发送到不属于初始化进程帐户拥有的存储桶;另也更新文档,鼓励用户客制化初始化时的资源,以客制化的Qualifier取代默认的hnb659fds。值得注意的是,使用今年7月发表的CDK v2.148.1或是更早的CDK版本仍然受到上述漏洞的影响。
Aqua建议开发人员应将自己的AWS帐户ID视为机密,以免遭到锁定或利用;使用IAM政策中的条件,来避免用户或服务存取不可靠的存储桶;以及不要使用可预测的存储桶名称。



2024-10-28
