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