安全企业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政策中的条件,来避免用户或服务访问不可靠的存储桶;以及不要使用可预测的存储桶名称。