跳至主要內容
>_ITDITD網站資安平台

資安指南

子網域接管(dangling DNS):遺留的 DNS 紀錄如何讓攻擊者使用你的網域

刪除了雲端資源,卻留下 CNAME,任何人都能取得那個子網域,而你的伺服器完全沒被碰過。本文說明為什麼工作階段 Cookie 會外洩、為什麼憑證救不了你,以及能防止這件事的刪除順序。

發布於 2026-09-05 更新於 2026-10-04 最後核實 2026-09-05 閱讀時間 2 分鐘

有一天,你的某個子網域開始提供攻擊者的內容,而沒有人碰過你的伺服器。修補程式、驗證和監控在這裡都幫不上忙。原因不是入侵,而是你忘了刪除的東西。

實際上發生了什麼(三個階段)

  1. 1. 建立

    你建立一個帶有完整網域名稱(app-xxxx.<服務商網域>)的雲端資源,並在你的區域中新增 CNAME 紀錄,讓 sub.example.com 指向它。
  2. 2. 除役(只做了一半)

    不再需要時,資源被刪除了。這時 sub.example.com 的 CNAME 也應該一起移除,但沒有。它仍被當作有效的網域公告,卻指向不存在的東西:這就是懸置的 DNS 紀錄(dangling DNS)。
  3. 3. 接管

    攻擊者發現了這個懸置的子網域,並建立一個與你過去控制的相同 FQDN 的資源。從此之後,送往 sub.example.com 的流量都抵達他們的資源,內容由他們決定。

你的 DNS 區域(沒有變更)

sub.example.com  CNAME→  app-xxxx.provider.example

↓ 只有目標被移除

雲端資源:已刪除

這個名稱回到任何人都能取得的狀態

↓ 攻擊者建立同名資源

攻擊者的資源(他們的帳號)

sub.example.com 提供什麼由他們決定。你的伺服器從未被碰過

被刪除的只有資源。DNS 名稱還留著,流量會送到下一個用那個名稱建立資源的人那裡。

CNAME 是弱點,因為它指向的是名稱

A 紀錄指向位址,而 CNAME 指向名稱,在許多雲端服務上,那個名稱是先搶先贏的。你一放手,別人就能拿走。文件說 CNAME 紀錄「特別容易受到這種威脅」。同樣的道理也適用於 MX 紀錄,結果是寄往那個子網域的郵件可能被別人收走。

損害不只是一個看起來很假的頁面

文件列出的風險
失去子網域的控制權
你沒有管理的內容從你自己的網域提供,造成品牌損害和信任流失
收集 Cookie
網頁應用程式常透過萬用字元(*.example.com)把工作階段 Cookie 開放給子網域,任何子網域都能存取。被接管的子網域上一個逼真的頁面,就能從訪客那裡收集它們,包括標記為 Secure 的 Cookie
用於網路釣魚
因為網域查證起來是真的,從那裡發出的網路釣魚說服力高得多
進一步的攻擊
被當作同一個網域對待,就能升級成典型的攻擊:XSS、CSRF、繞過 CORS 等

最大的誤解:「有 HTTPS,我們有憑證」

文件把這點列為常見的誤解並加以否定:持有被接管子網域的攻擊者,可以申請並取得該子網域的有效憑證。網域驗證型憑證檢查的是申請者在那一刻是否控制著那個名稱,所以它不會偵測到控制權易手。

結果是,有效的憑證反而幫了攻擊者:出現鎖頭圖示、標記為 Secure 的 Cookie 照樣送出,假網站看起來更正當,而不是更可疑。請把憑證理解為「誰持有這個名稱」,而不是「我在跟誰說話」。

如何預防:把先移除 DNS 紀錄寫進程序

原因不是技術上很難,而是除役步驟的順序。如果先刪資源、之後才刪 DNS,子網域就可能在這段期間被接管。

會出事的順序

刪除資源 → 之後再處理 DNS → 忘了

這段期間 DNS 一直公告著一個運作中的正當子網域。監控不會告訴你有伺服器停了,因為根本沒有東西停掉。

安全的順序

先移除 DNS 紀錄 → 再刪除資源

文件建議對有自訂 DNS 項目的資源套用刪除鎖定,因為鎖定本身就提醒在資源除役前必須先移除對應;同時也指出,這類措施只有搭配內部教育才有效。

1

把「移除 DNS 項目」列入除役檢查清單

這是文件提出的第一個預防步驟:把它列入服務除役時的必要檢查項目,並教導開發人員在刪除資源時一併移除 DNS 紀錄。重點是不要把順序交給任何人的記憶。

2

讓紀錄的生命週期與資源綁定

有些服務商提供與資源本身綁定的紀錄類型(別名紀錄等)。刪除資源後,紀錄會變成空集合,所以不會留下指向不存在之物的紀錄。適用範圍限於部分服務,但能用的地方就用:它用設計而不是程序來防止忘記刪除紀錄。

3

要求證明擁有權

有些服務允許你為自訂網域發布用來驗證擁有權的 TXT 紀錄。有這種紀錄時,其他訂閱就無法驗證或接管那個自訂網域。它擋不住別人建立同名資源,但無法證明擁有權就收不到你的流量。只有能證明擁有權的人才能使用那個名稱,而不是先搶到的人。

4

定期檢查 DNS 區域:它存在嗎?是你的嗎?

文件提出兩項檢查:目標是否存在、是否為你所擁有。第二項最重要,因為**「有回應所以沒問題」不算檢查**,來自別人資源的回應正是這種攻擊。請維護一份把 FQDN 端點對應到負責人的服務目錄,並定期匯出,作為資產盤點的一部分。

5

發現時,不要只刪除紀錄就結束

修復步驟還要更進一步:更新應用程式碼中過時的子網域參照、調查是否發生了入侵,並找出除役時為什麼沒有移除紀錄,避免再次發生。特別是如果你的應用程式邏輯曾把 OAuth 認證資訊等機密或涉及隱私的資訊送到那個懸置的子網域,這些資料可能已經暴露給第三方。

本站的看法:暴露更常來自你停用的東西,而不是你建立的東西

資安討論往往集中在正在建立的東西上,而入侵卻常從已經退役、被遺留下來的東西開始。沒人在用的子網域、離職同事的帳號、為一次實驗建立的測試環境、解約後仍保留的會員資料,它們的共同點是「已經不用了」會悄悄地讓某樣東西脫離監控和審查。停用的東西在被刪除之前,仍然是資產。所以我們主張盤點的範圍要涵蓋你曾經建立的所有東西,而不只是目前在運作的。解約後才發現自己仍在服務商外洩範圍內的人,就是同一個問題的例子(主機服務商遭入侵時該怎麼做)。

資料來源(一手資料)

  • Microsoft「Prevent dangling DNS entries and avoid subdomain takeover」(Microsoft Learn/Azure 安全性基礎)— learn.microsoft.com(三個階段、CNAME 特別容易受害的原因、Cookie 收集與 MX 紀錄、對憑證誤解的否定,以及預防與修復步驟:刪除鎖定、別名紀錄、擁有權驗證、定期檢查,全部出自這份文件)

接著讀

FAQ

Q子網域被接管,代表我的伺服器被入侵了嗎?
A

不是,這正是麻煩的地方。被接管的是 DNS 指向的地方,而不是你的伺服器。如果你刪除了雲端資源,卻把 CNAME 紀錄留在 DNS 區域中,第三方只要在自己的訂閱下建立相同完整網域名稱的資源,原本要送到你子網域的流量就會抵達他們那裡。修補程式、驗證和監控在這裡都幫不上忙,因為它們都沒有參與其中。

QHTTPS 不能防止這件事嗎?有憑證應該就安全了吧?
A

不能,而且 Microsoft 的文件直接把這點列為常見的誤解:持有被接管子網域的人,可以申請並取得該子網域的有效憑證。網域驗證型憑證只證明持有者此刻控制著那個名稱,它不說明對方是誰,也不會偵測到控制權易手。有效的憑證反而對攻擊者有利,讓假網站看起來更正當。

Q如果只影響外觀,損害應該有限吧?
A

工作階段會外洩。網頁應用程式常透過萬用字元(*.example.com)把工作階段 Cookie 開放給子網域,這種情況下任何子網域都能讀取。如果能把使用者引導到被接管的子網域,即使是標記為 Secure 的 Cookie 也可能落入攻擊者手中。而懸置的 MX 紀錄,代表寄往那個子網域的郵件可能被別人收走。

Q實際上要怎麼預防?
A

把刪除順序變成程序和機制,而不是靠人記得。文件建議:把「移除 DNS 項目」列入服務除役時的必要檢查清單;對有自訂 DNS 項目的資源套用刪除鎖定,讓鎖定本身提醒必須先處理 DNS;在可用時使用生命週期與資源綁定的紀錄類型;並定期檢查 DNS 區域,確認每個目標都存在、而且是你擁有的。