これでいいのか TTL 短い DNS TTL のリスクを考える 2007 年 1 月 26 日民田雅人株式会社日本レジストリサービス JANOG 19@ 沖縄県那覇市
DNS プロトコルのおさらい (1/2) 問合せと応答の単純な往復 この名前の IP アドレスは? IP アドレスは XXXX だよ トランスポートは主に UDP 条件によって TCP になることもある 問合せパケット 応答パケット ID: クエリ名 +ID+etc... クエリ名 +ID+ 回答 +etc... 識別のための 16bit の値 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 2
DNS プロトコルのおさらい (2/2) 1www.janog.gr.jp の A は? 2ns0 に www の A を ID 123 で問い合わせ ns0.janog.gr.jp 4 回答 キャッシュサーバ 3 ns0 から ID 123 で www の 210.150.17.51 を返す キャッシュサーバは 応答パケットを ソースアドレス クエリ名 ID で識別 ID が違えば別の応答と判断 クライアントとキャッシュサーバ間 (1 と 4) も同様 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 3
毒入れ攻撃とは DNS Cache Poisoning 攻撃 DNS キャッシュサーバに嘘の情報をキャッシュさせる 毒入れされた DNS サーバを使うユーザは 別のサイトに誘導されてしまう Phishing の可能性! 攻撃手法は二通り 1. 正規の応答パケットに嘘の情報を仕込む 2. 嘘の応答を正規の応答より先に返す 今回の話題! 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 4
キャシュサーバへの毒入れ 1www.janog.gr.jp の A は? 2ns0 に www の A を ID 123 で問い合わせ ns0.janog.gr.jp 4 回答 キャッシュサーバ 3 ns0 から ID 123 で www の 210.150.17.51 を返す 5 偽 DNS 応答ソースアドレスを ns0 に偽造し ID 123 で www の 192.0.2.10( 嘘の値 ) を送り込む 攻撃者 3 より先に 5 の偽 DNS 応答が送り込まれると キャッシュサーバは嘘情報をキャッシュする 4 で嘘をクライアントに送る クライアント PC は 偽のサイトへ誘導される 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 5
毒入れ攻撃の古典的手法 1. オープンなキャッシュサーバに大量のリクエストを出す 2. 同じサーバに対して 偽装した DNS 応答パケットを ID をランダムに変えながら送る クエリ名とソースアドレスは自明 3. ID が正規応答と一致すれば攻撃が成功 2 コンテンツサーバ キャッシュサーバ 1 攻撃者 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 6
DNS プロトコルの脆弱性 CERT VU#457875 で警告 2002 年 11 月初出 参考 :http://www.kb.cert.org/vuls/id/457875 ソースアドレスを偽装しやすい DNS は UDP を主に使う ID は 16bit しかない 意外に当たりやすい いわゆる 誕生日のパラドックス を利用した 誕生日攻撃による毒入れ ができてしまう 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 7
参考 : 誕生日のパラドックス ある場所に 23 人いた この中で同じ誕生日の人がいると思う人 の問いに対して のどちらに答えるべきか? を答えたほうが当たる可能性が高い 23 人いると 確率が 0.5 を超える ここでの パラドックス は 矛盾 ではなく 直感的な感覚と合わない という意味 誕生日攻撃 - Birthday Attack 誕生日のパラドックスを利用した攻撃手法 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 8
誕生日攻撃による毒入れ 各 DNS RR( リソースレコード ) の TTL が短いとキャッシュサーバの問合せ頻度は高くなる TTL が 86400 秒 1 日に 1 回問い合わせ TTL が 30 秒 1 日に 2880 回問い合わせ 気長に嘘の DNS 応答をキャッシュサーバに送り続ければ そのうち当たる そのうち が意外に短い 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 9
攻撃のストーリ アクセスが多く TTL が短いドメイン名を狙う どこのキャッシュサーバでもかまわない 誰が使っていようとかまわない ユーザは多いほどよい 気が付かれないようにこっそりと攻撃したい 同時に複数のキャッシュサーバへ嘘の応答を定期的に送り続ける 時間の問題で どこかのキャッシュサーバへの毒入れが成功する 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 10
攻撃の様子 キャッシュ キャッシュ コンテンツサーバ キャッシュ キャッシュ キャッシュ 攻撃者 問い合わせ正規の応答偽の応答 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 11
あるキャッシュサーバへ 毒入れが成功する確率 P R W = S N Port ID R: 攻撃対象 1 台あたりに送るパケット量 (pps) W: 攻撃可能な時間 (Query AnswerのRTT) N: 攻撃対象レコードを保持するコンテンツサーバの数 Port: Query portの数 (BINDの場合固定なので1) ID: DNSのID (16bit = 65536) 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 12
どこかのキャッシュサーバへ 毒入れが成功する確率 P V = 1 ( 1 P ) S V = 1 1 N R W Port ID V V: 攻撃対象のキャッシュサーバの総数 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 13
2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 14 毒入れが 1 回でも成功する確率 ( ) TTL T V TTL T V A V A ID Port N W R ID Port N W R P P = = = 1 1 1 1 1 1 1 1 A: 攻撃数 (=T/TTL) T: 攻撃時間 TTL: DNS レコードの TTL
毒入れが 1 回でも成功する確率の 1.0 時系列変化 0.8 0.6 0.4 0.2 0.0 時間 確率が 0.5 を超えると毒入れが成功しても不思議ではない 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 15
www.janog.gr.jp の例 TTL 86400 秒 Authoritative Server 1 台 1 台あたりの攻撃レート 10pps 攻撃対象のキャッシュサーバ 1000 台 RTT( とりあえず10msと仮定 ) 10ms 確率 0.5 を超えるまでの時間 約 15 ヶ月 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 16
www.janog.gr.jp で 仮に TTL を 30 秒にすると TTL 30 秒 Authoritative Server 1 台 1 台あたりの攻撃レート 10pps 攻撃対象のキャッシュサーバ 1000 台 RTT( とりあえず10msと仮定 ) 10ms 確率 0.5 を超えるまでの時間 約 3.8 時間 攻撃に必要な総帯域約 6.5Mbit/sec 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 17
キャッシュ コンテンツ 1.E+00 サーバ間の RTT の分布 1.E-01 1.E-02 頻度 1.E-03 1.E-04 1.E-05 1.E-06 0 20 40 60 80 100 RTT[ms] 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 18
DNS レコードの TTL の分布 ( 総数に対する ) 頻度 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 600 秒 (10 分 ) 以内 9% 3600 秒 (1 時間 ) 以内 34% 1 10 100 1000 10000 100000 1E+06 1E+07 TTL( 秒 ) 86400 秒 (1 日 ) 以内 97% 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 19
著名サイトってどうよ? ドメイン名 TTL NS 数確率 0.5 超までの時間??????.com 86400 3 3.8 年????.jp 600 2 7 日 www.???.net 300 2 76 時間 www.??????.co.jp 60 4 30 時間 www.?????.com 60 2 16 時間 www.??????.co.jp 300 7 12 日 www.????.jp 30 2 8 時間 www.??????.ne.jp 86400 2 2.5 年 www.???????.com 300 2 76 時間 www?.???.or..jp 20 8 21 時間 10pps で 1000 台のキャッシュサーバを同時に攻撃 RTT は 10ms で計算 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 20
スタッフとかスポンサーとか ドメイン名 TTL NS 確率 0.5 超までの時間????.jp 86400 3 3.8 年 www.??????.co.jp 300 5 8 日 www.??????.net 3600 3 57 日 www.???.ad.jp 20 8 21 時間 www.???.ne.jp 300 2 76 時間 www.???????.co.jp 60 4 30 時間 www.?????.co.jp 300 2 76 時間??.??????????.org 3600 3 57 日 計算条件は前スライドと同じ 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 21
CDN 屋さんの気持ち (Contents Distribution Network) TTL が短い代表選手 落ちてたからユーザさんを逃しましたではいけない キャッシュなんかせずに 毎回必ず聞き直しに来い いつでもお前 (SrcIP アドレス ) に最適な IP アドレスを教えてやるぜ 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 22
問題点のまとめ TTL が短いと 低レートでも攻撃が成功する確率が高くなる 低レートの攻撃は検出しにくい 攻撃が高レートになれば より短時間で攻撃が成立する可能性がある 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 23
それでもあなたは 短い TTL で運用しますか?
Q and A 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 25
おわりに
DNS コンテンツ設定側で 毒入れ確率を減らすために 極端に短い TTL は可能な限り避ける TTL を短くしなければならない場合 ネームサーバの数を多くする ただし 大きな効果は期待できない 他のパラメータの調整はコンテンツ設定側では不可能 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 27
問題の本質 ID が 16bit しかない DNS プロトコルの問題 もし ID が 32bit やそれ以上であれば攻撃困難 キャッシュサーバのクエリポートが固定 クエリポート固定の実装 BIND 系全て Windows の DNS サービス etc... クエリポートが動的に変わる実装 ( 攻撃困難 ) dnscache (djbdns) PowerDNS recurser 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 28
根本解決のために Ingress Filter の導入 (BCP38 RFC2827) インターネットに対して ソースアドレスに嘘をついたパケットを送出できなくする ( さまざまな攻撃を防止できるようになる ) DNSSEC の導入 DNS の応答パケットが正式のものか虚偽のものかを判断でき 虚偽の応答を捨てることができる 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 29
参考文献と IETF の動き draft-ietf-dnsext-forgery-resilience-00.txt 特定 (1 台 ) のキャッシュサーバを攻撃した場合について記述してある キャッシュサーバのクエリポートは 動的に変わるように実装するべきであるという方向へ 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 30
Acknowledgements This presentation is included the research activities founded by National Institute of Information and Communications Technology (NICT). Special Thanks to Information Sharing Platform Lab. NTT and Staff of JANOG 19 2007-01-26 これでいいのか TTL Copyright 2007 Japan Registry Services Co., Ltd. 31