安全企業(yè)Aqua上周披露了一個(gè)曾經(jīng)存在于AWS Cloud Development Kit(AWS CDK)的安全漏洞,該漏洞可能允許黑客接管CDK用戶賬戶,但在AWS收到Aqua通知之后,已于今年10月將其修補(bǔ),并估計(jì)約有1%的CDK用戶受到影響。
AWS CDK是個(gè)開源的基礎(chǔ)設(shè)施即程序代碼(Infrastructure as Code,IaC)開發(fā)框架,它讓開發(fā)人員可通過自己熟悉的程序代碼來定義云計(jì)算基礎(chǔ)設(shè)施,CDK可直接將這些程序代碼轉(zhuǎn)換成AWS可解釋與部署的配置。
要使用AWS CDK之前,開發(fā)人員必須先初始化其環(huán)境,以替CDK的堆棧部署作準(zhǔn)備,在該程序中,AWS CDK會(huì)創(chuàng)建一個(gè)暫時(shí)的S3存儲(chǔ)桶來存放部署資產(chǎn),該存儲(chǔ)桶的命名是唯一的、與用戶賬戶有關(guān),而且是可預(yù)測(cè)的。因此,黑客只要知道目標(biāo)對(duì)象的賬號(hào)ID,就能跨所有AWS區(qū)域替CDK創(chuàng)建暫存的S3存儲(chǔ)桶。
在黑客取得AWS CDK用戶的存儲(chǔ)桶之后,有兩個(gè)可能的情況,一是該存儲(chǔ)桶屬于新用戶,根本尚未被創(chuàng)建,因此該新用戶在初始化期間要?jiǎng)?chuàng)建時(shí)就會(huì)出現(xiàn)錯(cuò)誤,二是該存儲(chǔ)桶屬于舊用戶,而且已被該用戶移除(所以才能再被創(chuàng)建)。
就算AWS CDK用戶手動(dòng)刪除了S3存儲(chǔ)桶,但系統(tǒng)在部署時(shí)仍會(huì)訪問該存儲(chǔ)桶,因而讓黑客有機(jī)可乘,修改用戶上傳的范本,進(jìn)而獲得目標(biāo)賬戶的完整控制權(quán)。
Aqua分析了38,560個(gè)AWS賬戶,發(fā)現(xiàn)其中有2%安裝了CDK,并有10%賬戶及超過100個(gè)存儲(chǔ)桶可能受到上述攻擊,而AWS則說約有1%的CDK用戶受到影響。
在今年6月收到Aqua的報(bào)告后,AWS即著手改善,包括在初始化時(shí)添增一個(gè)新條件,確保它只信任用戶賬戶中的S3存儲(chǔ)桶,以避免CDK將數(shù)據(jù)發(fā)送到不屬于初始化程序賬戶擁有的存儲(chǔ)桶;另也更新文件,鼓勵(lì)用戶定制化初始化時(shí)的資源,以定制化的Qualifier取代默認(rèn)的hnb659fds。值得注意的是,使用今年7月發(fā)布的CDK v2.148.1或是更早的CDK版本仍然受到上述漏洞的影響。
Aqua建議開發(fā)人員應(yīng)將自己的AWS賬戶ID視為機(jī)密,以免遭到鎖定或利用;使用IAM政策中的條件,來避免用戶或服務(wù)訪問不可靠的存儲(chǔ)桶;以及不要使用可預(yù)測(cè)的存儲(chǔ)桶名稱。