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