米国のセキュリティ組織であるSANS Institute(以下,SANS)は3月初め,多数のユーザーから「Webブラウザに正しいURLを打ち込んだはずなのに,意図していないWebサイトへアクセスさせられる(リダイレクトされる)」という報告を受けた。DNSサーバーの情報を勝手に書き換える「DNSキャッシュ・ポイズニング攻撃」が原因の一つだという。その後,SANSには同様の攻撃が相次いで報告された。

 DNSサーバーの情報を書き換えられると,ユーザーとしてはどうしようもない。例えば,ブラウザに正しいURLを自分で入力しても偽サイトへ誘導されることになる。SANS Instituteで報告された例では,ウイルス/スパイウエアを埋め込むようなサイトや,スパマー(スパム送信者)のサイトへ誘導されたという。偽サイトへ誘導するフィッシング(ファーミング)に悪用される可能性もある(関連記事)。

 とはいえ,DNSキャッシュ・ポイズニング攻撃は目新しいものではない。一部のメディアでは「新たな脅威」などと書かれているが,実際には10年以上前から知られているものだ。「qmail」や「djbdns」などの開発で知られるD. J. Bernstein氏のサイトには「1990年には広く知られていた(Cache poisoning was widely known in 1990.)」との記述がある。

 実際にDNSキャッシュ・ポイズニング攻撃は増えているのか。増えているとしたら,その理由はなにか。対策のためにはどうすればよいのか——。本稿では専門家への取材を基に,DNSキャッシュ・ポイズニング攻撃の現状と対策をまとめた。

古典的な攻撃方法の一つ

 前述のように,DNSキャッシュ・ポイズニング攻撃は以前より広く知られている。DNS情報を書き換えて,特定ドメインにアクセスできないようにする(あるいは,特定ドメインにアクセスしたユーザーを別のドメインに誘導する)ことは,「ドメイン・ジャック」や「Webハイジャック」などと呼ばれ,1990年代には頻発した。

 特に有名なのは,1997年7月に起きた「InterNIC(Internet's Network Information Center)」ドメイン(internic.net)の乗っ取りである。「sex」や「ltd」,「nic」といったトップレベル・ドメイン(TLD)の必要性を提唱していた「AlterNIC」のEugene Kashpureff氏によって行われた。

 同氏は,internic.netにアクセスしようとすると,AlterNICのサイト(alternic.net)にリダイレクトされるようDNS情報を書き換えた。米国でドメインを独占的に管理していたInterNICに抗議するためだ。これにより,本来はアクセスできないはずの「sex」や「ltd」といったTLDを持つサイトのアドレスを一時的にアクセスできるようになってしまった。逆に,「com」や「net」といったサイトへアクセスできなくなったと伝えられる。

 この1997年のインシデント(出来事,事件)によって,DNSキャッシュ・ポイズニングの脅威はより広く知られるようになり,一般的な攻撃手法の一つとなった。そこで代表的なDNSサーバー「BIND」でも,改ざんを防ぐようなルールを適用するようになったという(関連情報)。逆にいえば,それまではDNSのキャッシュ情報を自在に改ざんできる——偽情報という“毒”を盛れる——設定だったといえる。

 1999年2月時点では,インターネット上のDNSサーバーの3分の1(33%)が,同攻撃を許す可能性があるという調査結果が公表されている。

 また,Windows NT/2000(SP3よりも前)のDNSサーバー機能は,DNSキャッシュ・ポイズニング攻撃を許す設定になっている(マイクロソフトのページ)。最近では,米Symantecのセキュリティ・ゲートウエイ製品に含まれるDNSサーバー機能にも,DNSキャッシュ・ポイズニング攻撃を許す脆弱性が見つかっている(関連記事)。

情報を鵜呑みにすることが問題

 そもそも,脆弱性のあるDNSサーバーは,どうして毒を盛られてしまうのか。なぜ嘘のレコード情報をキャッシュしてしまうのか。DNSキャッシュ・ポイズニングについては,RFC 3833「Threat Analysis of the Domain Name System (DNS)」などに記述されている。以下,それらの情報を基に簡単に説明する。