強烈なDNSキャッシュポイズニング手法が公開される

2014/4/16-1

本日、JPRSが緊急の注意喚起を公表しました。

それに対して、2月中旬に脆弱性を発見してJPRSへと報告していた鈴木氏(脆弱性は前野氏との共同発見)が、JPRSの注意喚起では「危険性をよく理解して対策をとるにあたって十分な情報が含まれているとはいえません」として、以下の情報を公開しています。

本来であれば、より上位からの正規の回答が優先されなければならないはずなのに、下位側が優先される仕様になっているので、偽装されたデータが優先されてしまう、といった感じの話です。 実装上のバグに起因する脆弱性ではなく、仕様上の脆弱性である部分も含むため、かなり根本的な話である気がします。

たとえば、以下のようなことも書かれています。

結論
以上の手法を用いて、以下の重要なゾーンのキャッシュに毒入れが可能となる。
  • co.jp などに毒が入る
  • jp などに毒が入る / com などに毒が入る
  • . (root) に毒が入る
仕様(RFC2181など)、実装、運用をすべて見直す必要がある。
* 今回さらに危険な問題 (移転インジェクション攻撃)が見つかっている。

RFC 2181とTLD

このうちのRFC 2181とTLDの部分ですが、JPドメインを例に考えると、以下のような話になりそうです。

1. RootからのNSレコードはnon-authoritativeである
2. JPからの応答に偽装した応答のNSレコードはauthoritativeなAnswerに付随したものである(ランク4)
3. よって、本来最も信頼されるべきRootからのNSは、偽装応答に付随するAuthority Sectionに記述されたNSレコードによって上書きされてしまう

どういうことかというと、RFC 2181の「5.4.1. Ranking data」に以下のようにあります。

The accuracy of data available is assumed from its source.
Trustworthiness shall be, in order from most to least:

+ Data from a primary zone file, other than glue data,
+ Data from a zone transfer, other than glue,
+ The authoritative data included in the answer section of an authoritative reply.
+ Data from the authority section of an authoritative answer,
+ Glue from a primary zone, or glue from a zone transfer,
+ Data from the answer section of a non-authoritative answer, and non-authoritative data from the answer section of authoritative answers,
+ Additional information from an authoritative answer, Data from the authority section of a non-authoritative answer, Additional information from non-authoritative answers.

RFC 2181に記述された優先度が上記のようなものになっているのが、今回のポイントです。

カミンスキー型攻撃手法を応用して、JPの権威DNSサーバからの応答を偽装してAuthority SectionにNSレコードを含む事で、Rootから委任された正規のJPのNSレコードに関するキャッシュを上書きできてしまうというものです。

ゾーンがないサブドメインへの毒入れ

「今回の経緯」として記述されている部分の最初にあるのが「ゾーンがないサブドメインへの毒入れ」です。

JPドメインは、co.jp、or.jp、ac.jpなどをゾーンを作らずに運用しているため、この攻撃手法の影響を受けます。 攻撃が成功したとき、攻撃対象となるキャッシュDNSサーバにおける、co.jp、or.jp、ac.jp、一部の地域ドメイン名などにおいて、任意のレコードに対するキャッシュポイズニングが可能になるというものです。

たとえば、www.example.co.jpというFQDNがあったとします。 JPゾーンには、co.jpというゾーンが存在ぜず、JP→examle.co.jpといった委任が行われています。

co.jpの偽NSレコードが注入された後に、正規のキャッシュTTLが切れて再度検索されたものから、毒の影響を受けるようになります。 たとえば、co.jp偽NSレコードが入った後にwww.example.co.jpのAレコードのTTLが切れれば、そこに毒を入れることができるというものです。

現時点において、DNSSECによるバリデーションを行わずに、この攻撃を防ぐ方法はありません。 ただし、DNSSECに対応したとしても毒入れが検知できるだけであり、今回の手法によって毒が入ると名前解決ができなくなるというDoSとしては成立します。 さらに、発見当初はDNSSECでも防げなかったため、その対処として3月16日にTXTレコードがJPRSサーバに設定されたようです。 (というか、「ゾーンがないサブドメインへの毒入れ」の話は、DNSSECを考えるとき、もしくはそれ以前に気がついていた人が居てもおかしくない気もします。フラグメンテーションの話もPaul Vixie氏が「知ってた」とメールで書いてましたし。)

その他も。。。

今回公表されたDNSの脆弱性は、カミンスキー型攻撃手法、Müller氏の方式、共用DNS問題、フラグメンテーション問題など、最近のDNS関連の話題の集大成であるとも言えます。

このブログ記事は鈴木氏のサイトに記載されている一部だけを紹介したものです。 鈴木氏のサイトにて公開された記事には、現時点において考え得る緩和策など様々な情報が記述されているので、興味がある方は是非ご覧頂ければと思います。

参考

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!