On the Time Value of Security Features in DNS という Paul Vixie 氏の記事が Circleid に出ていましたので、とりあえずその RRL の節をざっと訳してみました。
DNS Response Rate Limiting (RRL) は Kaminsky型の DNS キャッシュポイズニングへの対処としての UDP Source Port Randomization (SPR) に影響することが観測されているってのは確かだ。 RRL が応答をドロップすることで、解決すべき問いにできるだけ合うように工作された応答で攻撃者が問い合わせ元を連続攻撃し続けられる時間枠が延びてしまうってことが起きるのだ。RRL なしだと 30ミリ秒程度の DNS 問い合わせの有効時間を、単に RRL を適用するってだけで、30秒くらいまで延ばすことができる。 この1000倍までもの時間延長は大数の法則によってその分の攻撃成功率を生み出す。 RRL の考案者は同意していないが、デフォルトの RRL "slip" 値を 2 ではなく 1 にするという解決策が提案されている。この slip 値を 1 とする設定では応答をドロップすることはなくなり、Slipフレーム(TC ビット=1 の応答) で問い合わせ元に TCP によるリトライを求めるようになる。
この提案は問題の解決より多くの問題を引き起こすしそんな提案は実際不要なのだ。 なぜならそもそもの問題は概ね無視していい。そのことを以下に詳しく述べる。
(以下、Vixie 氏の論)
以降はざっとしか読んでいないのですが、Paul Vixie 氏は RRL による毒入れの危険性の問題はほぼ無視して良いと言っているようですね。
この件は、DNSSEC Spring Forum 2013 で私が懸念を示したことと同じ事象に関する議論のようです。RRL によって本物の権威サーバが応答しなければ、毒入れが容易になるだろうというのは誰でもすぐに考えることだと思います。実際、私も実験しましたが毒入れ成功の確率は確かに高くなりました。
ただし、Kaminsky型の毒入れにおいて QNAME を変更するタイミングを RTT に合わせてチューニングできる有能な攻撃者にとっては RRL されていようがいまいが大差は無いと思います。Vixie の論もそんな感じですかね。
しかし、世の中、有能な攻撃者ばかりではありません。雑な攻撃で毒が入りやすいってのはやはりどうかと思いますね。一方で、SLIP=1 にして、全部 TCP になるとなると、毒入れ攻撃が DoS 攻撃になりかねないということも考慮する必要があるでしょう。
Copyright by T.Suzuki