トップ «前の日記(2014-03-24) 最新 編集

インターノット崩壊論者の独り言

spam対策はGION

過去の日記

本ブログは Google Public DNS (8.8.8.8, 8.8.4.4) を使うと見ることができません。あしからず。


2014-04-15 開いたパンドラの箱

長年放置されてきた DNS の恐るべき欠陥が明らかに

本日、JPRS がようやく重い腰をあげて注意喚起を発してくれましたが、その内容は危険性をよく理解して対策をとるにあたって十分な情報が含まれているとはいえません。

一方で注意深い攻撃者が探せば、ネット上にはすでに深刻な攻撃を行うのに必要な情報は十分に流れています。特に、JPRS が3月に慌てて co.jp などにこっそり入れた署名付き TXT レコードは大きなヒントに見えます。
DNS に詳しい攻撃者であれば、攻撃手法に辿りつくのは時間の問題でしょう。(すでに攻撃は行われているかも知れません)

長く秘密にしておくことは得策ではないと判断し、防御する側の心構えと手助けにして頂くべく、今回わかったことの要点を「キャッシュポイズニングの開いたパンドラの箱」に記載し公開させて頂きます。

今回の件は qmail.jp の前野さんが Müller の論文(2008)にある危険性を(再)評価し、論文に書かれている以上の危険性があることに気づき、私が前野氏の推測を元にインターネットシミュレータ上で様々な検証実験を行なうことで判明してきたものです。途中から JPRS にも報告してそれらの事実を確認していただき、彼らの検討からさらなる新事実(親子問題やDNSSEC運用の穴)も判明しました。

前野さんいわく、

  • Kaminsky と Amir Herzberg and Haya Shulman は強力な銃を作った
  • Müller はそれに使う弾を作った
  • 前野らはどこに獲物がいるかを示した

さらに今回、Müller 論文から前野氏の洞察で導かれた問題の恐ろしさにくわえて、実験結果から、
DNS の仕様、特に RFC2181 にあるキャッシュの優先度の扱いにも大きな欠陥があることがわかりました。(実装依存ですが現状はとても危険です)

今回わかったことの多くは、本来は 2008年の Müller 論文をもっと早い時期に評価し大きく問題にすべきだったものです。
ただ、当時は Kaminsky の示した手法だけで十分危険と思われており、大きな騒動になっていたので、Müller の手法はその亜流としか見られていなかった可能性があります。

その後、2011年に Kaminsky の示した例では毒入れできないことを実験で確認しました。
その時に Müller 氏の node re-delegation も試してその効果を確認しましたが、残念ながらその応用による恐ろしい影響範囲までは気づきませんでした。

2008年そして2011年、その後今回の再検証まで私の目は節穴だったわけです。

しかし果たして世の DNS 専門家たちの目は節穴だったのでしょうか。
JPRS の発行した「実践DNS」には node re-delegation に似た RFC2181 の欠陥を突いた毒入れ手法が小さな脚注で明らかにされています。
彼らはこの方法で jp キャッシュに毒入れできないないか検討しなかったのでしょうか。本当に今日まで事実に気づいていなかったのでしょうか。
諺に「ハンロンの剃刀」という言葉があります。「無能で説明できることを陰謀と思うな」という意味ですが、さて真実はどうなのでしょうか。

ちなみに今回の話はフラグメンテーション攻撃(アイコラ攻撃)と組み合わせるとずっと危険になります。
フラグメンテーションが発生する大きさの DNS 応答を作り出す EDNS0 は DNSSEC のために作られたと言っても良く、これを世に送り出した Paul Vixie はフラグメンテーション攻撃の危険性を当初から「知ってた」と最近になって語っています。ため息しか出ませ。隠し通すことでセキュリティは守られるのでしょうか。

今回の件でまた DNSSEC 推進の声が聞こえてくるでしょうが、DNS を葬るまえにまず DNSSEC を葬って、もっと他にやるべきことを考えた方がよいでしょう。すべてのドメインが DNSSEC を実装する前に、DNS は終わりを迎えるでしょうからね。

インターノットは砂上の楼閣です。インフラになんかしてはいけません。ずっとこのブログで言い続けていることです。
そろそろご理解いただけましたでしょうか。

参考:前野さんの解説ページ https://moin.qmail.jp/DNS/毒盛


今回の経緯

  • 2/15 ゾーンがないサブドメイン名の毒入れが可能であることを JPRS へ連絡 (T.Maeno)
  • 2/15 ゾーンがないサブドメイン名の BIND への毒入れに成功 (T.Suzuki)
  • 2/28 .jp へ毒入れできそうと気づき (T.Maeno)、BIND で成功しJPRS へ報告 (T.Suzuki)
  • 3/1 JPRS から .jp への毒入れに別解(親子同居)で成功し、国内外の関係団体に連絡を取り始めているとの連絡 (JPRS)
  • 3/2 Unbound でもバグを併用して仮想ネット上の .jp への毒入れに成功 (T.Suzuki)
  • 3/4 親子同居とRFC2181の欠陥をつく方法で BIND/Unbound で ac.jp に毒入れに成功 (T.Suzuki)
  • 3/11 RFC2181の欠陥をつくだけの手法に気づき .jp に毒入れに成功 (T.Suzuki)
  • 3/16 .jp 下のゾーンがないサブドメイン名に DNSSEC 署名された TXT レコードを追加 (JPRS)
  • 4/1 TTLに関係なくルートサーバに毒を入れられる手法に気づき成功 (T.Suzuki)
  • 4/1 JPRS に連絡、ルートサーバに毒入れする方法 (ただし本物のキャッシュのTTL切れ待ち) は JPRS でも成功していたとの回答 (JPRS)

注:実験はすべて仮想インターネット環境上で行っています (BIND 9.9.2-P2 /Unbound 1.4.20)
今回の脆弱性の公開について様々なご助言を頂いた名古屋大学高倉弘喜教授に感謝致します。

最近の日記

リンク

Copyright by T.Suzuki