移転インジェクションとは広く行われている NS の移転作業を模倣した DNS キャッシュポイズニング手法です。
多く用いられている実装において、あるゾーンの権威サーバが返した権威ある Answer に付随する Authority Section によってキャッシュされた NS レコードは、同じゾーンの別な名前の問い合わせに付随する Authority Section の NS レコードによって上書きされてしまいます。
これによって権威サーバで NS レコードを書き換えることにより権威サーバの移転がスムーズに行えると言われているわけですが、それを模倣した偽応答によって NS が毒入れされることも許してしまうわけです。つまりそのようなキャッシュサーバには移転インジェクション脆弱性があると言えるわけです。
そのような脆弱性を持つかどうかを確認できるドメイン flip.e-ontap.com を用意しました。
くわしくはこちらをご覧ください。
なお、私の実験結果では、Google Public DNS (8.8.8.8) や OCN が顧客に提供しているキャッシュサーバは A レコードの問い合わせに 150.42.6.1 しか返さないため、この脆弱性はなさそうです。また、OpenDNS、NortonDNS、Level3、Comodo、Baidu は 150.42.6.5 を返すことがありますから脆弱性がある可能性があります。
注意: この移転インジェクションのテストで問題がなくとも委任インジェクションの脆弱性は存在する可能性が高いので安心してはいけません。(一方でこのテストで脆弱性があるようにみえても別な防御がなされている可能性もあります)
Copyright by T.Suzuki
脆弱性が確認されているのはBINDですね。Unboudは防衛手段が用意されている。<br>Knot resolver(beta)は対策されている。<br>共用のリゾルバーを使わないのが、一番の対策でしょう。
直接の話題からははずれます。<br>「権威サーバ」の移転をスムーズに行うためには、委譲元のレコードのTTLを短くするのが効果的です。これをさせない?ゾーンが氾濫しているために、おかしな機能が欲しくなる。
素の BIND と Unbound で脆弱性を確認しました。Unbound は harden-referral-path:yes で防御できますね。
確認です。<br>Aレコードを問い合わせて、150.42.6.5が返ってきたら、毒を疑う。<br>ということでいいのですね。<br>(あるいは150.42.6.1, 150.42.6.5の両方が返ってくる場合)
64.6.64.6(Verisign DNS)も脆弱か。
そうです。SLIST に委任先ではない NS (ns.internot.jp) が入ってしまっていることを意味しますから。<br>> Aレコードを問い合わせて、150.42.6.5が返ってきたら、毒を疑う。ということでいいのですね。
委任元の NS を優先すべきという厳しい立場からみて「脆弱」と言っています。ns1.flip.e-ontap.com が ns.flip.e-ontap.com に上書きされるだけでも脆弱だといえるでしょう。あとはその状態でどうアドホックに防御されているかの問題になります。150.42.6.5 を表示してもカミンスキー流の攻撃からはまもられているケースもあるでしょう。