サブドメインテイクオーバーの仕組みと対策。宙に浮いたDNSレコードを残さない廃止手順
対象の目安: Webサービス/クラウドの運用・実務

クラウドでストレージやCDN、App ServiceといったサービスをFQDN(完全修飾ドメイン名)付きで作り、自社のサブドメインからCNAMEで向けて公開する運用は広く使われています。問題が起きやすいのは、その資源を使い終えて削除するときです。資源本体を消したのに、そこを指していたDNSレコードを消し忘れると、サブドメインが実体のない外部FQDNを指したまま宙に浮きます。この状態を攻撃者に見つけられ、同名の資源を自分のアカウントで作り直されると、サブドメイン宛ての通信が攻撃者の側へ流れてしまいます。
この記事は、Webサービスやクラウドを運用する担当者に向けて、サブドメインテイクオーバー(サブドメインの乗っ取り)がなぜ成立するのかと、廃止手順の順序を中心にした恒久対策を整理します。検証は自組織が管理するドメインに対してのみ行う前提とし、攻撃の再現手順やツールの使い方は扱いません。記載する内容は執筆時点で一次情報から確認できた範囲にとどめます。
サブドメインテイクオーバーとは
サブドメインテイクオーバーは、あるサブドメインのDNSレコードが、すでに廃止した外部資源のFQDNを指したまま残っている状態から始まります。とくにCNAMEレコードがこの弱点を抱えやすく、Microsoftはこうした状態を宙に浮いたDNSレコード、いわゆるdangling DNSと呼んでいます。DNSの応答としては生きているように見えるのに、その先にある資源はもう存在しない、という食い違いが生まれます。
攻撃者が同じFQDNの資源を自分のアカウントで作り直すと、そのサブドメイン宛ての通信は作り直された資源へ届きます。結果として、正規のブランドのサブドメインでありながら、表示される中身は攻撃者が支配するものに置き換わります。OWASPも、非稼働の資源や外部サービスを指すレコードが乗っ取りの起点になると説明しています。
乗っ取りが成立する3段階
Microsoftは、乗っ取りに至る典型的な流れを3つの段階で示しています。順を追うと、どこで手を打てば止められるかが見えてきます。
1段階目は作成です。運用側があるクラウド資源をFQDN付きで用意し、自社のサブドメインのCNAMEをそのFQDNへ向けます。ここではサブドメインが正しく自社の資源へつながっており、問題はありません。
2段階目は廃止です。その資源が不要になって削除されるとき、本来ならCNAMEもDNSゾーンから消す必要があります。ここでCNAMEを消し忘れると、稼働していない先を指したまま広告され続けるレコード、すなわち宙に浮いたレコードが残ります。
3段階目が乗っ取りです。攻撃者が宙に浮いたサブドメインを見つけ、以前と同じFQDNの資源を自分のアカウントで確保します。これで、そのサブドメインへ届く通信は攻撃者の資源へ流れ込み、表示内容の支配権が移ります。止められる分岐点は2段階目にあり、廃止のときにDNSを確実に消せば、3段階目は成立しません。
クッキー窃取とSSLの誤解
乗っ取りの被害はサブドメインの見た目が変わることだけにとどまりません。Microsoftが挙げる代表的なリスクの一つがクッキーの窃取です。Webアプリでは、セッションクッキーを *.example.com のように親ドメイン全体へ共有する設計がよく使われます。この場合、どのサブドメインからでもそのクッキーを読める状態になっているため、乗っ取られたサブドメインを踏み台に、利用者のクッキーを集められてしまいます。
ここで注意したいのが、SSLがあるから安全という思い込みです。攻撃者は乗っ取ったサブドメインに対して、正規のSSL証明書を自分で取得できます。証明書が有効に見えるほど、利用者からは本物らしく映り、secure属性の付いたクッキーにも手が届いてしまいます。証明書の有無は、そのサブドメインを誰が支配しているかを保証するものではありません。
フィッシングと別攻撃への踏み台
正規に見えるサブドメインは、フィッシングの舞台としても悪用されます。Microsoftは、信頼されたブランドのサブドメインを使った偽サイトに加え、MXレコードの悪用によって正規のサブドメイン宛てのメールを攻撃者が受け取る危険にも触れています。利用者にとって見慣れたドメインであるほど、疑いを持たれにくくなります。フィッシングそのものの見分け方や基本対策は、次の記事で整理しています。
あわせて読みたい
フィッシングの手口と対策の基本。個人と組織でできることを徹底解説
被害はフィッシングだけではありません。乗っ取ったサブドメインは、XSSやCSRF、CORSバイパスといった別の攻撃へ発展させる足がかりにもなります。とくにCORSの許可オリジンをサブドメイン単位で緩めに設定していると、乗っ取られたサブドメインが正規オリジンの一つとして扱われ、機微なレスポンスの読み取りへつながる恐れがあります。CORSの緩め方と設定ミスの勘所は、次の記事で解説しています。
あわせて読みたい
CORSの仕組みと設定ミスを避ける勘所。オリジン間リソース共有を安全に緩める
Microsoft Learnは、乗っ取りのリスクとして、フィッシングでの正規らしいサブドメインやMXレコードの悪用、そしてXSSやCSRF、CORSバイパスといった別の攻撃への発展を挙げています。
なぜ起きるか
根っこにあるのは、クラウド資源が一時的なのに対してDNSレコードは残り続ける、という性質の食い違いです。資源は必要に応じて頻繁に作られては消されますが、DNSレコードの掃除は後回しにされがちで、消し忘れたレコードが在庫のようにたまっていきます。OWASPのチートシートも、この問題を技術的というよりは実行上の問題だと整理しています。
順序の面でも落とし穴があります。多くの現場では、先に資源を削除してからDNSを片付けようとしますが、これでは資源を消してからDNSを消すまでの間に、乗っ取りの窓が開いてしまいます。OWASPは、サブドメインを先に別の宛先へ振り直すかそのまま維持し、次にDNSを更新して伝播を待ち、最後にクラウド資源を削除する、という順序を推奨しています。削除の順番を逆にしないことが、宙に浮いたレコードを生まない出発点になります。
恒久対策
対策は一つの機能に頼るのではなく、廃止時の順序、資源とレコードのライフサイクルの結びつけ、所有権の証明、そして定期的な棚卸しを重ねることで効いてきます。以下は運用の手順として押さえておきたい流れです。
- 1
資源を廃止するときは、対応するDNSレコードを先に、または同時に削除する。廃止チェックリストに『DNSエントリ削除』を必須項目として入れる
- 2
DNSエントリの付いた資源には削除ロックを付け、DNSを片付けてから消す目印にする
- 3
対応するクラウドでは、資源とレコードのライフサイクルを結びつけるエイリアスレコードを使い、資源を消すとレコードも空になるようにする
- 4
所有権検証の仕組み(例としてAzure App Serviceのasuid.(サブドメイン)のTXTレコード)を設定し、同名資源を他者が奪えないようにする
- 5
DNSゾーンを定期的に棚卸しし、外部FQDNを指すレコードが現存する自組織の資源だけを指しているか突き合わせる
- 6
宙に浮いたレコードを見つけたら、侵害の有無をインシデント対応手順で調査し、レコードを削除するか自組織の正しい資源へ向け直す
エイリアスレコードは、資源を削除するとレコードが空の集合になり、削除済みの資源を参照しなくなる仕組みです。Microsoftによれば適用できる資源には範囲があり、執筆時点ではAzure Front Door、Traffic Managerプロファイル、Azure CDNのエンドポイント、パブリックIPが対象とされています。対象に含まれる資源では、可能な範囲で使う価値があります。所有権検証のTXTレコードは、同名の資源を他者が作ること自体は防げませんが、ドメインの所有を証明できない相手が通信を受け取ったり中身を支配したりできないようにします。
クラウド側にも補助の仕組みがあります。AWSはRoute 53で、削除した後に同名のホストゾーンを作り直す際、親ドメインに残った委任レコードを確認し、名前空間の重複割り当てを防ぐ保護を用意しています。ただしこれは委任レコードに関する一部の保護であり、すべての宙に浮いたレコードを防ぐものではないと明記されています。こうしたクラウド側の保護は、自組織の運用手順を置き換えるものではなく、あくまで補いとして位置づけるのが妥当です。DNS運用そのものの基礎は、次の記事で整理しています。
あわせて読みたい
DNSの名前解決とその安全性を支える技術
どこまでをクラウド事業者が守り、どこからを利用者が守るのかという線引きも、この問題を考えるうえで欠かせません。DNSレコードの管理と廃止手順は利用者側の責任に含まれることが多く、その前提を押さえておくと対策の抜けを防げます。責任分界の考え方は、次の記事で解説しています。
あわせて読みたい
クラウドの責任共有モデルとガバナンス。IaaS/PaaS/SaaSで変わる責任範囲と設定ミスの所在
廃止時の点検リスト
日々の運用で使えるように、資源を廃止するときとDNSを棚卸しするときの確認事項を挙げます。
- 資源を削除する前に、その資源を指すDNSレコードを洗い出したか
- DNSレコードの削除または宛先の振り直しを、資源の削除より先に済ませたか
- 廃止チェックリストにDNSエントリ削除の項目を組み込んでいるか
- DNSエントリの付いた資源に削除ロックなどの目印を付けているか
- 対応する資源でエイリアスレコードや所有権検証TXTを設定しているか
- DNSゾーンを定期的に棚卸しし、外部FQDNを指すレコードの資源が現存し自組織の所有か確認しているか
- 宙に浮いたレコードを見つけた場合の調査と是正の手順を決めているか
サブドメインテイクオーバーは、高度な脆弱性というより、資源を消すときにDNSを消し忘れるという運用の抜けから生まれます。原因が宙に浮いたDNSレコードにある以上、防ぐ側の主導権は運用の手順にあります。廃止のたびにDNSを先に片付ける順序を徹底し、エイリアスレコードや所有権検証で守りを補い、DNSゾーンを定期的に棚卸しして自組織の生きた資源だけを指す状態を保つ。この積み重ねが、宙に浮いたレコードを残さないための現実的な備えになります。
出典・参考
- Microsoft Learn: Prevent subdomain takeovers with Azure DNS alias records and Azure App Service's custom domain verification
- OWASP WSTG: Test for Subdomain Takeover
- OWASP Cheat Sheet Series: Subdomain Takeover Prevention
- Amazon Route 53 Developer Guide: Protection from dangling delegation records in Route 53
関連する記事
DNSの名前解決とその安全性を支える技術
ドメイン名がIPアドレスに変換される流れと、キャッシュポイズニングなどの危うさを整理し、応答の真正性を守るDNSSECと、経路上の盗聴を防ぐDNS over HTTPS/DNS over TLSの役割の違いを、RFCやJPRSの一次情報をもとに開発者と運用担当向けに説明します。
フィッシングの手口と対策の基本。個人と組織でできることを徹底解説
依然として被害が絶えないフィッシング詐欺について、典型的な手口とその進化、見破り方、個人と組織それぞれでできる対策、そして万一被害に遭ったときの対応までを、専門知識がなくても分かるように網羅的に解説します。
クラウドの責任共有モデルとガバナンス。IaaS/PaaS/SaaSで変わる責任範囲と設定ミスの所在
クラウドの責任共有モデルを原理から整理し、IaaS/PaaS/SaaSで利用者の責任がどう変わるかを早見表で示します。設定ミスによる漏えいの責任は誰にあるのか、経営と現場が押さえるべきガバナンスの勘所を解説します。


