削除漏れ CNAME の乗っ取り
A 社は,キャンペーンサイト campaign.example.com をクラウドの Web ホスティングサービスで公開し,DNS に次のレコードを登録していた。キャンペーン終了後にホスティングサービス上のサイト a-camp を削除したが,DNS のレコードは残っている。このサービスでは,誰でも未使用のサイト名を取得し,独自ドメイン名を設定できる。この状態に関する記述として,適切なものはどれか。
campaign.example.com. 3600 IN CNAME a-camp.hosting.example.net.- ア第三者がサイト名 a-camp を取得すると campaign.example.com で任意のコンテンツを配信できるので,レコードを直ちに削除し,今後はサイトより先に削除する。
- イ攻撃者は example.com の権威 DNS サーバのレコードを書き換える必要があるので,DNS の管理画面へのログインに多要素認証を導入すれば防げる。
- ウサイトは HTTPS で公開していたので,第三者は campaign.example.com の正規のサーバ証明書を取得できず,利用者はブラウザの警告で偽のサイトに気付ける。
- エCNAME レコードの TTL を 300 秒に短くしておけば,第三者がサイト名を取得しても,キャッシュの有効期限が切れた後はレコードが参照されなくなる。
正解と解説を見る
正解 ア
この問題の基礎知識
- CNAME レコードは,ある名前を別名として正規名に対応付けるレコードであり,名前解決は参照先の名前の設定に従う。そのため,その名前でアクセスしたときの接続先は,参照先の名前を管理する者が決めることになる。
- サブドメインテイクオーバーは,削除済みのクラウドリソースなどを指す DNS レコード(ダングリング DNS レコード)が残っているときに,第三者が参照先のサービスで同じ名前のリソースを取得し,そのサブドメインで任意のコンテンツを配信する攻撃である。
- TTL は DNS の応答をキャッシュに保持してよい時間であり,期限が切れたリゾルバは権威 DNS サーバに問い合わせ直す。権威 DNS サーバにレコードが残っていれば,同じ応答が返り続ける。
- DV 証明書は,ドメイン名の管理の実証(指定されたファイルを Web サーバに置く HTTP による検証や,DNS レコードによる検証など)に成功すれば発行されるので,そのドメイン名の Web コンテンツを制御できる者は取得し得る。
ア第三者がサイト名 a-camp を取得すると campaign.example.com で任意のコンテンツを配信できるので,レコードを直ちに削除し,今後はサイトより先に削除する。正解
削除済みのリソースを指す DNS レコード(ダングリング DNS)が残ると,第三者が同じ名前でリソースを作って当該サブドメインを乗っ取れる。残ったレコードを削除し,廃止時は DNS レコードを最初に削除する。
イ攻撃者は example.com の権威 DNS サーバのレコードを書き換える必要があるので,DNS の管理画面へのログインに多要素認証を導入すれば防げる。
この攻撃では,A 社が残した CNAME をそのまま利用し,参照先のホスティングサービス側でリソースを作るだけでよい。A 社の DNS の設定を書き換える必要はないので,管理画面の認証強化では防げない。
ウサイトは HTTPS で公開していたので,第三者は campaign.example.com の正規のサーバ証明書を取得できず,利用者はブラウザの警告で偽のサイトに気付ける。
乗っ取ったサブドメインでは,攻撃者がその名前の Web コンテンツを制御できるので,ドメイン名の管理の実証(HTTP による検証など)に成功して正規の証明書を取得できる。警告は表示されない。
エCNAME レコードの TTL を 300 秒に短くしておけば,第三者がサイト名を取得しても,キャッシュの有効期限が切れた後はレコードが参照されなくなる。
TTL はキャッシュの保持時間であり,期限が切れたリゾルバは権威 DNS サーバに問い合わせ直して同じ CNAME を得る。レコードが残っている限り参照され続けるので対策にならない。
検証用の出典出典照合済み
MDN Web Docs: Subdomain takeover / Microsoft Learn: Prevent dangling DNS entries and avoid subdomain takeover照合の根拠(5 件)
- ア(正解): DNS レコードを残すと,第三者が同じサービスで同名のサイトを作ってサブドメインでコンテンツを配信できる。イ(誤り): 攻撃者は A 社の DNS を書き換える必要がない
However, if you don't remove the DNS entry that points to the hosting provider, an attacker can now create their own virtual host with that provider, claim your subdomain, and host their own content under that subdomain.
MDN Web Docs: Subdomain takeover · During deprovisioning(新しいタブで開きます) - ア(正解): 廃止時は DNS レコードを最初に削除する
Start deprovisioning by removing DNS records _first_.
MDN Web Docs: Subdomain takeover · Defenses against Subdomain takeover(新しいタブで開きます) - ウ(誤り): 乗っ取ったサブドメインで攻撃者は正規の証明書を取得できるので,ブラウザの警告は出ない
A common misconception is that SSL certificates protect your site and your users' cookies from a takeover. However, a threat actor can use the hijacked subdomain to apply for and receive a valid SSL certificate.
Microsoft Learn: Prevent dangling DNS entries and avoid subdomain takeover · The risks of subdomain takeover(新しいタブで開きます) - ア(正解)・エ(誤り): 対策はレコード自体の削除であり,TTL の調整ではない
When a DNS record points to a resource that isn't available, the record itself should be removed from your DNS zone.
Microsoft Learn: Prevent dangling DNS entries and avoid subdomain takeover · The risks of subdomain takeover(新しいタブで開きます) - エ(誤り): TTL はキャッシュの保持時間にすぎず,期限後は権威 DNS サーバに残っている同じ CNAME が再取得される
a 32 bit unsigned integer that specifies the time interval (in seconds) that the resource record may be cached before it should be discarded.
RFC 1035 · Section 4.1.3(新しいタブで開きます)