今天小編分享的互聯網經驗:雲搶注:攻擊者如何利用已删除的雲資產進行攻擊,歡迎閱讀。
我們正處于雲計算時代,虛拟伺服器和存儲空間之類的資源常常在需要時通過部署腳本以編程方式提供。雖然啟用這類資產的過程很快,但删除它們時就沒有那麼簡單了,僅僅删除雲資產,就可能為攻擊者提供安全漏洞的風險。
設想一下這個場景:你想要為客戶們策辦一次特殊的節日活動,并決定創建一個微型網站來存放所有的促銷材料和系統資料庫單等内容。開發人員開始設計網站,在 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 地址。