[PR]小規模ECサイトに最適なWAF、SiteGuard Lite

徳丸浩の日記


2007年11月26日 今日の用語特別版

_ DNS Rebinding

楽天テクノロジーカンファレンス2007にて、カーネギーメロン大学日本校武田圭史先生の講演を聴講して、DNS Rebindingの説明がとても分かりやすかったので、ここに再現を試みる(文責は徳丸にある)。

DNS Rebindingとは

DNS Rebindingは、DNSの返すIPアドレスを巧妙に変化させることにより、JavaScriptやJavaアプレットなどのsame origin policyを破り、インターネットからローカルネットワーク(通常外部からはアクセスできない)などに対してアクセスする手法をいう。

攻撃に必要なもの

攻撃者は、自分のコントロール可能なドメイン名(以下の例ではtokumaru.orgを用いる)を持っているおり、かつそのドメイン名のWebサーバー(以下、罠サーバーと呼ぶ)があること。

攻撃のシナリオ

DNS Rebindingは受動攻撃の一種であり、攻撃者は、攻撃対象にアクセス可能なユーザに対して、メールなどにより罠サーバー(ここでは、tokumaru.org)に誘導する。罠サーバーに誘導された後の流れは以下の通り。

画像の説明
(1)↑tokumaru.org のIPアドレスをDNSに要求
(2)↓210.188.204.136 (TTL=5秒)を返す
(3)↑HTMLコンテンツを要求
(4)↓HTMLコンテンツを返す
(5) 10秒後に、HTML中に埋められたJavaScriptがtokumaru.orgのコンテンツを要求(same origin policyには違反しない)
(6)↑すでにDNSのキャッシュは無効なので、再びtokumaru.org のIPアドレスをDNSに要求
(7)↓今度はプライベートアドレス 172.21.21.11(TTL=1日)を返す
(8)←JavaScriptは、ローカルネットワーク内のWebサーバー(172.21.21.11)にコンテンツを要求する
(9)→ローカルサーバー上のコンテンツが返る
(10)↑form.submit()などを用いて、(9)の情報を罠サーバー(210.188.204.136)に返す

上記のように、DNSのTTLを極端に短く(上記例では5秒)設定することにより、同一ドメイン上のコンテンツを要求する際にDNSサーバーへの問い合わせを再度実行させ、二番目の問い合わせに対しては、攻撃対象(外部からはアクセスできない)のIPアドレスを返すことがミソである。これにより、見かけ上はsame orign policyに抵触することなく、特定のユーザを中継することで、ローカルネットワークなどの資源にアクセスすることができる。

DNS Rebindingについては、金床氏の研究が有名で、Black Hat Japan 2007にて、金床氏の研究が発表された。これによると、JavaアプレットやFLASHのSocketを利用することにより、任意のプロトコルに対しても、ローカルネットワークに対する情報の収集や攻撃などが可能である。 金床氏による、DNS Rebindingのデモページはこちら

対策(DNS Pinningなど)は後で。


tokumaru.orgは単なる例なのに、徳丸浩までなんか悪い奴に見えますね。しまった。

自作コンパイラの部屋 > 用語集 > DNS Rebinding

追記(2010/03/01)

携帯電話の「かんたんログイン」に対するDNS Rebindingによるなりすまし脆弱性については「iモードIDを用いた「かんたんログイン」のDNS Rebinding脆弱性」を参照されたい。また、現実に発見された脆弱性については「ケータイtwitter(twtr.jp)においてDNS Rebinding攻撃に対する脆弱性を発見・通報し、即座に修正された」で報告している。

本日のツッコミ(全7件) [ツッコミを入れる]
_ yamagata21 (2007年11月26日 11:00)

(7) で レスポンスを TTL=1日にしてしまうと、(10) の情報の送信先が 172.21.21.11 になってしまう気がしないでもありませんw (サブドメインを使い分けるか、TTL を短くするかしないとダメかも知れませんね~。)

_ 金床 (2007年11月26日 11:59)

そこはサブドメ使い分けでしょう(゜д゜) <br>なんならまったく別ドメでもおk(゜д゜)

_ 徳丸浩 (2007年11月26日 12:28)

金床さんからもコメントありますが、データの戻しにform.submit()を使うという前提であれば、別ドメインでもいいし、IPアドレスでもいいですよね。Formのaction先はsame orign policyの制約を受けませんので。

_ yamagata21 (2007年11月26日 13:15)

図と説明が、罠サーバー(tokumaru.org)宛になってたのでツッコミ入れてみただけです。(^-^;

_ 徳丸浩 (2007年11月26日 20:55)

(10)の中で、罠サーバーにIPアドレスを付記しました。

_ yamagata21 (2007年11月26日 23:44)

お手数をおかけしました~。ありがとうございます♪

_ Hash (2012年11月18日 05:03)

> (7)↓今度はプライベートアドレス 172.21.21.11(TTL=1日)を返す<br>とありますが, 長い時間を指定するのは何故でしょうか? 5秒から変更する意義がわかりませんでした.

_ Thief's Guild Blog:DNSキャッシュの制御 (2008年05月01日 15:48)

java上のDNSのTTL制御は networkaddress.cache.ttl networkaddress.cache.negative.ttl をjava.plolicyファイルで制御する。 プログラマブルには変えられない。 起動オプション(-Dパラメータ)で制御は可能だが、 名前が変わるっぽい。(未検証) ・networkaddress.cache..



[PR]小規模ECサイトに最適なWAF、SiteGuard Lite

ockeghem(徳丸浩)の日記はこちら
HASHコンサルティング株式会社

最近の記事

最近のツッコミ

  1. Hash (11-18)
  2. yamagata21 (11-26)
  3. 徳丸浩 (11-26)
Google