「そのドメインを信じられますか?」 DNSキャッシュポイズニングの脅威:ふさいでおきたいDNSセキュリティの穴
インターネットには不可欠なDNS。これが“汚染”されるとさまざまなセキュリティ被害を引き起こすといわれるが、対策は意外に進んでいない。2008年7月を起点に急速に高まるDNSの脅威とは?
インターネットが登場してから、早くも40年近くが経過した。企業間での取引・連絡・情報交換をはじめとするビジネス活動において、今やインターネットは欠かせない社会基盤になっている。このインターネットを陰で支える仕組みが存在する。それがDNS(Domain Name System)である。
ところが2008年より、このDNSにおけるセキュリティ対策が急務となっている。その理由が、同年7月に公開された「DNSキャッシュポイズニング」(※1)の影響力である。本特集では、キャッシュポイズニングの詳細、現状分析、そして有効なセキュリティ対策について紹介したい。
※1:キャッシュポイズニングは、英語でCache Poisoningと表記する。「毒入れ・毒注入」と説明されることもある。
DNSの仕組みをおさらい
キャッシュポイズニングの手口を理解する上で、まずはDNSの仕組みを簡単に解説しておこう。DNSの仕組みをご存じの方は読み飛ばしていただいて構わない。
DNSとは、ドメイン(Domain)とIPアドレスを管理する分散型データベース、またはそのデータベース間でやりとりされるプロトコルを指す。図1にドメインのIPアドレスをDNSに問い合わせる流れをまとめてみた。WebブラウザでWebサイト(例:http://techtarget.itmedia.co.jp/)にアクセスする様子をイメージしていただきたい。
ユーザーはまず指定されたネームサーバA(※2)に対して、ドメインのIPアドレス(DNSではAレコードと呼ばれる)を問い合わせる。問い合わせたドメインの情報がネームサーバAに保存されていない場合、ネームサーバAはユーザーに代わり、インターネット上に点在するネームサーバに対して、ドメインのIPアドレスを問い合わせる。ネームサーバはまずルートネームサーバと呼ばれるDNS基幹サーバに問い合わせを実施する。その後、ネームサーバAは各ドメインを管理するネームサーバに繰り返し問い合わせを実施し、最終的に得られた結果をユーザーに回答するわけだ。このようにネームサーバAが結果を得るまで、各ネームサーバに順番に問い合わせを実施することを「再帰問い合わせ」と呼ぶ。通常、ユーザーがDNSに問い合わせを実施する場合、再帰問い合わせを要求しているのだ。
※2:DNSサーバと呼ばれることもあるが、本記事では「ネームサーバ」で統一する
また、ユーザーからの問い合わせを受け付け、再帰問い合わせを代行するネームサーバを「キャッシュサーバ」、管轄ドメインへの問い合わせに回答するネームサーバを「コンテンツサーバ」と呼ぶ。キャッシュサーバではユーザーからの問い合わせに効率よく回答するため、問い合わせ結果を一定期間保存する。ユーザーからの問い合わせがキャッシュサーバ上に保存されていたら、再帰問い合わせを実施せずにキャッシュサーバが回答する。
キャッシュポイズニングが引き起こす脅威
DNSの大まかな仕組みを理解したところで、キャッシュポイズニングについて解説していこう。キャッシュポイズニングとは、キャッシュサーバに偽の回答を保存させる(キャッシュさせる)攻撃手法である。キャッシュポイズニングから引き起こされる脅威は、悪意ある第三者が意図したIPアドレスへの不正誘導である。キャッシュサーバに偽の情報を保存させることで、ユーザーを不正なIPアドレスにアクセスさせてしまうわけだ。このような脅威は、一般に「ファーミング(pharming)」(※3)と呼ばれる。ファーミングを引き起こす脆弱性は、以下のようにキャッシュポイズニングのほかにも存在する。だが、キャッシュポイズニングは任意の偽の回答(ルートネームサーバすら標的となり得る)をキャッシュできるため、ファーミングを引き起こす最たる脆弱性なのだ。
- 問い合わせを偽のネームサーバへ誘導する(ドメイン乗っ取り)
- ネームサーバのゾーン情報を書き換える(ネームサーバへの不正侵入)
- クライアントPCのhostsファイル(Windowsで静的な名前解決に使われるファイル)を書き換える(不正プログラムへの感染)
※3:メールなどから個人を偽サイトに誘導するフィッシング(Phishing)と比べて、偽の回答から複数人を偽サイトに誘導することができるため、農場での刈り取りをイメージしたところに由来している。
Copyright © ITmedia, Inc. All Rights Reserved.