我們正處于雲計算時代,虛拟服務器和存儲空間之類的資源常常在需要時通過部署腳本以編程方式提供。雖然啓用這類資産的過程很快,但删除它們時就沒有那麽簡單了,僅僅删除雲資産,就可能爲攻擊者提供安全漏洞的風險。
設想一下這個場景:你想要爲客戶們策辦一次特殊的節日活動,并決定創建一個微型網站來存放所有的促銷材料和注冊表單等内容。開發人員開始設計網站,在 AWS 或任何雲計算服務上申請配置一個新的虛拟服務器來托管它,并配置用來存儲網站數據的存儲桶。雲服務提供商将從其可重用 IP 地址池中爲你的 EC2 實例分配一個可公開訪問的 IP 地址,并在其域名下爲你的存儲桶分配一個主機名:bucket-name.s3.region-code.amazonaws.com,那樣你可以通過 API 訪問它。
用戶需要抵達你的網站和搜索引擎,機器人程序需要将該網站編入索引,所以下一步是在你的主域名上爲它創建一個子域名,并将其指向 IP 地址,這樣就可以從你的子域名訪問 Web 服務器。然後爲 S3 存儲桶創建子域,并創建 DNS CNAME 記錄,将其指向存儲桶的 AWS 主機名。
假設你還有一個移動應用程序向這個活動網站發送數據,那麽主機名也會進入到應用程序的代碼中。由于統計數據跟蹤或數據庫備份等原因,你還有其他内部應用程序和工具需要與該網站集成起來。
你現在創建的是處于不同位置的大量記錄,它們指向的對象實際上是臨時雲資源。如果你曾因那些雲資産已完成任務而删除它們,但卻并未删除開發人員和基礎設施工程師爲它們創建的記錄,你将面臨很大的風險。
攻擊者可以将你的子域名用于釣魚網站和分發惡意軟件
攻擊者可以從亞馬遜獲得相同的 IP 地址,他們可以創建一個網絡釣魚網站或惡意軟件分發網站,用相同的名稱注冊一個 S3 存儲桶,因爲他們在你應用程序的代碼中找到了一處引用,現在你的應用程序将敏感數據發送到攻擊者擁有的存儲桶。
這是安全工程師 Abdullah Al-Sultani 最近在舉行的 DefCamp 安全大會上演示的場景,他把這種攻擊稱爲 " 雲搶注 "(cloud squatting)。這并不僅限于 DNS 記錄,因爲一旦帳戶關閉,就重新分配資源和名稱的雲服務類型和數量非常廣泛。公司規模越大,影子雲記錄問題就越嚴重。
大企業更難識别雲搶注風險
Al-Sultani 在無意中發現了雲搶注,他的團隊很快意識到,試圖找到所有過期的記錄将是一項艱巨的任務,因爲他們企業在全球許多國家擁有超過 10 萬名員工以及開發和基礎設施團隊,它還爲不同地區的不同應用程序提供了數千個域名。
爲了解決這個問題,安全團隊構建了一個内部工具,該工具可以通過發送 HTTP 或 DNS 請求,叠代搜索該公司的所有域名,并自動測試所有 CNAME 記錄;識别指向屬于雲提供商(比如 AWS、Azure、谷歌雲和其他第三方服務提供商)的 IP 範圍的所有域和子域;然後檢查這些 IP 記錄是否仍然有效。幸運的是,該公司已經在内部數據庫中跟蹤雲提供商分配給其資産的 IP 地址,但許多公司可能不會進行這種類型的跟蹤。
Al-Sultani 不是第一個強調雲搶注的人。去年,賓夕法尼亞州立大學的一組研究人員分析了公共雲上 IP 重用的風險,他們在亞馬遜的美國東部地區部署了 300 萬台 EC2 服務器,這些服務器接收 150 萬個獨特的 IP 地址,約占該地區可用 IP 地址池的 56%。在進入到這些 IP 地址的流量中,研究人員發現了金融交易、GPS 定位數據以及個人身份信息。
源自第三方軟件的雲搶注風險
雲搶注問題的風險甚至可能源自第三方軟件組件。今年 6 月,有研究人員警告,攻擊者在掃描 npm 軟件包,查找對 S3 存儲桶的引用。如果攻擊者發現有不再存在的存儲桶,就注冊它,在許多情況下,這些軟件包的開發人員選擇使用 S3 存儲桶來存儲預編譯的二進制文件,這些文件在軟件包安裝期間下載并執行。因此,如果攻擊者重新注冊被丢棄的存儲桶,就可以在信任受影響的 npm 軟件包的用戶的系統上遠程執行代碼,因爲他們可以托管自己的惡意二進制文件。
今年早些時候 Aqua Security 的研究人員表明,已被删除或重命名的 GitHub 代碼庫可以被攻擊者重新注冊。如果應用程序或文檔仍然指向它們,它們就可以用來分發惡意軟件。研究人員将這種攻擊稱爲代碼庫劫持活動。
減輕雲搶注風險
IP 重用和 DNS 場景可以通過幾種方式來應對:使用來自雲提供商的保留 IP 地址(這意味着它們不會被釋放回到共享地址池中,直到明确釋放它們),将自己的 IP 地址傳輸到雲,在用戶不需要直接訪問服務器時在服務之間使用私有(内部)IP 地址,或者使用雲提供商提供的 IPv6 地址,因爲地址數量如此之大,以至于它們不太可能被重用。
企業還應該執行一項策略,防止将 IP 地址硬編碼到應用程序中,而是應該爲所有服務使用 DNS 名稱。還應定期維護這些記錄,并删除過時記錄,爲可以通過 DNS 來尋址提供了集中管理點,不必追蹤硬編碼的 IP 地址。