モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

どんなドメインも登録できてしまうDNSサーバの危険性

先日、契約者がどんなドメイン情報も登録できてしまうDNSサービスがあると、インターノット崩壊論者の独り言で報告されていました。
自分はそれをはてブ経由でtweet流したのですが、それほどは注目されなかったように思います。


まさかのレンタルDNSコンテンツサーバは実在する - インターノット崩壊論者の独り言(2012-06-24)
http://www.e-ontap.com/blog/20120624.html#p01

どんなゾーンのデータでも登録できてしまい、しかもキャッシュ兼用などというレンタルサーバを提供している、とんでもない「まさか」のレンタルDNSプロバイダが存在している


これはとんでもなく危ない状況なのですが、この文章読んだだけではどう危ないのかが想像しにくかったのではないかと思います。
そこで支援の意味で、もうちょっと具体的に「危なさ」を説明してみます。

元エントリーの説明で省略されている点

上で参照した一文の中には、2つの暗黙の了解が含まれています。


ひとつめは「どんなゾーンのデータでも登録」について。
これはつまり「mail.google.com」とか「www.facebook.com」とか「www.visa.co.jp」とか、そういう実際に存在しているドメインのものも含め全部、なんでも、登録できてしまうということです。


ふたつめは「キャッシュ兼用」につて。
これは暗にクライアント、例えばユーザのPCやそこの提供しているレンタルサーバが参照するDNSだということを表しています。
つまり、その勝手に登録された「mail.google.com」などのドメインが、どこかから参照されてしまうということです。

クライアントPCでの危険性

mixiのページ閲覧を例に、なにが行えてしまうのか説明をします。
通常のmixiのページ表示はだいたい下記のように行われます。
DNSサーバに名前からIPアドレスを、この場合はmixi.jpとads.mixi.jpのIPを聞きに行きます。
それに対応したIPアドレス、114.31.104.32と114.31.179.223が返ります。
そのIPアドレスに対しコンテンツを取りに行き、取得したものを表示します。


そこで例えば、この任意のゾーン登録可能なDNSサーバに「ads.mixi.jp」を「127.0.0.1」のIPアドレスに設定しておいたとします。*1
そして自分のPCがこのDNSを引く設定になっている場合を想像してみましょう。
mixiの広告は全てads.mixi.jpで指されるサーバ上にあります。
なのでmixiを見にいくと127.0.0.1にアクセスし(そこにあるはずの)広告を表示させようとします。
127.0.0.1は自分自身を指すIPですから、通常はエラーになって何も表示されません。
こうやってmixiのページから広告を消すことができます。


では次に「ads.mixi.jp」の指す先を、自分の立てたWebサーバにしたとします。
そしてmixiのURLに合わせて、自分の出したい広告を表示するようにしておきます。
今度はmixiのページで、広告だけは全く関係のないものを見せることができます。


では「mixi.jp」の指す先を、mixi.jpへ中継(proxy)するように設定したサーバへ指定してやった場合はどうでしょうか。
中継するときにその通信内容を全てログをとることができます。
だから、mixiに対してのすべての通信をそのproxyサーバで傍受できることがわかると思います。


これはmixiを例にしてみましたが、他のどのドメインに対しても同じことが言えます。
実はこれと同じような攻撃例が、つい最近のIIJ Security Diaryで報告されています。


IIJ Security Diary: ホームルータへの不正な設定変更による偽DNSサーバの参照
https://sect.iij.ad.jp/d/2012/06/148528.html

DNS設定を書き換える攻撃が発生していました。これにより、特定のサイトに関するDNSの問い合わせに、攻撃者の用意したDNSサーバが偽の応答を返すことで、利用者は偽のサイトに誘導されます。(略)偽の銀行サイトへアクセスさせてIDとパスワードを盗んでいました。


これの場合、書き換えているのは「家庭用ルータのDNS設定」ですが、ここを「利用しているDNSサーバの設定」に置き換わったものと考えれば良いでしょう。


つまり、やろうと思えばなんでも出来る状況なのです。
しかもウイルス等が内部に仕込まれているわけではないので、攻撃されていることに気付くのが非常に難しいです。

ホスティングサーバでの危険性

通常、インターネット接続で使うDNSは、接続ISPから提供されるDNSを使うと思います。
だから、こういうDNSを使う例はほとんどないと思うかもしれません。


しかし、ホスティングサービスを利用している場合、そのホスティングサーバが利用するDNSがどうなっているかは注意すべきです。
もしそのDNSサーバが上記のような脆弱性を持っている場合、ホスティングサーバが接続する先のサーバからの通信内容は信用出来ないものになります。


例えば、他のメールサーバにPOPで接続してWebメールで表示したり、FacebookAPIを叩いて情報を取得したりするような、マッシュアップ系のサービスを提供していたとします。
先ほどの例のように、「connect.facebook.net」のIPを、facebook APIサーバへのproxyとして機能するサーバに指定しておきます。
そこでやりとりされた情報は、全てproxyサーバを通じて傍受されることがわかります。

結論

なのでこういった運用のDNSサービスは非常に危険であり、提供している側は即対応すべきです。
また、自分がそういったDNSサービスのユーザの場合、すぐに利用をやめて、接続ISPの提供しているDNSなど、より安全と思われるDNSサーバを利用するように変更すべきです。

*1:実は実際にこういう設定をしていたという例をtwitterで見たので、例に取り上げました