ふさいでおきたい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)と比べて、偽の回答から複数人を偽サイトに誘導することができるため、農場での刈り取りをイメージしたところに由来している。
では、どのようにネームサーバに偽の回答をキャッシュさせるのだろうか。先のDNSの仕組みで紹介したように、DNSでは問い合わせと回答をセットで取り扱う。キャッシュサーバが別のネームサーバに問い合わせを実施した場合、その問い合わせへの回答を以下の6つの情報で識別する。
- 送信元IPアドレス
- 送信元ポート番号
- 送信先IPアドレス
- 送信先ポート番号
- 問い合わせ内容
- 問い合わせにおけるトランザクションID(TXID)
逆を言うと、この6つの情報が問い合わせと同じであれば、キャッシュサーバが受け取った回答は正当なものであると判断され、キャッシュされてしまう。DNSの問い合わせ・回答はUDPでやりとりされるため、パケットの偽造が容易だ。このような要素を組み合わせることで、キャッシュポイズニングが実現する。
悪意ある第三者が標的のキャッシュサーバに対して、再帰問い合わせを発生させ、前述の6つの情報を設定した偽の回答を標的キャッシュサーバに送信する。問い合わせ先のネームサーバから正規の回答が届く前に偽の回答が標的キャッシュサーバに届けば、偽の回答は正当なものとしてキャッシュされる(図2)。その後、キャッシュサーバに同じ問い合わせを実施してきたユーザーには偽の情報が回答されるわけだ。
キャッシュポイズニングは何も新しい手法ではなく、1990年代には既に存在が知られていたものである。ただし、これまでは実現の可能性が低いと考えられていた。だが、2008年7月にこの事情が変わった。セキュリティ研究者ダン・カミンスキー氏により発表された新手法(「Kaminsky Attack」と呼ばれる)では、キャッシュポイズニングが成功する可能性が非常に高くなったのだ。
図2の手法では、一度キャッシュポイズニングに失敗した場合、回答に設定されたTTL(Time To Live:回答の有効時間)の秒数だけ待たなければならなかった。これは問い合わせの回答に偽の情報を設定しているためだ。しかしKaminsky Attackでは、問い合わせの回答ではなく、回答に付与するオプション情報(Addtional Recordと呼ぶ情報)に偽の情報を設定する。こうすることで、異なる問い合わせで同じ情報を設定できるため、事実上の総当たり攻撃が可能となった。
Kaminsky Attackの公表から執筆時点(2008年3月)に至るまで、筆者が知る限りで公になったキャッシュポイズニング事例は、米AT&T、中国China Netcomの2つの事例だけだ。特にChina Netcomの事例では、誘導先のWebサイトにWebブラウザなどの脆弱性を狙った攻撃コードが仕込まれていた。日本では事例こそないものの、キャッシュポイズニングが成功する可能性があるネームサーバが多数存在することが報告されている。IPA(情報処理推進機構)のプレスリリースによると、2008年第4四半期(10~12月)において、計792件の脆弱なネームサーバの存在が報告されている。
このように、Kaminsky Attack公表から早くも半年近くが経過しているにもかかわらず、脆弱なネームサーバが多数存在するのはなぜだろうか? 検索エンジンの検索結果から得られたドメインを幾つか無作為に調査したところ、脆弱なネームサーバが見つかった(※4)。脆弱なネームサーバが登録されていたドメインを調べてみると、ほかにも脆弱でないネームサーバ(対象ドメインに関係のないネームサーバ)が登録されていた。脆弱なネームサーバが数多く存在するのは、DNS運用を外部委託しているため、自社で運用しているネームサーバの管理が行き届いていないからだと考えられる。キャッシュポイズニングは“現在進行形”の脅威なのだ。
※4:ラックでは、発見した脆弱なネームサーバはしかるべき手順で報告する予定である。なお、脆弱なネームサーバを確認する際には、IPAが公開している確認手順を実施した(関連記事参照)。
DNSを守れ! 企業が実施すべきセキュリティ対策
ファーミングの脅威に対抗するため、図3のような対策が考えられる。なお、本来であれば、キャッシュポイズニングへの対策にはDNSの拡張仕様である「DNSSEC(Domain Name System Security Extensions)」(※5)が最も有効だ。だが、DNSSECはDNS全体で実装されないと十分な効果を得られないため、執筆時点では現実的な対策ではないとして除外した。
※5:DNSの回答に電子署名を付与し、回答の完全性を維持するDNSのセキュリティ拡張仕様。
まず何よりも実施すべきなのは、DNSサーバソフトウェアのバージョンアップ。だが、これだけでは不十分である。キャッシュポイズニングはDNSの仕様上の脆弱性であるため、サーバソフトウェアを最新バージョンにしたからといって、対策できるというものではない。実際に最新のDNSサーバソフトウェアへのキャッシュポイズニングの成功事例も報告されている。そこで、バージョンアップに続いて実施すべきなのは、DNSプロトコルでのアクセス制御である。具体的には以下の項目となる。
- インターネットからの不要な再帰問い合わせの禁止
- コンテンツサーバ、キャッシュサーバの分離
IPAへ報告された脆弱なネームサーバは、インターネットから検査用ネームサーバへの再帰問い合わせを実施し、その回答から脆弱であると判断されたと考えられる。つまり、いまだインターネットからの再帰問い合わせを要求するネームサーバが数多く存在するというわけだ。再帰問い合わせが可能という時点で、キャッシュポイズニングが成功する可能性がある。
コンテンツサーバについては、本来再帰問い合わせが必要ないため、再帰問い合わせを無効にすべきだ。可能ならば、コンテンツサーバ、キャッシュサーバを機能的に分離するのが望ましい。サーバ運用コストとの兼ね合いで分離が困難な場合、再帰問い合わせにはイントラネットからのみ許可するといった、DNSの設定によるアクセス制御を実施していただきたい。
DNSのアクセス制御により、インターネットからのキャッシュポイズニングにはある程度対抗できるはずだが、イントラネットからキャッシュポイズニングへの対策とはなりにくい。内部からのキャッシュポイズニングについては、ネットワーク構成で偽装パケットを遮断するのがよいだろう。Kaminsky Attackでは大量の偽装パケットがネームサーバに対して送信される。もし内部に犯人がいた場合、内部犯が所属するネットワークとは異なるIPアドレスの偽装パケットが送信される。そこでネームサーバを独立したネットワークに設置し、途中経路にファイアウォールを設置すれば、偽装パケットを遮断することも可能だ。
セキュリティ機器による補助対策も有効
こうしたDNSサーバソフトウェアの最新版へのバージョンアップ、コンテンツサーバ、キャッシュサーバの分離などの対策は必ずしもすぐに実施できるわけではないだろう。そのため、これまで紹介したセキュリティ対策とともに、DNSトラフィックのモニタリングの実施を提案したい。これは補助的な対策なので脅威自体を防ぐことはできないが、その発生を検知することができる。
自社ネットワークに不正侵入検知システム(IDS:Intrusion Detection System)/不正侵入防御システム(IPS:Intrusion Prevention System)を既に導入している場合、製品によってはキャッシュポイズニングを検知するシグネチャ(※6)が用意されているので、これを利用する方法もある。これらのシグネチャを有効にすることで、キャッシュポイズニングの発生を検知できる。ただし、IDS/IPSのシグネチャはDNSの問い合わせや回答が一定数発生したら、キャッシュポイズニングの“可能性”があるとして警告を発するものだ。運用する際は、定常的に発生するDNSトラフィック量を把握し、どれだけのDNS問い合わせ/回答が発生したら「異常」と見なすのかを定義する必要がある。
※6:不正な通信を検知するためのパターンマッチング文字列。
IDS/IPSを導入していない場合は、DNSサーバソフトウェアの統計情報を利用するとよいだろう。DNSサーバソフトウェアでは、DNSの問い合わせ数・回答数といった統計情報を取得できる(※7)。先述したKaminsky Attackでは、存在しないホスト名の問い合わせが大量に発生する。存在しないホスト名の問い合わせがあった場合、ネームサーバでは“存在しない”という回答を返す。DNSサーバソフトウェアの統計情報において、“存在しない”回答数を監視し、回答数が急増したら警告を発するという仕組みが有効だと考えられる。
※7:DNSサーバソフトウェアのBINDであれば、「rndc stats」コマンドで統計情報が得られる。
いずれの仕組みにおいても、キャッシュポイズニングの発生を検知したら、キャッシュサーバのキャッシュ情報を削除するという(強引ではあるが)暫定的な対策が取れるだろう。DNSサーバソフトウェアのバージョンアップといった根本的な対策が完了するまでの一時的な対策としてご検討いただきたい。
今回紹介したセキュリティ対策は、DNSにおける基本的なセキュリティ設定だと思われるかもしれない。だが筆者は、この当たり前の対策ができていないネームサーバが予想以上に多いのではないかと危惧(きぐ)している。読者の皆さんが利用しているネームサーバに脆弱性がないか、ぜひ一度確認していただきたい。
<筆者紹介>
勝海直人
ラック サイバーリスク総合研究所
ラックのセキュリティ監視センターJSOC(Japn Security Operation Center)においてファイアウォール、IPSといったセキュリティ機器の導入・運用を経験し、現在セキュリティコンピュータ研究所に所属。セキュリティ動向調査・新技術の評価などを担当している。
同氏が所属するコンピュータセキュリティ研究所、およびデータベースセキュリティ研究所が発行したリポート
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
3
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
4
221人調査で分かった「情シス最大のストレス」は?
-
5
「データストレージの活用方法」に関するアンケート
-
6
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
7
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
8
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
9
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
10
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー