避免 Azure App Service 中的子網域接管
對於經常建立及刪除許多資源的組織,子網域接管是常見的威脅。 當您有 DNS 記錄指向已取消佈建的 Azure 資源時,可能會發生子網域接管。 這類 DNS 記錄也稱為「無關聯 DNS」項目。 子網域接管可讓惡意執行者將組織網域的流量重新導向至執行惡意活動的網站。
子網域接管的風險包括:
- 無法控制子網域的內容
- 從無戒備訪客所收集的 Cookie
- 網路釣魚活動
- 傳統攻擊的進一步風險,例如 XSS、CSRF、CORS 略過
若要深入了解子網域接管,請參閱 Dangling DNS 與子網域接管。
Azure App Service 提供 Name Reservation Service 與網域驗證權杖,以防止子網域接管。
App Service 如何防止子網域接管
刪除 App Service 應用程式或 App Service 環境 (ASE),除非屬於原本擁有 DNS 之訂用帳戶的租用戶訂用帳戶,否則禁止立即重複使用對應的 DNS。 因此,客戶有足夠時間清除該 DNS 的任何關聯/指標,或藉由以相同名稱重新建立資源來回收 Azure 中的 DNS。 Azure App Service 預設會針對 "*.azurewebsites.net" 和 "*.appserviceenvironment.net" 資源啟用此行為,因此不需要任何客戶設定。
範例案例
範例:訂閱 'A' 與訂閱 'B' 是唯一屬於租用戶 'AB' 的訂閱。 訂閱 'A' 包含具有 DNS 名稱 'test'.azurewebsites.net' 的 App Service Web 應用程式 'test'。 刪除應用程式時,只有訂閱 'A' 或訂閱 'B' 能夠建立名為 'test' Web 應用程式,以立即重複使用 DNS 名稱 'test.azurewebsites.net'。 在資源刪除之後,不允許任何其他訂用帳戶宣告名稱。
如何防止子網域接管
建立 Azure App Service 的 DNS 項目時,請以網域驗證識別碼建立 asuid.{subdomain} TXT 記錄。 當此類 TXT 記錄存在時,除非將權杖驗證識別碼新增至 DNS 項目,否則其他 Azure 訂閱無法驗證自訂網域或加以接管。
這些記錄可防止從 CNAME 項目使用相同的名稱來建立另一個 App Service 應用程式。 只要無法證明網域名稱的所有權,威脅行為者就無法接收流量或控制內容。
在網站刪除之前,應更新 DNS 記錄,以確保不良執行者無法在刪除期間與重新建立之間接管網域。
若要取得網域驗證識別碼,請參閱對應自訂網域教學課程