AWS「儲存貯體獨佔」攻擊可能導致完全控制帳戶
黑帽子(Black Hat)研討會:研究人員今天在黑帽子研討會上公布了一項發現,亞馬遜雲端服務(AWS)至少有6項關鍵漏洞,可能讓攻擊者在不知情的情況下遠端執行程式碼、竊取資料,甚至接管使用者帳戶。
水手團隊(Nautilus team)屬於水手安全公司(Aqua Security),他們在題為「透過隱藏資源入侵AWS帳戶」(Breaching AWS Accounts Through Shadow Resources)的演講中,詳細說明了這些已被亞馬遜修補的漏洞。
不過,他們首先與《紀錄報》(The Register)討論了一個新發現:有心人士如何能預測AWS S3儲存貯體的名稱,並使用一種新方法稱為「儲存貯體獨佔」(Bucket Monopoly),將惡意程式碼預先載入儲存貯體中,等待目標組織不知情地執行它。
研究人員表示,這可能導致全球任何曾使用過這6項雲端服務的組織遭受「災難性」攻擊。
水手團隊資深資料分析師Assaf Morag對《紀錄報》說:「最終,任何能夠建立管理員使用者並實際接管帳戶的漏洞都是危險的,後果可能會讓組織陷入癱瘓。」
儘管亞馬遜已修補這6項服務(CloudFormation、Glue、EMR、SageMaker、ServiceCatalog和CodeStar)的漏洞,但類似的問題可能仍存在於其他AWS產品和開源專案中,因為許多專案都使用S3儲存貯體進行實作。
「類似網路霸佔的做法,但在更高層級」
這些漏洞源自於可預測的S3儲存貯體名稱。當組織在新的區域首次使用這6項服務之一時,AWS會自動建立一個S3儲存貯體,其名稱在所有AWS區域中都是相同的(除了區域部分),並由服務名稱、AWS帳戶ID、隨機12字元雜湊值和區域名稱組成。
一旦建立新的儲存貯體,其名稱就是獨一無二的,沒有人能再建立同名的儲存貯體。
例如,在us-east-1區域使用CloudFormation的AWS帳戶,可能會有這樣的儲存貯體名稱:cf-templates-123abcdefghi-us-east-1
如果同一個帳戶在另一個區域(如eu-west-2)使用CloudFormation,AWS會自動建立新的儲存貯體,名稱為:cf-templates-123abcdefghi-eu-west-2
AWS總共有33個地理區域。
首先攻擊CloudFormation
水手團隊首先針對CloudFormation,想看看攻擊者是否能夠猜出CloudFormation儲存貯體的名稱,並在受害者之前在不同區域建立一個新的儲存貯體?答案當然是可以的。
攻擊者可以建立一個看似真實的虛假儲存貯體,當受害者嘗試在另一個區域使用CloudFormation時,他們會看到這個儲存貯體並認為是自己的。
與此同時,攻擊者可能已經在其中填入惡意內容,這些內容將被注入到與該儲存貯體相關的任何內容中。或者,他們可以坐視不理,等待受害者將敏感檔案放入儲存貯體,然後就能完全存取這些資料,並進行其他惡意行為。
Morag告訴《紀錄報》:「這是一個非常實際的情況。你只需要獲得公司的帳戶ID,如果對公司進行簡短的威脅情報收集,就能找到它。」
他補充說,腳本小子或技術能力有限的詐騙者無法做到這一點,「但我們說的是國家資助的高級攻擊者,更專業的攻擊者。」
最大的障礙在於確定受害者的雜湊值,這對每個帳戶都是獨一無二的,但在所有區域都是相同的。它由12個字元組成,包括字母和數字,根據Aqua的說法,可能的組合高達4,738,381,338,321,616,896種,因此無法猜測或暴力破解。
前Aqua研究員Michael Katchinskiy表示:”可能的組合數量龐大,因此我們採取了另一種方式。”這涉及使用GitHub正則表達式和Sourcegraph搜尋,並搜刮開放式資料庫,尋找洩漏的雜湊值,”而我們發現了相當多的洩漏。”
在本週五,Aqua團隊將發表一份有關各種AWS服務中潛在漏洞和可能的攻擊手法的技術分析報告,請密切關注。但以下是該威脅情報團隊所說,只要知道目標AWS帳戶的CloudFormation雜湊值部分,攻擊者就能做到的事情。
第一種情況是Ian Mckay在較早前的一篇關於濫用S3儲存貯體可預測命名機制的部落格文章中所稱的”S3儲存貯體域名佔用(S3 Bucket Namesquatting)”。當受害者嘗試在不同區域部署新的CloudFormation堆疊時,發現預期的儲存貯體名稱已被攻擊者佔用。CloudFormation會傳回錯誤訊息,因為儲存貯體名稱已被使用,而受害者無法使用CloudFormation的”上傳範本檔案”功能。
研究人員將此視為阻斷服務攻擊,部分原因是S3儲存貯體的預設設定會阻擋所有公共存取,因此受害者無法對攻擊者控制的儲存貯體執行任何操作。
但還有更多
不過,為了做更加惡劣的事情,罪犯可以更改S3儲存貯體的設定,使其可公開存取。此攻擊還需要撰寫允許受害者服務讀取和寫入攻擊者儲存貯體的寬鬆政策。
Aqua資深安全研究員Yakir Kadkoda告訴《The Register》:”然後儲存貯體就靜靜地等待,直到易受攻擊的服務將一些資料寫入其中。”
在此情況下,受害組織嘗試在新區域建立S3儲存貯體並將範本檔案上傳至CloudFormation。該儲存貯體已存在,並且由於其寬鬆的政策,受害者帳戶信任它並可將檔案寫入其中 – 包括包含使用者憑證和其他敏感資訊的範本 – 導致資訊洩漏攻擊。
最後,在一種可能對受害組織造成非常嚴重後果的情況下,Aqua開發了一個概念驗證,罪犯利用CloudFormation中的”檢查時間到使用時間(TOCTOU)”問題,在執行範本之前對其進行修改,並建立管理員角色。
CloudFormation是Aqua嘗試透過濫用S3儲存貯體來利用的第一個AWS服務 – 他們成功在GitHub上發現了暴露的雜湊值。但在審視了”數十種”其他服務並使用類似的攻擊方法後,他們總共發現了六種易受攻擊的雲端服務。
再次提醒,您可以在即將發佈的研究報告中閱讀這六種服務的詳細內容。但另一種特別可怕的情況是,可能允許惡意分子在AWS Glue中注入程式碼,導致遠端程式碼執行。Glue是一項資料整合服務,可自動化分析和機器學習的萃取、轉換和載入(ETL)流程。
SageMaker(AWS用於大規模訓練和部署機器學習模型的服務)中類似的命名機制也可被濫用來操縱資料並暴露用於訓練ML模型的敏感資料。
Katchinskiy說:”就像一顆地雷。”
對於這些發現,亞馬遜發言人告訴我們:”AWS已獲知這項研究。我們可以確認已修復此問題,所有服務都運作正常,客戶無需採取任何行動。”