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