Webサイトのアドレスを入力したのに、全く別の偽サイトに飛ばされてしまう…そんな恐ろしい攻撃が「DNSキャッシュポイズニング」です。
この攻撃は、インターネットの住所録とも言えるDNSの仕組みを悪用して、利用者を偽のWebサイトへ誘導します。銀行サイトやショッピングサイトになりすまして、個人情報やパスワードを盗み取る詐欺に使われることもあるんです。
この記事では、DNSキャッシュポイズニングの仕組みから被害例、そして効果的な対策方法まで、分かりやすく解説していきます。自分の身を守るために、ぜひこの攻撃について理解を深めていきましょう!
DNSキャッシュポイズニングとは?DNS情報の改ざん攻撃

DNSキャッシュポイズニング(DNS Cache Poisoning)とは、DNSサーバーのキャッシュ情報を偽の情報で書き換える攻撃手法です。
別名「DNSキャッシュ汚染」とも呼ばれています。まさに「毒(Poison)」を盛るように、正しい情報を汚染してしまうんですね。
攻撃の結果として起こること
この攻撃が成功すると、以下のような被害が発生します:
主な被害:
- 正規のWebサイトにアクセスしようとしても偽サイトに誘導される
- 本物そっくりの偽サイトで個人情報を入力させられる
- クレジットカード情報やパスワードが盗まれる
- マルウェア(悪意あるソフトウェア)を勝手にインストールされる
利用者は正しいアドレスを入力しているのに、攻撃者の用意した偽サイトに接続してしまうという、非常に厄介な攻撃なんです。
DNSとキャッシュの基本:攻撃を理解するための前提知識
まず、DNSとキャッシュの仕組みを理解しておきましょう。
DNSとは?インターネットの住所録
DNS(Domain Name System)は、人間が覚えやすいドメイン名(例:google.com)を、コンピュータが理解できるIPアドレス(例:172.217.175.46)に変換する仕組みです。
わかりやすく例えると:
- ドメイン名=会社名や店舗名
- IPアドレス=正確な住所
- DNS=住所録や電話帳
「Googleに行きたい」と言えば、DNSが「この住所ですよ」と教えてくれるイメージですね。
DNSキャッシュとは?効率化のための仕組み
DNSキャッシュは、一度調べたドメイン名とIPアドレスの対応を一時的に保存しておく仕組みです。
キャッシュのメリット:
- 同じサイトに再度アクセスする際、素早く接続できる
- DNSサーバーへの問い合わせ回数が減る
- インターネット全体の負荷が軽減される
毎回電話帳を最初から探すのではなく、よく使う番号をメモしておくようなものです。
キャッシュの保存場所:
- パソコンやスマートフォン(ローカルキャッシュ)
- プロバイダーのDNSサーバー(リゾルバ)
- 企業や組織のDNSサーバー
このキャッシュに偽の情報を混ぜ込むのが、DNSキャッシュポイズニング攻撃なんです。
攻撃の仕組み:どうやって偽情報を混入させるのか
では、攻撃者はどうやってキャッシュに偽情報を入れるのでしょうか?
基本的な攻撃の流れ
ステップ1:攻撃対象の選定
- 攻撃者がターゲットのDNSサーバーを特定
- 多くの人が利用するプロバイダーのDNSサーバーが狙われやすい
ステップ2:問い合わせの発生を待つ(または誘発)
- DNSサーバーが特定のドメインを問い合わせるタイミングを狙う
- 攻撃者自身が問い合わせを発生させる場合も
ステップ3:偽の応答を送信
- DNSサーバーが正規のサーバーに問い合わせている間に、攻撃者が偽の応答を送信
- 正規の応答より先に偽応答を届けることが目標
ステップ4:偽情報の受け入れ
- DNSサーバーが偽の応答を本物と誤認
- キャッシュに偽のIPアドレスが保存される
ステップ5:被害の拡大
- 以降、そのDNSサーバーを使う全ての利用者が偽サイトに誘導される
- キャッシュが消えるまで(通常数時間~数日)被害が続く
攻撃の難しいポイント
実は、攻撃を成功させるにはいくつかの条件をクリアする必要があります:
1. トランザクションIDの推測
- DNS通信にはトランザクションIDという識別番号が付く
- 16ビット(0~65535の範囲)の番号を当てる必要がある
2. タイミング
- 正規の応答が届く前に偽応答を送る必要がある
- 通常は数ミリ秒~数十ミリ秒の勝負
3. ポート番号の特定
- DNS通信で使用されるポート番号を知る必要がある
- 従来は固定(53番)だったが、現在はランダム化されている場合が多い
これらのハードルがあるため、従来型のDNSキャッシュポイズニング攻撃は難易度が高いとされています。
Kaminsky攻撃:より高度な攻撃手法
2008年に発見されたカミンスキー攻撃は、従来の対策を回避する高度な手法です。
Dan Kaminskyが発見した脆弱性
セキュリティ研究者のダン・カミンスキーが、DNSプロトコルの根本的な弱点を発見しました。
従来の攻撃との違い:
従来の攻撃:
- 既存のドメイン(例:google.com)のキャッシュポイズニングを狙う
- 一度キャッシュされると、キャッシュが消えるまで再挑戦できない
Kaminsky攻撃:
- 存在しないサブドメイン(例:xyz123.google.com)を大量に問い合わせ
- 毎回新しい問い合わせなので、何度でも挑戦できる
- 攻撃成功の確率が大幅に向上
攻撃の具体的な流れ
ステップ1:存在しないサブドメインを問い合わせ
- 攻撃者が「random123.example.com」のようなランダムなサブドメインを問い合わせ
- DNSサーバーはキャッシュに無いため、権威DNSサーバーに問い合わせる
ステップ2:偽の追加情報を送信
- 攻撃者が偽の応答を送信
- この際、追加レコードとして「example.comの権威DNSサーバーは攻撃者のサーバー」という情報を含める
ステップ3:成功するまで繰り返し
- 失敗しても次の存在しないサブドメインで再挑戦
- 大量に試行することで成功確率を上げる
ステップ4:ドメイン全体の乗っ取り
- 成功すると、example.com全体の問い合わせが攻撃者のサーバーに向かう
- あらゆるサブドメインを攻撃者が制御できる
この手法の発見により、DNSのセキュリティ対策が大幅に強化されることになりました。
DNSキャッシュポイズニングによる被害

実際にどのような被害が発生するのでしょうか?
1. フィッシング詐欺
最も一般的な被害は、偽サイトへの誘導です。
攻撃の流れ:
- 利用者が銀行のWebサイトにアクセスしようとする
- DNSキャッシュポイズニングにより偽サイトに誘導される
- 本物そっくりの偽サイトでログイン情報を入力
- 攻撃者がユーザー名とパスワードを入手
- 攻撃者が本物のサイトで不正ログイン
特に狙われやすいサイト:
- オンラインバンキング
- クレジットカード会社のサイト
- ショッピングサイト
- メールサービス
- SNS(ソーシャルネットワーキングサービス)
2. マルウェアの配布
偽サイトから悪意あるソフトウェアをダウンロードさせる手口もあります。
具体的な手法:
- ソフトウェアの公式ダウンロードサイトになりすます
- 正規のアップデート通知を装う
- マルウェアを含むファイルをダウンロードさせる
感染後の被害:
- 個人情報の窃取
- パソコンの乗っ取り(ボットネット化)
- ランサムウェア(身代金要求型ウイルス)への感染
3. 中間者攻撃(Man-in-the-Middle攻撃)
すべての通信を攻撃者が傍受する状態を作り出します。
攻撃の仕組み:
- 利用者と本物のサーバーの間に攻撃者のサーバーが入る
- 利用者↔攻撃者↔本物のサーバー という経路になる
- 通信内容をすべて盗み見られる
暗号化通信(HTTPS)の落とし穴:
- HTTPSでも、偽の証明書を使われると気づきにくい
- ブラウザの警告を無視してしまう利用者も多い
4. 大規模な被害
プロバイダーのDNSサーバーが汚染されると、数万~数十万人規模の被害が発生する可能性があります。
2008年の実例:
- ブラジルの大手銀行のサイトが標的に
- 多数の利用者が偽サイトに誘導された
- 深刻な金銭的被害が発生
DNSキャッシュポイズニングへの対策
では、どうやってこの攻撃から身を守ればよいのでしょうか?
DNSサーバー管理者側の対策
1. ポート番号のランダム化(Source Port Randomization)
DNS問い合わせで使用するポート番号を毎回ランダムに変更します。
効果:
- 攻撃者がポート番号を特定しにくくなる
- 攻撃の成功率が大幅に低下
現在の状況:
- ほとんどの現代的なDNSサーバーで実装済み
- 重要な基本対策の1つ
2. トランザクションIDの完全ランダム化
識別番号を予測されにくい方法で生成します。
対策内容:
- 暗号学的に安全な乱数生成器を使用
- 単純な連番やパターンを避ける
3. DNSSEC(DNS Security Extensions)の導入
DNSの応答にデジタル署名を付けて、改ざんを検知する技術です。
DNSSECの仕組み:
- DNS応答に暗号学的署名を付加
- 受信側が署名を検証
- 改ざんされた応答は検証に失敗するため拒否される
DNSSECのメリット:
- 偽の応答を確実に検出できる
- 根本的な解決策
DNSSECの課題:
- 設定が複雑で運用コストが高い
- まだ完全には普及していない
- ルートからドメインまでの連鎖が必要
4. 応答の検証強化
受け取ったDNS応答の妥当性を厳密にチェックします。
検証項目:
- 問い合わせた内容と応答が一致するか
- 追加レコードの内容が適切か
- 応答元のIPアドレスが正しいか
5. キャッシュの適切な管理
TTL(Time To Live)の設定:
- キャッシュの保持時間を適切に設定
- 長すぎると攻撃の影響が長引く
- 短すぎると効率が悪化
キャッシュの定期的なクリア:
- 疑わしい場合はキャッシュをクリア
- 新鮮な情報を取得し直す
一般ユーザー側の対策
1. HTTPSサイトの利用を徹底
HTTPS(鍵マークのあるサイト)を使用することで、通信内容の暗号化と正当性の確認ができます。
確認ポイント:
- アドレスバーに鍵マークがあるか
- HTTPSで始まっているか
- 証明書の警告が出ていないか
注意点:
- 警告が出たら絶対に無視しない
- 個人情報を入力する前に必ず確認
2. パブリックDNSサービスの利用
信頼できる大手のDNSサービスを使用します。
代表的なパブリックDNS:
- Google Public DNS(8.8.8.8、8.8.4.4)
- Cloudflare DNS(1.1.1.1、1.0.0.1)
- Quad9(9.9.9.9)
メリット:
- セキュリティ対策が充実している
- 高速で安定している
- DNSSECに対応している
3. セキュリティソフトの活用
提供される保護機能:
- 悪意あるサイトへのアクセスをブロック
- フィッシングサイトの検出
- マルウェアのダウンロード防止
4. OSやブラウザの更新
定期的なアップデート:
- セキュリティパッチの適用
- DNSキャッシュポイズニング対策の最新化
- 脆弱性の修正
5. 不審な点に気づく
チェックポイント:
- サイトのデザインがいつもと違う
- URLが微妙に異なる(typosquatting)
- 証明書の警告が表示される
- 異常に個人情報の入力を求められる
少しでも違和感があれば、そのサイトでの操作を中止してください。
関連する攻撃手法:DNSスプーフィング
DNSキャッシュポイズニングと似た攻撃にDNSスプーフィングがあります。
DNSスプーフィングとの違い
DNSキャッシュポイズニング:
- DNSサーバーのキャッシュを汚染
- 複数のユーザーに影響
- 攻撃の効果が長時間継続
DNSスプーフィング:
- 個別の通信を偽装
- 特定のユーザーを狙う
- その場限りの攻撃
ローカルDNSスプーフィング
攻撃の手法:
- 利用者のパソコン内のhostsファイルを改ざん
- ローカルDNSキャッシュを直接書き換える
- ルーターの設定を変更する
感染経路:
- マルウェアへの感染
- 不正なソフトウェアのインストール
- 公共Wi-Fiでの中間者攻撃
対策:
- マルウェア対策ソフトの使用
- hostsファイルの定期的なチェック
- 公共Wi-Fiでの重要な操作を避ける
DNSキャッシュポイズニングの歴史と進化
この攻撃手法は、長い歴史を持っています。
主な出来事
1990年代:
- DNSプロトコルの脆弱性が指摘される
- 初期の攻撃手法が確立
2008年:
- Kaminsky脆弱性の発見
- DNS業界全体で緊急対応
- 主要ベンダーが一斉にパッチをリリース
2010年代:
- DNSSECの普及が進む
- セキュリティ対策の標準化
現在:
- 対策技術の向上により攻撃は困難に
- しかし完全には解決していない
- 新たな攻撃手法の研究も続く
今後の展望
技術的な進化:
- DNSSECのさらなる普及
- DNS over HTTPS(DoH)やDNS over TLS(DoT)の採用
- AIを活用した異常検知
課題:
- 古いシステムの更新
- 運用コストとセキュリティのバランス
- グローバルな協調体制の維持
まとめ:DNSキャッシュポイズニングから身を守るために
DNSキャッシュポイズニングは、インターネットの基盤を狙う危険な攻撃です。
この記事のポイント:
- DNSキャッシュポイズニングはDNS情報を偽装する攻撃
- キャッシュに偽情報を混入させて利用者を偽サイトに誘導
- Kaminsky攻撃により攻撃の脅威が大きく増大
- フィッシング詐欺やマルウェア配布に悪用される
- ポートランダム化やDNSSECで対策可能
- 利用者はHTTPS確認と信頼できるDNSサービスの利用が重要
- セキュリティソフトと常に最新の状態を維持
サーバー管理者の方は、DNSSECの導入やセキュリティパッチの適用を検討してください。
一般ユーザーの方も、HTTPSの確認や信頼できるDNSサービスの利用で、被害を防ぐことができます。
インターネットの安全性は、技術的な対策と一人ひとりの意識の両方で守られています。この記事で学んだ知識を活かして、安全なインターネット利用を心がけましょう!

コメント