JAPAN REGISTRY SERVICESＪＰＲＳ トピックス＆コラム

No. 009

新たなるＤＮＳキャッシュポイズニングの脅威～カミンスキー・アタックの出現～
ＤＮＳに不正なデータを記憶させドメイン名の乗っ取りを図る「ＤＮＳキャッシュポイズニング」と呼ばれる攻撃の危険性が高まっています。この攻撃の概要と対策について解説します。

■キャッシュ機能と DNS キャッシュポイズニング

TCP に比べてデータ到達の信頼性は下がりますが、相DNS には、問い合わせによって得られた IP アドレス

手との通信に必要な手間が少ないため、一度のやりとりや権威 DNS サーバ名などの情報を一時的に記憶し、で通信が完了し、かつサーバにおいて数多くのクライ名前解決の際にそれらを再利用することで処理の効率アントからの要求をできる限り短時間で処理する必要の化を図る、という機能があります。これを DNS のキャッシあるプロトコルに向いたものであるといえます１。

ュ機能といい、キャッシュ DNS サーバや一部の DNS ク

しかし、UDP はその特性から、TCP に比べ通信デーライアントに実装されています。キャッシュ機能は DNSタの偽造が容易であるという短所があります。そのためサーバへの問い合わせ数を大幅に減少させ、DNS やDNS では、処理ごとに毎回異なった「ID」を付け、問いネットワークの負荷を全体に軽減させるという重要な役

合わせ内容とともに ID の一致も併せてチェックすること割を担っています。

により、応答の正当性を確認しています。

しかし、この機能を悪用し、偽のデータをキャッシュ

しかし、現在の DNS プロトコルでは、悪意を持った第に記憶させることでドメイン名の乗っ取りやフィッシング三者が、などを図る「DNS キャッシュポイズニング（DNS cache①発信元として DNS サーバの IP アドレスを偽装し、poisoning）」と呼ばれる攻撃が知られています。

②問い合わせに使われた UDP ポートと同じポートに、インターネットユーザー

example.jpの権威DNSサーバ

キャッシュDNSサーバ（http://example.jp/へアクセス）

１

５

毒入れされたキャッシュサーバによりフィッシングサイトへ誘導

正規のサイト２であることを判別できないため、DNS キャッシュポイズニ

３
送信元のIPアドレスを詐称した偽の情報を送り付け、正しい応答の代わりに偽の情報がキャッシュされるように仕向ける

ログインID： taro ログインID： taro
パスワード： *****
パスワード： *****④本来の DNS 応答よりも先に応答を返すことができた場合、問い合わせ元はそれが偽のデータ

４

フィッシングサイト③問い合わせに使われた ID と同じ ID を付け、ングが成立してしまうことになります。

■DNS キャッシュポイズニングと TTL 値の関係３

ここまでで解説した DNS キャッシュポイズニングの脆

攻撃者

インターネットユーザーは、フィッシングサイトに誘導されたことに気付かずにユーザーIDやパスワードを入力し、情報を盗まれてしまう

弱性そのものは、以前から知られていました。従来のDNS キャッシュポイズニング攻撃では、通常の DNS 応

DNS キャッシュポイズニングの概要

答、例えば www.example.jp に対し攻撃を試みる場合、「ポイズニング」は、毒性を持つものが内部に取り込www.example.jp の問い合わせに対する応答そのものをまれることにより正常な機能が阻害されることを表して偽造する形で行われていました。
この場合、DNS キャッシュポイズニングが成功する可おり、「毒入れ」とも呼ばれています。

■DNS キャッシュポイズニングの仕組み
DNS では主要な通信プロトコルとして UDP を使用します。UDP では TCP と異なり、相手との通信前の折衝やデータの到達確認を行いません。そのため、UDP はCopyright © 2011 株式会社日本レジストリサービス

能性は、該当するデータの有効時間（TTL: Time To
１

DNS が 20 年以上もの間その基本仕様を大きく変更することなく、急成長したインターネットを現在まで支え続けてこられたのは、通信プロトコルとしてコストの少ない UDP が採用されていたことが大きな要素の一つであった、といえるでしょう。

※掲載内容は2011年2月現在のものです。

1

JAPAN REGISTRY SERVICESLive）の設定値に依存します。つまり、キャッシュが有効

また、カミンスキー・アタックでは、攻撃者が問い合わである間は目的とする名前に対する外部への問い合わせる名前を毎回変化させることにより、攻撃目標となるせが行われないため、権威 DNS サーバ側で長い TTL名前に対する攻撃を連続して繰り返し行うことができるを設定することにより、DNS キャッシュポイズニングに関ようになります。従来の DNS キャッシュポイズニングではする危険性をある程度軽減することができます。

ポイズニングが一度失敗した直後に同じ名前に対してTTLが有効な間、キャッシュDNSサーバはその名前の外部ネットワークへの検索を行わない
TTLが有効な間はそのキャッシュDNSサーバに対し、従来の方法でのDNSキャッシュポイズニングはできない

DNS キャッシュポイズニングと TTL の関係■新たに発見された攻撃方法

即座に再攻撃を試みることは不可能でしたが、カミンス
キー・アタックではそれが可能となります。
更に、一部のキャッシュ DNS サーバの実装ではカミンスキー・アタックで攻撃を受けた場合、通常の名前検索で攻撃対象の名前が既にキャッシュされている場合であっても、それを無視する形で偽の情報が上書きさ

しかし、セキュリティ研究者のダン・カミンスキー氏が、れてしまうことから、攻撃対象データの TTL の設定値やDNS キャッシュポイズニングをより効率的に実行可能なキャッシュ情報の有無にかかわらず、外部からの DNS新しい攻撃方法を発見し、その方法が 2008 年の 7 月にキャッシュポイズニングが成立してしまうことがあります。

明らかにされたことから、DNS キャッシュポイズニング攻撃に対する危険性が従来に比べ急激に高まりました。
この方法は「カミンスキー・アタック（Kaminsky Attack、②IPアドレスを詐称し、NSとAをセットにした偽の応答を送り続ける

example.jp
www.example.jp①キャッシュが効かないように、ホスト名を変えながら問い合わせを繰り返す

NS www.example.jp
A 192.0.2.1
001.example.jp

あるいは Kaminsky’s attack）」と呼ばれています。

002.example.jp

カミンスキー・アタックでは、攻撃対象の名前（例:（例: 001.example.jp）の問い合わせを攻撃目標となるキャッシュ DNS サーバに対して送り（あるいは、その名前攻撃者・・・

www.example.jp）と同じドメイン名内の存在しない名前

003.example.jp
キャッシュDNSサーバ

カミンスキー・アタックが従来の攻撃方法と異なる点
１．攻撃目標となる名前に対し連続・繰り返し攻撃が可能
２．一部実装では既存のキャッシュが無効化されるを検索させるように仕向け）、その直後に「私はその名（上記の例ではwww.example.jpが既にキャッシュされていても上書きされる）前（001.example.jp）を知らないが、www.example.jp がカミンスキー・アタックの概要知っている。その IP アドレスは xxx.xxx.xxx.xxx（攻撃者が用意した偽のサーバの IP アドレス）である」という偽の応答情報を、ID を変化させながらキャッシュ DNS サ■DNS キャッシュポイズニングの脅威
DNS キャッシュポイズニングにより偽のデータを記憶させられてしまった場合、その被害はそのキャッシュ２ーバに大量に送り付けます 。もし、この偽の応答が前

DNS サーバを参照しているすべてのクライアントに及び節で解説した条件を満たしている場合、DNS キャッシュます。また、DNS はほぼすべてのインターネットサービポイズニングが成立してしまいます。

スが使用しているため、DNS キャッシュポイズニングは現在の DNS プロトコル（RFC 1035）では、DNS の ID

インターネット全体の安全性にかかわる問題です。

は 16 ビットと定められているため、ID は最大でも 65,536

特に、今回のカミンスキー・アタックは危険性が非常通りとなります。この値は現状のインターネットにおいてに高く、インターネット全体にとって大きな脅威であり、総当たり攻撃に対し必ずしも十分な耐性を有していると早急な対策が必要になります。

はいえません。

次節では、カミンスキー・アタックを含む、DNS キャッシュポイズニングへの対策方法について解説します。

２攻撃者は偽のサーバ上で、example.jp の偽の権威 DNS サーバをあらかじめ動作させておきます。

Copyright © 2011 株式会社日本レジストリサービス

2

JAPAN REGISTRY SERVICES■DNS キャッシュポイズニングへの対策方法

2. オープンリゾルバは危険…適切なアクセスコントロ

1. 問い合わせ UDP ポートのランダム化…必要に応じールやフィルタリングの適用を

サーバソフトウェアのバージョンアップを

インターネット上のどこからの DNS 再帰検索要求でも従来の主なキャッシュ DNS サーバの実装では、問い受け付ける状態になっているキャッシュ DNS サーバを合わせに使う UDP ポートは一つに固定されているか、「オープンリゾルバ」といいます。オープンリゾルバはあるいは決められた範囲の限られたポートしか使用しな

DNS Amp 攻撃３の踏み台に使われる危険性があるなど、いものがほとんどでした。これを問い合わせごとに毎回本来好ましくない設定ですが、DNS キャッシュポイズニ変える（ランダム化）ように変更することで、総当たり攻ングの攻撃者から見た場合オープンリゾルバには、攻撃に対する耐性を高めることができます。そのため今回、撃者が任意のタイミングで、任意のドメイン名に対する問い合わせ UDP ポートをランダム化するための緊急パキャッシュポイズニング攻撃を始めることができるため、ッチが、各開発元からリリースされました。

非常に危険な状態です。

UDP ポートをランダム化することにより、DNS キャッシ

また、DNS サーバでアクセスコントロールが適切に設ュポイズニングが成功する確率を、ID のみがランダムで定されていても、発信元 IP アドレスを偽装した DNS デポートが固定である場合に比べ、大幅に低下させることータが外部から到達可能であった場合、そのデータをができます。

受け取ったキャッシュ DNS サーバが反復検索を始めてあるキャッシュDNSサーバに対し、DNSキャッシュポイズニングが成立する確率

R WPS N  Port  ID
R: 攻撃対象1台当たりに送るパケット量(pps)
W: 攻撃可能な時間(問い合わせ⇒応答のRTT)
N: 攻撃対象レコードを保持する権威DNSサーバの数
Port: 問い合わせに使われるUDPポート番号の数
ID: DNSのID (16bit = 65,536)しまう恐れがあります。
そのため、DNS キャッシュポイズニングを防ぐためには DNS サーバにおける対策だけでは不十分であり、内部ネットワークの IP アドレスを詐称したデータが外部から到達することがないよう、ネットワークにおいてもフィルタリングなどの適切な対策を取る必要があります。
3. 権威 DNS サーバは狙われやすい…機能分割と反上記式において、
UDPポート番号が固定 ⇔ Port = 1
UDPポート番号がランダム ⇔ Port = 65,536

復検索機能の無効化をとなるため、UDPポート番号をランダム化することにより、DNSキャッシュポイズニングが成立する確率Psを小さくすることができる。

るためのサーバとしてインターネット上に広く公開されまUDP ポート番号ランダム化の効果

ドレスは誰でも簡単に知ることができるため、もし権威カミンスキー・アタックでは問い合わせ UDP ポートがDNS サーバがオープンリゾルバの状態に設定されてい固定であった場合、数秒程度の攻撃で DNS キャッシュ

権威 DNS サーバは、それぞれのドメイン名を管理すす。そして、公開が目的である権威 DNS サーバの IP アた場合、非常に危険です。

ポイズニングを成立させることができます。キャッシュ

本来、権威 DNS サーバとキャッシュ DNS サーバはDNS サーバを運用されている方は現在使用しているサDNS の構成上別の機能です。そのため、権威 DNS サーバソフトウェアのバージョンを確認し、必要に応じ最ーバとキャッシュ DNS サーバはできる限り別のサーバ新版に更新しておきましょう。

（あるいは別の IP アドレス）に分割し、権威 DNS サーバ

主な開発元における対応情報は、後述の CERT/CCの Web ページにまとめられています。
US-CERT Vulnerability Note VU#800113<http://www.kb.cert.org/vuls/id/800113>

Copyright © 2011 株式会社日本レジストリサービス

では反復検索機能を無効に設定しておくことが推奨されています。
３ DNS Amp 攻撃の概要と対策については、JPRS トピックス&コラム
No.003「DDoS にあなたの DNS が使われる」をご参照ください。

3

JAPAN REGISTRY SERVICES■根本的な解決方法は DNSSEC の導入
これまでに解説した方法は、DNS キャッシュポイズニングの危険性を確率的に下げるためのものです。
DNS キャッシュポイズニングを根本的に防ぎ、インターネットの安全性を向上させるためには、DNS プロトコ
ル自体の改良が必要になります。そして、それを目的と

DNS サーバがオープンリゾルバになっていないか、②もしオープンリゾルバになっている場合、問い合わせ
UDP ポートが固定されていないか、の２点をチェックすることができます。
IANA — Cross-Pollination Scan
<https://recursive.iana.org/>

して開発された DNS のセキュリティ拡張機能である
DNSSEC4の導入が進められ始めています。
しか し、 DNSSEC を導入するためには、関連するDNS サーバ（権威 DNS サーバ、キャッシュ DNS サーバの双方）すべてを DNSSEC 対応のものに更新する必要があるなど、インターネットを構成するさまざまな立場から対応を進めていく必要があります。このため、
DNSSEC の普及促進のための活動を今後どう進めていくかが、大きな課題となっています。

■攻撃の検知と防御―現時点における試み

チェック結果の出力例(IANA)

このように根本対策である DNSSEC の普及には今後

また、DNS に関する調査・分析活動や情報交換の場ある程度の時間を要するため、DNS キャッシュポイズニを提供している DNS-OARC（DNS Operations, Analysis,

ング攻撃を効率良く検知し、効果的な防御を行うためand Research Center）では、ユーザーが現在使っていの手法が研究開発・発表され始めています。

るキャッシュ DNS サーバの ID と UDP ポート番号が十分

カミンスキー・アタックを始めとする DNS キャッシュポ
イズニング攻撃では、通常の運用ではほとんど検出されない、問い合わせ時の ID や UDP ポート番号と一致しない、不正な DNS 応答が観測されます。これを効率なランダム性を備えているかどうかを視覚的にチェックできる Web ページを開設しています。
Web-based DNS Randomness Test | DNS-OARC<https://www.dns-oarc.net/oarc/services/dnsentropy>

良く検知することで攻撃をブロックしたり、必要に応じより信頼性の高い TCP での再問い合わせを行ったりするなど、さまざまな対策が提案、実装されています。
根本対策である DNSSEC も、JP ドメイン名を含むいく
つかの TLD や RIR などで導入が始まっています5。

■自分の DNS サーバをチェックするには
ICANN/IANA では、DNS の管理者が権威 DNS サーバの設定状況をチェックするための Web ページを開設しています。
この Web ページでは、①指定するドメイン名の権威
4

DNSSEC の概要と普及に向けた課題については JPRS トピックス&コラム
No.013「DNSSEC の概要と今後の展開」をご参照ください。
5
JPRS では 2011 年 1 月 16 日に DNSSEC を JP ドメイン名に導入しました。

Copyright © 2011 株式会社日本レジストリサービス

チェック結果の出力例(OARC)※全てのコラムは http://jpinfo.jp/topics-column/ でご覧いただけます。 4