1. DNS/信用するのは危険/起源
単一の HOSTS.TXT を全コンピュータ(!)がコピーして使うことができていた時代があったのです。
DNSの唯一の実装だったnamed(BIND4) (1999年にDJBがdnscacheを公開するまで、続いていた)
その世界では、間違い設定はあっても、『偽データを送り込もうというひとはいない』というのが前提になっていました。
- そりゃそうでしょう、まじめにやっても、動くかどうかさえ怪しかったのですから。 当時のインターネットはそういう世界だったのです。それが修正される機会もなく、現在につながっています。
そして、その世界を前提に作成された RFC (1034など)を経典のように扱っていた。
- (ただし、DNSが信用すると危ないものであることはDNS業界では常識だった。)
ということで、キャッシュサーバへの毒盛には長い歴史があります。
2. Authority-Aditional Section
返事として送られてきた DNS message に毒を入れるのは簡単だった。 (偽返答じゃありません)
3. 偽返答
偽造が比較的容易なUDPを使っているために、偽造したDNS返答を送りつけることが可能です。
- DJBも指摘しているように、(問合せ)パケットを覗き見できるような立場の人は簡単に偽返答を送りつけることができます。
覗き見できなくとも、当てずっぽうで多くの偽返答を送ることができれば、毒は受け取られるかもしれません。
- でも、Kaminsky の指摘があるまでは、業界は油断していたのです。
4. Kaminsky 型攻撃
2008年に D. Kaminsky が公表した攻撃手法により、脆弱であることは知れ渡りました。
- でも、その対策としての最も効果のある送信ポートランダム化はDJBによって1999年のdjbdns(当時はdnscache)で実装ずみでした。 BINDを作成していたISCは 2008 年2月に Kaminsky から連絡を受けていながら、 8月まで改良版を公開しませんでした。
Kaminsky 型攻撃にたいする防御策としては 2008年当時であれば、ポートランダム化がもっとも有効だったでしょう。
- 実際にどういう毒が入れられるかについては、 Kaminky の示した例では毒入れできないことが明らかです。
しかし、どういう毒が入れやすいかは Mueller の指摘が唯一のもので、きちんと議論されなかったようです。
ポートランダム化してあっても、2014年だと、特定のキャッシュ相手に1週間も攻撃を続ければ、毒は入れられるでしょう。w
- 多くのキャッシュサーバを相手にして、どれかに毒を入れられればよしとするなら、もっと短時間に。
- バレにくいように、ひろく、ゆっくり毒を撒くというやりかただってありそう。
5. 毒盛されやすいケースの発見
2014年になって、毒として入れやすいケースがつぎつぎと見つかりました。 (2月から3月にかけて)
- 攻撃手法は Kaminsky 型そのものです。 どういう毒が入りやすいかというのが新たに見つかったことです。
にもかかわらず、 JPRS は4月にKamisky 型攻撃が増えているという警告をしただけです。
ところが、2014年が終わろうとするころ、jp レジストリであるJPRSは態度を一変させて、
- 「未熟なDNS」を公言しはじめた。(しかも、脆弱なのは RFC のせいだということで、 修正されるまでは対応しないらしい。)
-- ToshinoriMaeno 2014-11-23 02:43:41