重大AWS漏洞 可導致S3遭受大規模攻擊
黑帽大會美國拉斯維加斯 – 2023年8月8日星期四 – 亞馬遜網路服務(AWS)存在六個嚴重漏洞,可能允許威脅者對組織進行遠端程式碼執行(RCE)、資料外洩、阻斷服務攻擊或甚至帳戶竊取。
Aqua公司的資深安全研究員Yakir Kadkoda告訴《黑暗閱讀》:「大多數漏洞被視為重大漏洞,是因為從攻擊者的角度來看,它們可以輕鬆獲得其他帳戶的存取權限。」
在本週三於拉斯維加斯舉行的黑帽大會上,Aqua Security的研究人員透露,他們發現了利用「Bucket Monopoly」和「Shadow Resources」漏洞的新攻擊向量。受影響的AWS服務包括CloudFormation、CodeStar、EMR、Glue、SageMaker和Service Catalog。
Aqua的研究人員於2月發現這些漏洞後,立即向AWS報告,AWS證實了這些問題,並於3月至6月期間分階段為各個服務推出緩解措施。然而,開源版本可能仍存在漏洞。
「Bucket Monopoly」:攻擊公開的AWS帳戶ID
研究人員首先發現了「Bucket Monopoly」攻擊方法,可大幅提高利用AWS S3儲存貯體漏洞的成功率。S3儲存貯體是用於管理物件(如檔案或影像)和儲存作業資料所需資源的線上儲存容器。
問題在於,S3儲存貯體的設計是使用可預測且易於猜測的AWS帳戶ID作為貯體名稱,而非使用雜湊或限定符為每個貯體名稱產生獨特的識別碼。
Kadkoda表示:「有時候,攻擊者僅需知道組織的公開AWS帳戶ID,而這目前並不被視為敏感資料,但我們建議組織應將其視為機密資訊。」
為了緩解這個問題,AWS已變更了預設設定。
他解釋說:「所有服務都已由AWS修復,不再自動建立貯體名稱。AWS現在會在所需的貯體名稱已存在時,加入隨機識別碼或序號。」
安全研究人員和AWS客戶長期以來一直在爭論AWS帳戶ID是否應該公開或保密。AWS警告客戶不要共享憑證,並建議他們謹慎使用和共享帳戶ID。然而,根據AWS關於帳戶身份的文件,帳戶ID「不被視為機密、敏感或機密資訊」。
Aqua的研究人員並不同意這種觀點。
Kadkoda在週五將發布的詳細技術報告中指出:「根據我們的研究,我們堅信帳戶ID應被視為機密,因為可能存在其他類似的漏洞利用,只要知道帳戶ID就可能實施。雖然普遍認為僅知道帳戶ID是不足以入侵帳戶的,但攻擊者仍可能利用它來收集有關您AWS帳戶的資訊等。」
AWS發言人拒絕就此置評,但表示AWS已知悉這項研究。
發言人說:「我們可以確認,我們已修復這個問題,所有服務都運作正常,客戶無需採取任何行動。」
Shadow Resources:隱藏的資源為攻擊者提供掩護
Kadkoda表示,他的團隊還發現了「Shadow Resources」攻擊向量,可以在帳戶擁有者不知情的情況下,建立AWS S3服務元件。
研究人員最初在AWS CloudFormation服務中發現了這個問題。攻擊者可以透過在未使用的AWS地理區域中,以與合法現有堆疊相同的名稱建立帳戶,從事資源佔位。一旦受害者在新區域中儲存工作負載,他們就會在不知情的情況下連線並使用受攻擊者控制的S3貯體。
這是因為在使用AWS管理主控台建立新堆疊時,AWS會自動建立S3貯體來儲存CloudFormation範本。該S3貯體的名稱在所有AWS區域中都是相同的,因此攻擊者可以猜測帳戶名稱並獲得存取權。
Aqua安全研究員Assaf Morag說:「我可以接管你的S3貯體,並植入惡意程式碼,取而代之。這是一件非常嚴重的事情,因為在某種程度上,透過遠端程式碼執行,你可以竊取世界上任何公司的帳戶。」
所有服務都需要設定檔,而AWS使用S3貯體作為其檔案系統來儲存設定。
Morag說:「在大多數情況下,這些設定都非常重要,因為它們是服務的指令。它可能是YAML檔案或服務在幕後需要使用的其他檔案。」
考慮到客戶可能擁有數百或數千個分散在世界各地區域的不同AWS帳戶,利用shadow服務漏洞的攻擊可能會造成重大影響,Morag強調。目前尚不清楚是否有受害者遭受此漏洞攻擊。
他說:「被攻擊或成為受害者的潛在風險可能是巨大的。」
開放原始碼專案部署於S3儲存貯體仍可能存在漏洞
雖然AWS已緩解影響其服務的漏洞,但Kadkoda警告,這些攻擊向量仍可能影響部署於AWS環境中的開放原始碼專案。他指出,許多開放原始碼專案會自動建立S3儲存貯體,或指示使用者部署它們。
Kadkoda說:「我們發現有許多開放原始碼專案容易受到此漏洞影響,因為它們在背後使用具有可預測名稱的儲存貯體。」
使用者應該檢查每個現有儲存貯體的名稱是否已在其他地方被使用,如果有的話,就應該將其重新命名。
在任何情況下,Kadkoda和Morag都建議使用者避免使用可預測或靜態識別碼來建立S3儲存貯體。相反地,他們應該為每個區域和帳戶建立一個具有唯一雜湊值或隨機識別碼的S3儲存貯體名稱,以防止攻擊者先佔用該名稱。