DNSのセキュリティ3:サブドメインテイクオーバー
情報処理安全確保支援士試験の対策として、攻撃の仕組みが少し難しいサブドメインテイクオーバーについて具体的に解説します。
1.攻撃について
(1)概要
・攻撃の仕組みは以下に記載がある。CDN(Content Delivery Network)などで行われる場合があります。
https://jprs.jp/glossary/index.php?ID=0267
・過去問文で、攻撃の概要を確認しましょう。
(2)著名な会社が1年前, CDN事業者のサービスを利用してWebサーバを立ち上げ,1か月間商品のキャンペーンを行った。このWebサーバには,その会社のサブドメインを使用した。キャンペーン後すぐに, CDNサービスを解約したが,今になって,そのサブドメインが海外の会社の広告サイトとして使われていることが発覚した。
(2)具体的な攻撃
V社は、campaign.v-sha.co.jp というキャンペーン用のFQDNをCDN経由で公開するため、以下の2つの設定を行いました。
①CDNに対してサービスの利用登録
②自社DNSサーバに CNAMEを登録
キャンペーン終了後、V社は①のCDN側の登録だけ削除したのですが、DNS側(CNAME)の設定は残ったままになっていました。この状態で、V社が使っていたCDNの設定名を攻撃者が「再登録」し、そこに攻撃者自身のサイト(=海外の会社の広告サイト)を紐づけてます。
その結果、ユーザーが campaign.v-sha.co.jp にアクセスすると、V社ではなく海外の会社の広告サイトが表示されてしまいました。
😕なんだかよくわかりません
🙍♂️ この説明だと、そうでしょうね
以下、解説が長くなりますが、順に説明します。
2.実際の設定を含む攻撃の詳細
(1)CDNを利用する目的
V社は,v-sha.co.jpというドメインを保有しています。今回、キャンペーン用にサブドメイン(campaign.v-sha.co.jpとします)を使います。
😯campaignは、ホスト名じゃなくサブドメインなのですか?
🙅♂️今回の場合はホスト名です。
サブドメインテイクオーバーの攻撃は、サブドメインに対してだけでなくホスト名に対しても行われます。攻撃のやり方は少し異なりますが、今回はホスト名を例に解説を進めます。
キャンペーンは短時間に多くのアクセスが見込まれます。そこでCDNを利用することにしました。
(2)CDNの設定
利用者は、https://campaign.v-sha.co.jpというURLでキャンペーンサイトに接続してきます(下図❶)。この通信を、CDNのサーバにアクセスさせます。そこで,V社はCDN事業者に申し込みをします。このとき、cdn-v001というIDで登録した(❷)と考えてください。(ただし、自らIDを選べるCDNサービスであった前提です)。

さて、この仕組みを実現するための設定を、V社側とCDN事業者のそれぞれで説明をします。
(3)CDNの設定(V社)
V社の権威DNSサーバでは、CNAMEとして以下の設定をします。
campaign.v-sha.co.jp. IN CNAME cdn-v001.example.net.
※example.net.は,CDN事業者のドメイン
(4)CDNの設定(CDN事業者)
CDN事業者では、cdn-v001.example.net.のFQDNに対して、以下のようにエッジサーバ(❹)のIPアドレスが設定されてます。
※実際にはもっと複雑ですが、わかりやすさ優先で簡略化しています。
cdn-v001.example.net. IN A 203.0.113.1
cdn-v001.example.net. IN A 203.0.113.2
cdn-v001.example.net. IN A 203.0.113.3
😕このとき、キャンペーンサイトのコンテンツ(HTMLファイルや画像)はCDNのエッジサーバ上にあるのですか?
🙋♂️正しく説明しますね。
コンテンツのコピーはエッジサーバ上にありますが、コンテンツのオリジナル(原本)は、V社が用意したオリジンサーバ(❻)にあります。
また、CDNサーバでは、簡略化してありますが、以下の設定がされていると考えてください。

PCがcampaign.v-sha.co.jpのFQDNでエッジサーバにアクセスすると,項番2の情報をもとに、V社が用意したオリジンサーバに接続(➑)されます。
(5)サブドメインテイクオーバーの攻撃
V社はキャンペーンが終わったのでCDNを解約しました。すると、CDN事業者側では、cdn-v001というIDを含め、CDNに関する登録情報(上の❼)が削除されます。しかし,V社がゾーンファイル中のCNAMEレコード(上の❸)の削除を行っていなかったとします。
CNAMEの情報は、DNSで問い合わせをすれば誰でもが確認できます。そこで、cdn-v001という情報を知り得た攻撃者は、cdn-v001というIDでCDNを契約します(IDを選べないCDN事業者も多いので、必ずしもこれができるとは限りません)。
また、CDNの設定で、利用者から接続してくるFQDNをV社のドメインを使って「campaign.v-sha.co.jp.」として設定します。そして、オリジンサーバには、攻撃者のサイトを紐づけるのです。(以下)

すると,campaign. v-sha.co.jpにアクセスしたPCは,攻撃者が用意したオリジンサーバに接続してしまいます。(図❿)

😥v-sha.co.jpは他社のドメインなのに,CDNに登録できるんですか?
🙋♂️はい,場合によって。
クラウド側でドメイン所有者チェックが行われないCDNサービスの場合は、残念ながらできてしまいます。
防止策としてTXTレコードを利用したドメイン所有者の検証や,すでに利用されたことがあるサブドメインの登録を防止するなどの対策を行っているCDN事業者も多数あります。
3.対策
サーバ運営者側は、コンテンツDNSサーバにおいて、古いCNAMEレコードを削除します(※これが、意外に消されていないのです)
