佔用 S3 儲存桶名稱的行為終於終結了
AWS 為 S3 儲存桶引入了全新的帳戶命名空間規範,以防止攻擊者劫持可預測或先前已刪除的儲存桶名稱。這項安全性更新改變了所有新 S3 儲存桶的建議命名慣例,確保它們與特定的帳戶 ID 綁定。
背景
長期以來,AWS S3 的儲存桶命名規則採用全球唯一制,一旦使用者刪除儲存桶,該名稱便會立即釋出供任何人註冊。這種機制導致了所謂的「儲存桶佔用」(Bucketsquatting)風險,攻擊者可以預測並搶佔企業常用的命名模式,進而攔截敏感資料或干擾服務。為了徹底解決此問題,AWS 近期推出了全新的命名空間語法,透過將帳戶 ID 與區域資訊整合進名稱中,確保特定名稱僅能由原帳戶持有,正式宣告這項長達十年的安全漏洞走向終結。
社群觀點
針對這項更新,Hacker News 社群展開了熱烈討論,不少開發者對於 AWS 花費十年才解決此問題感到驚訝,認為這種基礎架構層級的缺陷理應在產品初期就獲得重視。部分留言者指出,Azure 與 Google Cloud 在處理命名空間上也有各自的挑戰,例如 Azure 的儲存帳戶名稱同樣面臨全球唯一的限制,且僅有 24 個字元的長度上限,這讓命名衝突與被佔用的風險在微軟平台上同樣嚴峻。社群普遍希望微軟能效法 AWS,引入以客戶為單位的獨立命名空間。
在技術實踐層面,許多資深工程師分享了過去為了規避此風險而採取的「自救」手段。一種常見的做法是將儲存桶名稱視為秘密,透過基礎設施即代碼(IaC)工具為名稱加上隨機雜湊值或鹽值,使攻擊者難以預測。然而,這種做法也引發了爭議,有觀點認為隨機化的名稱雖然安全,卻犧牲了可讀性與使用者體驗,對於需要面向使用者的資源來說並不友善。此外,也有人質疑將帳戶 ID 直接暴露在儲存桶名稱中是否會帶來新的安全隱患,但多數專家認為,單純持有帳戶 ID 並不足以發動攻擊,關鍵仍在於 IAM 權限控管是否落實。
對於 AWS 為何不直接禁止名稱重複使用,社群內也有深入的技術推測。有開發者分析,若要禁止所有歷史名稱的重用,AWS 必須維護一個極其龐大的全球歷史資料庫,這在跨區域同步與查詢延遲上會面臨巨大的工程挑戰。目前的命名空間方案被視為一種折衷且有效的路徑,雖然它無法溯及既往,但為新建立的資源提供了強大的保護。有趣的是,討論中也出現了一些陰謀論式的幽默觀點,笑稱這篇文章可能是由佔用者所寫,目的是誘使 AI 代理人盲目遵循建議去遷移資料,好讓佔用者能順勢接收釋出的舊有名稱。
延伸閱讀
- AWS 官方部落格:介紹帳戶層級與區域性命名空間的詳細技術說明。
- S3 Bucket Namesquatting:作者於 2019 年發表的原始文章,深入探討預測性命名模式如何被濫用。