はじめに
DNS サーバーに対する脅威について学習する備忘録です。
改訂履歴
- 2026/09/14 : 初版公開。
本文
1. DNS キャッシュポイズニング
キャッシュ DNS サーバーに偽の DNS 応答をキャッシュさせ、正規のドメイン名に対して攻撃者が指定した IP アドレス等を返させる攻撃です。DNS キャッシュが汚染されると、利用者は正規のドメイン名を指定しているにもかかわらず、偽サイト等に誘導される可能性があります。DNS のトランザクション ID やソースポートランダマイゼーション(送信元ポートのランダム化)、DNSSEC などが対策として挙げられます。
ソースポートランダマイゼーションとは、DNS の問合わせに使用する UDP の送信元ポート番号をランダム化する仕組みです。攻撃者が偽の DNS 応答を送り込む際に、問合わせに対応する送信元ポート番号も推測する必要があるため、DNS キャッシュポイズニングを困難にする効果があります。
DNSSEC (DNS Security Extensions) とは、DNS の応答に電子署名を付加し、問合わせた DNS 情報が正当な DNS 管理者によって署名されたものか、また途中で改ざんされていないかを検証できるようにする仕組みです。誤解されがちですが、DNSSEC は DNS 通信を暗号化する仕組みではなく、データの真正性と完全性を検証するためのものです。
1-1. カミンスキー攻撃
カミンスキー攻撃は、DNS キャッシュポイズニングの手法の一つです。キャッシュ DNS サーバーに存在しないランダムなサブドメインを問合わせさせて、その名前解決の過程で偽の DNS 応答を大量に試行することで、DNS キャッシュを汚染する攻撃手法です。ソースポートランダマイゼーションはこの攻撃への有効な対策の一つです。
2. DNS リフレクション攻撃
DNS アンプ攻撃や DNS リフレクター攻撃とも呼ばれます。DNS の再帰的な問合わせや、応答サイズが要求より大きくなり得る性質を悪用した DDoS 攻撃の一種です。攻撃者は、送信元 IP アドレスを被害者の IP アドレスに偽装した DNS クエリをオープンリゾルバーなどに送信します。
リゾルバーはドメイン名から IP アドレス等を求める DNS の名前解決を行うソフトウェアや機能のことです。オープンリゾルバーとは、アクセス元を適切に制限せず、インターネット上の任意のクライアントからの再帰問合わせを受け付けるリゾルバーです。
DNS サーバーからの応答が被害者に向けて送信されることで、第三者の DNS サーバーを「反射器」として利用できます。特に DNSSEC 等によって応答サイズが大きくなる問合わせを利用すると、少量のリクエストから大量のトラフィックを発生させる増幅 (Amplification) が可能になります。対策としては、オープンリゾルバーにしないこと、送信元 IP アドレスの偽装を防止するネットワーク側の対策 (BCP 38)、レートの制限等があります。
BCP 38 (Best Current Practice 38) とは、送信元 IP アドレスを偽装したパケットの流出を防ぎ、 DDoS 攻撃等の悪質なトラフィックを遮断するためのネットワーク運用ガイドラインです。RFC 2827 で定義されています。
3. サブドメインテイクオーバー
DNS レコードと、外部サービス上のリソースとの紐付きを悪用し、管理されていないサブドメインを攻撃者に取得される攻撃です。例えば example.com の blog.example.com が外部サービスを指す CNAME レコードを持っている一方で、その外部サービス側のリソースが削除されているケースがあります。この状態で DNS レコードを放置すると、攻撃者が同じサービス上で対象リソースを取得し blog.example.com を自分の管理するコンテンツに向けられる可能性があります。対策として、不要になった DNS レコードを削除すること、外部サービスのリソースと DNS レコードの対応関係を定期的に確認すること等が挙げられます。
おわりに
気付きがあれば、追記します。