はじめに:インターネットの「電話帳」を狙う攻撃
空子/情報セキュリティマネジメント担当私たちは毎日、何気なくブラウザに「amazon.co.jp」や「google.com」といったアドレスを入力してウェブサイトを閲覧しています。しかし、もしその入力したアドレスが正しいのに、まったく別の偽サイトに誘導されてしまったらどうでしょうか?
URLを確認しても正しいのに、表示されているのは犯罪者が作った偽物のページ。そんな恐ろしいことを実現してしまうのが「DNSキャッシュポイズニング攻撃」です。
この記事では、専門知識がなくても理解できるように、この攻撃の仕組みと対策をわかりやすく解説します。
そもそもDNSって何?





DNSキャッシュポイズニングを理解するには、まず「DNS」について知る必要があります。
DNSとは「Domain Name System(ドメインネームシステム)」の略で、インターネットにおける「電話帳」のような役割を果たしています。
私たちがウェブサイトを見るとき、ブラウザに「www.example.com」のような文字列を入力しますよね。しかし、コンピュータ同士が実際に通信するときは「93.184.216.34」のような数字の羅列(IPアドレス)を使っています。人間には覚えにくいこの数字を、わかりやすい名前に変換してくれるのがDNSの役割です。
つまり、あなたが「www.example.com」と入力すると、DNSサーバーが「それは93.184.216.34のことですよ」と教えてくれて、あなたのパソコンはその番号のサーバーに接続しにいく、という流れになっています。
「キャッシュ」とは何か



次に大事なのが「キャッシュ」という概念です。
毎回毎回、ウェブサイトにアクセスするたびにDNSサーバーに「このサイトのIPアドレスは?」と問い合わせていたら、時間がかかって仕方がありません。そこでDNSサーバーは、一度調べた結果を一定期間メモしておきます。このメモのことを「キャッシュ」と呼びます。
たとえば、あなたの会社や自宅のネットワークが使っているDNSサーバーが、一度「www.example.com = 93.184.216.34」と調べたら、しばらくの間はその情報をキャッシュとして保存します。次に誰かが同じサイトにアクセスしようとしたとき、わざわざ調べ直さなくても、キャッシュからすぐに答えを返すことができるのです。
DNSキャッシュポイズニングの仕組み





さて、ここからが本題です。
「ポイズニング(poisoning)」とは英語で「毒を盛る」という意味です。つまり、DNSキャッシュポイズニングとは、DNSサーバーのキャッシュ(メモ)に「嘘の情報」を混入させる攻撃のことです。
攻撃の流れを、もう少し具体的に説明しましょう。
- 攻撃者は、DNSサーバーが他のサーバーに問い合わせを行うタイミングを狙います。
- 正規のサーバーから正しい回答が届く前に、攻撃者が偽の回答を送りつけます。
- DNSサーバーは、この偽の回答を「正しい情報だ」と信じてキャッシュに保存してしまいます。
- その結果、そのDNSサーバーを利用するすべてのユーザーが、偽のIPアドレスに誘導されてしまいます。
たとえば、あなたが銀行のウェブサイトにアクセスしようとしたとき、DNSサーバーのキャッシュが汚染されていると、本物そっくりの偽サイトに飛ばされてしまいます。そこでIDやパスワードを入力してしまえば、その情報はすべて攻撃者の手に渡ってしまうのです。
なぜ危険なのか? ― 見分けがつかない恐怖





この攻撃が特に恐ろしい理由は、ユーザー側からは異常に気づきにくいという点です。
通常のフィッシング詐欺であれば、URLが「amaz0n.co.jp」のように微妙に違っていたり、不審なメールのリンクからアクセスさせたりと、注意深い人なら気づけるポイントがあります。しかし、DNSキャッシュポイズニングの場合は、ブラウザのアドレスバーに表示されるURLは完全に正しいものです。なぜなら、「名前」と「住所」の対応表そのものが書き換えられてしまっているからです。
被害の範囲も甚大です。一台のDNSサーバーのキャッシュが汚染されると、そのサーバーを利用するすべてのユーザーが影響を受けます。企業のDNSサーバーであれば社員全員が、インターネットプロバイダーのDNSサーバーであれば数万人、数十万人規模の利用者が一斉に偽サイトへ誘導されるおそれがあるのです。
過去の事例





DNSキャッシュポイズニングは、決して机上の空論ではありません。
2008年にセキュリティ研究者のダン・カミンスキー氏が、DNSプロトコルに存在する根本的な脆弱性を発見し、世界中に衝撃を与えました。この脆弱性を悪用すれば、従来考えられていたよりもはるかに簡単にキャッシュポイズニングが実行できることが判明したのです。この発見を受けて、世界中のDNSソフトウェアに緊急のセキュリティパッチが適用されました。
また、日本でも2014年頃にDNSキャッシュポイズニングの危険性が改めて注目され、JPRS(日本レジストリサービス)が注意喚起を行っています。
私たちにできる対策



「そんな攻撃、一般の人には防ぎようがないのでは?」と思うかもしれません。確かに、DNSサーバーの運用は専門家の仕事ですが、私たち一般ユーザーにもできることはあります。
HTTPSを確認する習慣をつける。 銀行やショッピングサイトなど、重要な情報を入力するサイトでは、アドレスバーに鍵マークが表示されていて、「https://」で始まっていることを必ず確認しましょう。HTTPSはサーバーの身元を証明書で検証するため、たとえDNSが汚染されていても、偽サイトであれば証明書のエラーとして検出される可能性が高いです。
信頼できるDNSサーバーを使う。 Google Public DNS(8.8.8.8)やCloudflare DNS(1.1.1.1)など、大手が運営するパブリックDNSサービスは、セキュリティ対策が非常に充実しています。自宅のルーターやパソコンの設定で、これらのDNSサーバーを利用するように変更するだけで、安全性が向上します。
OS・ブラウザを最新の状態に保つ。 セキュリティアップデートには、DNS関連の脆弱性に対する修正が含まれていることがあります。常に最新の状態にしておくことが基本的ですが重要な防御策です。
DNSSEC対応のDNSを利用する。 DNSSEC(DNS Security Extensions)は、DNS応答にデジタル署名を付与することで、情報が改ざんされていないことを検証できる仕組みです。まだ完全には普及していませんが、対応しているDNSサーバーを利用することで、キャッシュポイズニングへの耐性を大幅に高めることができます。
おわりに
DNSキャッシュポイズニングは、インターネットの根幹を支えるDNSという仕組みの「信頼」を悪用した、非常に巧妙な攻撃です。URLが正しくても偽サイトに飛ばされるという点で、一般的なフィッシング詐欺よりもさらに危険といえます。
しかし、HTTPSの確認や信頼できるDNSサーバーの利用といった、比較的簡単な対策で被害リスクを大きく減らすことができます。インターネットを安全に使うために、まずは「自分が使っているDNSサーバーは何か」を意識するところから始めてみてはいかがでしょうか。



インターネットの世界では、「正しいアドレスにアクセスしているから安全」とは限りません。その裏側にある仕組みを少しでも知っておくことが、あなた自身を守る第一歩になるのです。










コメント