在拉斯維加斯舉行的黑帽大會(Black Hat 2014)上,一位頗有名聲的研究人員稱安全專業(yè)人士并未對托管在AWS云基礎(chǔ)架構(gòu)上的應(yīng)用的安全性給予充分的關(guān)注,因而AWS用戶可能更容易遭受到攻擊:隱私信息暴露、模仿AWS EC2實(shí)例,甚或更糟。
黑帽大會上在星期三發(fā)表的一次演講中,咨詢公司Bonsai Information Security的創(chuàng)始人、開源w3af安全框架的領(lǐng)導(dǎo)者Andres Riancho詳細(xì)闡明了他為一個“將Web應(yīng)用托管在AWS基礎(chǔ)架構(gòu)上”的客戶提供滲透測試的全經(jīng)歷。
盡管之前Riancho并沒有太多關(guān)于亞馬遜云服務(wù)的經(jīng)驗(yàn),但他還是一針見血地指出AWS云基礎(chǔ)架構(gòu)有大量的潛在弱點(diǎn),且不當(dāng)?shù)牟僮鲿屵\(yùn)行其中的企業(yè)遭受滅頂之災(zāi)。
“如果你對安全感興趣,如果你在某種程度上為那些應(yīng)用的安全負(fù)責(zé),你需要了解到這點(diǎn)”,Riancho說道。
研究直指AWS弱點(diǎn)及誤配置 通過筆試,Riancho揭示稱對于與會者來說,首要之事就是要了解所有的AWS EC2實(shí)例存儲元數(shù)據(jù),其中涵蓋了Amazon Machine Images (AMI)的各個細(xì)節(jié)(主要用于生成帶有EC2的虛擬機(jī)),也包括由亞馬遜數(shù)據(jù)中心所管的實(shí)例的位置、本地IP地址以及更多其他信息。 Riancho很快發(fā)現(xiàn)存儲的元數(shù)據(jù)的每個bit就像面包屑一般,使通往其他重要云應(yīng)用數(shù)據(jù)的bit通道格外明顯,從那時(shí)起,他就開始這項(xiàng)研究項(xiàng)目,制作了一個名為“nimbostratus”的元數(shù)據(jù)抓取工具,他用該工具來追蹤為Web引用所使用的AWS云基礎(chǔ)架構(gòu)的運(yùn)行痕跡。
在將元數(shù)據(jù)從Web應(yīng)用服務(wù)器上下載下來后,Riancho稱他發(fā)現(xiàn)了一個AWS安全組已經(jīng)被用戶數(shù)據(jù)腳本配置了,以及一個能夠配置EC2實(shí)例的方法。從攻擊者角度來看,這樣的用戶數(shù)據(jù)腳本包涵的信息往往再好不過,因?yàn)樗麄儽仨氁涝谀膬嚎梢詸z索到個別Web應(yīng)用的源代碼。
Riancho稱,該客戶Web應(yīng)用的用戶數(shù)據(jù)腳本顯示了珍貴而有用的細(xì)節(jié),包括Web應(yīng)用所在的倉儲位置、允許訪問倉庫的密鑰和公鑰以及下載Web引用的源代碼。
之后,Riancho開始展示其他基于云的Web應(yīng)用的架構(gòu)。對于用EC2實(shí)例訪問諸如S3之類的服務(wù)來說,AWS提供實(shí)例配置文件,可在開始時(shí)共享帶有EC2實(shí)例的證書。盡管那些證書非常強(qiáng)大(Ps:能夠賦予攻擊者相同的權(quán)限,而EC2實(shí)例是其偷盜所有),但是卻與之前提及的元數(shù)據(jù)一起存放在Web應(yīng)用服務(wù)器上,Raincho表示。
有了這些有價(jià)值的證書,Riancho寫了另一個工具用以測試通過其新得到的證書可以獲取哪項(xiàng)AWS API功能。這一次,他發(fā)現(xiàn)的功能叫做“ListQueues”,經(jīng)過些許研究之后,他發(fā)現(xiàn)他能夠訪問到AWS Simple Queue Server(SQS)消息隊(duì)列系統(tǒng)。
更進(jìn)一步的調(diào)查讓Riancho了解到,他能夠向SQS隊(duì)列中寫消息,同時(shí)Celery(一項(xiàng)異步工作和任務(wù)隊(duì)列)在該環(huán)境下也能使用,盡管Celery自有文件發(fā)出警告——其閹割(pickle)序列化能力“始終存在風(fēng)險(xiǎn)”,且會將AWS應(yīng)用置于潛在的毀滅性的攻擊之中。
“再回到我們的目標(biāo)系統(tǒng),我們知道我們能夠在SQS隊(duì)里中寫東西、知道‘工作服務(wù)器’會將任何發(fā)送至SQS隊(duì)列的東西并行化、知道它使用了閹割(pickle)”,Riancho說道,“因此當(dāng)我以客戶的形式往SQS隊(duì)列里寫東西的時(shí)候,如果沒有以正確的形式寫的話,將會執(zhí)行任意命令。這確實(shí)太過草率了。”
從這一點(diǎn)來看,Riancho發(fā)現(xiàn)工作服務(wù)器的認(rèn)證是硬編碼的(一項(xiàng)安全禁忌),通過執(zhí)行相同的帶有工作服務(wù)器證書的枚舉過程。他能夠發(fā)現(xiàn)他的客戶部署在AWS上的一個MySQL數(shù)據(jù)庫。MySQL數(shù)據(jù)庫的一個特定行“1.rds.amazonaws.com”,讓他知道了數(shù)據(jù)庫位于Amazon Relational Database Service (RDS)。 Riancho未能卸掉MySQL數(shù)據(jù)庫,但是他發(fā)現(xiàn)一項(xiàng)誤配置足以允許其在AWS身份識別和入口管理API上執(zhí)行任何操作,使其可以生成一個擁有訪問數(shù)據(jù)庫特權(quán)的隨機(jī)用戶。
最后,藉由其高級特權(quán),Riancho稱其能夠通過RDS管理MySQL數(shù)據(jù)庫:對數(shù)據(jù)庫進(jìn)行快照、恢復(fù)RDS中的快照,然后設(shè)置根密碼用于恢復(fù)快照中所有與原始數(shù)據(jù)相同的信息。這讓他能夠觸及到更多的敏感信息,雖然惡意軟件之類的功能(malicious actor)可以輕易地改變原有RDS實(shí)例的密碼并有可能生成一個拒絕服務(wù)的情境。 Riancho警告稱這種特殊情況很大程度上并非AWS某部分出錯的結(jié)果,更確切地說,是Web應(yīng)用開發(fā)者們一系列失誤后導(dǎo)致的結(jié)果。這類失誤非常易犯且出錯率極高,除非企業(yè)安全研究人員和專業(yè)人士能夠更多地著眼于保護(hù)AWS基礎(chǔ)架構(gòu)上來。
在最后,Riancho總結(jié)道:“開發(fā)者引領(lǐng)前路,同時(shí)也需要我們共同的努力來幫助他們保護(hù)其賴以使用的亞馬遜基礎(chǔ)架構(gòu)。”