インターネットの根幹「DNS」に根本的欠陥が見つかる

今月に入り、インターネット上の通信の暗号化を行うOpenSSLの脆弱性が存在し、ユーザーIDやパスワード等の暗号化されている情報が外部から見えてしまう「ハートブリード」問題が明らかになりました。

このハートブリードだけでも大問題ですが、今度はインターネットの仕組みの根幹に重大な欠陥があると判明しました。

インターネットでの国別コード、「.jp」ドメインを管理する日本レジストリサービス(JPRS)は15日、DNSサーバへの攻撃の危険性が高まっているとして、DNSサーバの設定を確認するように緊急呼びかけを行いました。

このJPRSの発表に対し、この欠陥を発見した中京大学の鈴木常彦教授、前野年紀氏は「危険性をよく理解して対策をとるにあたって十分な情報が含まれているとはいえません」を懸念し、下記のブログ記事等でこの問題の危険性を訴えています。

この問題はインターネットの根幹に関わるものですが、どんな問題を孕んでいるのでしょうか。それを理解するために、まずはDNSの仕組みから見て行きましょう。

DNSの仕組みとDNSキャッシュサーバ

DNSとはインターネットの根幹に関わる仕組みで、目的のサーバにアクセスする為の重要な役割を持ちます。簡単に説明すると、"http://www.example.jp"というURLのサイトを見たい場合、それを管理するサーバのインターネット上の住所(IPアドレス)が必要になります。そこで、DNSサーバに上記URLのラベル(ドメイン)に相当する"www.example.jp"を管理するサーバのIPアドレスを問い合わせ、DNSサーバは持っているリストと照合してIPアドレスを教えるか、リストに無かった場合は別のDNSサーバに問い合せてIPアドレスを入手して教えます。普段、ブラウザでインターネットを閲覧していてもほとんど意識する事の無いDNSですが、目的のサーバに辿り着く為には無くてはならない存在です。

インターネットに接続するサーバは膨大な数に上り、そのIPアドレスやドメインも日々変わっており、中央で一括してリストを管理する事は現実的ではありません。その為、DNSはインターネット上に分散された階層構造をしており、上位のDNSサーバに問い合わせが集中しないよう、下位のDNSサーバが過去の問い合わせ結果を一定期間保存(キャッシュ)し、他のDNSサーバに再度問い合わせをしないような仕組みになっています。このように問い合わせ結果をキャッシュするサーバをDNSキャッシュサーバと呼び、今回問題になっているのはこのDNSキャッシュサーバを攻撃する、DNSキャッシュポイズニングと呼ばれる攻撃手法です。

キャッシュが改竄されると、悪意のあるサイトに誘導される恐れ

DNSキャッシュポイズニングとは、攻撃者がDNSキャッシュサーバからの問い合わせに対して偽のIPアドレスを通知し、"www.example.jp"ドメインのサイトに行こうとした利用者を、誤ったリストによって悪意のあるサーバに誘導しようとする攻撃の事です。本物そっくりな偽サイトに誘導されてしまった場合、気付かずにログインIDやパスワードを入力してしまうと、攻撃者にIDとパスが筒抜けになってしまいます。

従来、DNSの仕組みでこの攻撃は実効性が低いのではないかと考えられていました。というのも、先に述べた通り、DNSキャッシュサーバは問い合わせ結果を得ると一定期間リストに保存します。この保存期間を長くすると、次に偽のIPアドレスを吹き込むチャンスが攻撃者に巡ってくるのは大分先の話になり、攻撃手法としては実用的でないと考えられていました。

ところが、2008年8月にカミンスキーアタックと呼ばれる新たな攻撃手法が発見されました。この手法では、DNSキャッシュサーバの問い合わせを攻撃者が意図したタイミングで行わせる事ができる為、以前の手法と比べて実用的な攻撃となりました。ここ最近、大手インターネットサービスプロバイダーに対して、このカミンスキーアタックによると見られるアクセスが増大しており、その為にJPRSは緊急呼びかけを行ったとされていますが、前述の通り、鈴木氏、前野氏らが発見した欠陥はさらに危険な結果を招くとして、DNSの「仕様、実装、運用をすべて見直す必要がある」とまで警告しています。

今回明らかになったDNSの欠陥はキャッシュの優先順位に関連するもので、上位の信頼できるDNSサーバから応答された情報のキャッシュを、下位の偽装された情報が優先されて上書きされます。これにより、攻撃対象のDNSキャッシュサーバのco.jp、ne.jpのような”.jp”ドメイン、地域ドメインそのものへのキャッシュポイズニングを可能とします。つまり、これまでの攻撃では"www.example.jp"の"example"部のドメインの偽装に留まっていたものが、".jp"等の地域を示すドメインに対してまで偽装が可能になりました。攻撃が成功したDNSキャッシュサーバを参照すると、".jp"が付くURLは全て悪意のあるサーバに誘導される可能性が出てくるということです。

先に明らかとなったハートブリードも深刻な問題ですが、脆弱性は既に修正されている為、各Webサービスや機器が適用さえ行えば解決できるものです。しかし、今回の問題はDNSの仕様そのものに根ざした欠陥で、欠陥の修正やその適用は相当の時間がかかるものと思われます。現状取れる対策等についてはサーバ管理者側でないと取れないものばかりですが、参考となる鈴木教授のサイト、Twitter等を下記に示しますので、是非ご覧になって下さい。

【鈴木教授のブログ】

インターノット崩壊論者の独り言「 開いたパンドラの箱 長年放置されてきた DNS の恐るべき欠陥が明らかに」

【鈴木教授のTwitterアカウント】

https://twitter.com/tss_ontap_o

【平易な解説】

Geekなぺーじ「強烈なDNSキャッシュポイズニング手法が公開される」

※初稿にて鈴木常彦氏の肩書及び名前、前野年紀氏の肩書に誤りがありました。お詫びして訂正致します。