サブドメイン乗っ取り:どう起きて、どう防ぐか
サブドメイン乗っ取りは、DNSレコード(多くはCNAME)が、もう使っていないサードパーティのサービスを指し続けているときに起きます。攻撃者はそのリソースを再登録し、あなたのサブドメインで自分のコンテンツを配信し始めます。
これは何か
blog.yourdomain.com をCNAMEでホスティングサービスに向けた後、ホスティングのリソースを削除したのにDNSレコードを消し忘れる。すると、そのレコードは「宙に浮いた」状態になり——誰でも取得できる未取得の枠を指してしまいます。
よく狙われるのは、GitHub Pages、S3バケット、Herokuアプリ、Azureのサイト、Shopify など、以前使われたホスト名を新しいユーザーが取得できるプラットフォームです。
なぜ重要か
そのリソースを取得した者は、あなたの本物のドメイン上のページを支配します。これはフィッシング、あなたのドメインにスコープされたCookieの窃取、あなたのオリジンを信頼する保護の回避に最適です。
コンテンツがあなたの正規のサブドメイン上にあるため、ユーザーはもちろん、一部のセキュリティツールでさえ暗黙に信頼してしまいます。
直し方
外部サービスを指すCNAME/ALIASレコードがないか、DNSを点検してください。対象のリソースがもう存在しない場合は、そのレコードを削除しましょう。
ホスティングされたリソースを廃止するときは、後からではなく、DNSレコードを先に(または同時に)削除してください。リソースを削除してからレコードを削除するまでの間が、脆弱な期間になります。
まだそのサブドメインを使いたい場合は、サービス上でリソースを再プロビジョニングし、ホスト名が自分の管理下のものに解決されるようにしてください。
FAQ
自分が脆弱かどうか、どうやって分かりますか?
CNAMEが「未取得」や「そのようなアプリはありません」というページを返すサービスを指しているサブドメインを探してください。AppSafeはこれらを自動でフィンガープリントします。
Aレコードも脆弱ですか?
通常はそれほどでもありません。IPは、名前付きのサービス枠のように任意に再割り当てできないからです——ただしクラウドのIPは再利用されることがあるので、廃止したレコードはやはり削除すべきです。