1. DNS/毒盛/成立の要件

キャッシュ毒盛攻撃が成立する条件が少し見えてきたようなので、ここにメモを残しておく。

   偽UDPパケットがキャッシュサーバに渡るまでの条件については触れない。

../taxonomy ../target

1.1. 問い合せ(きっかけ)

「キャッシュにないレコード」をキャッシュサーバに問い合わせる。(Kaminsky の指摘)
 キャッシュが外部に問い合わせる動作を引き起こすような名前とレコードタイプ

ゾーンサーバからの返事は「キャッシュされない」ような問い合わせを送る。(Mueller の指摘)

毒盛したいレコードを送り込む邪魔にならない返事でもよい。(NXDOMAINなどが返るもの)

1.2. 毒入れしやすい返答

キャッシュにないレコードがもっとも都合がよい。

キャッシュにあっても、オーバーライトするかどうかがポイントとなる。かつ、効果的なもの。

RFC2181 が関係するかのような説明は間違いだと思う。(実装の脆弱性だろう)

1.2.1. キャッシュにないレコードセットを毒返答として送る

キャッシュにないレコード群(RRSet)は受け入れられやすい。

Mueller の指摘からの帰結。

正規のサーバからの返事がNXDOMAINだったら、 (例: co.jp ドメイン)

NSレコードが存在しないドメイン名に対して、NSレコードを注入するというのが典型的な攻撃です。

でも、NSレコードだけではない。 -- ToshinoriMaeno 2014-04-10 15:10:55

親子関係にあるゾーンを一台のゾーンサーバに持たせていると、困ったことがおきるようです。(JPRSの指摘)

1.2.2. キャッシュを上書きするRRSet を返答する

委譲返答、あるいは転居通知のようなもの。 (RFC2181, あるいは実装の問題; JPRS や鈴木氏の指摘)

Answer Section で得た返答も上書きされるかもしれない。

1.3. 毒の保持

せっかく注入(上書き)した毒が(正当な)別の問い合わせの返答で上書きされては毒が効果を示さない。

今後調査すべき項目だろう。

-- ToshinoriMaeno 2014-04-09 05:48:13

正規のゾーンサーバにNSレコードが存在していないようなドメイン名があてはまる。

Mueller でもこの条件を満足している例が書かれている。 -- ToshinoriMaeno 2014-04-10 09:38:20

1.4. 毒情報が使われること

キャッシュに入っていても、返答のために使われないのでは毒としては無毒と同じになる。

1.5. RFC 2181 が脆弱性のもと

上位サーバからもらった委譲返答と自サーバがおまけとしてつけてくるAuthority/Additional では 自サーバのものが優先されるようだが、これはさまざまな問題を引き起こす。

毒盛も簡単になり、一度入った毒が有効なまま残る。 -- ToshinoriMaeno 2014-04-09 06:03:35

1.6. 具体例

4/15 のJPRSがほとんど役に立たないと判断したので、具体的なドメイン名などは公開された。

連休前にいくつかを公開する予定である。影響が大きいので、警告が行き渡ったあとになる。
-- ToshinoriMaeno <<DateTime(2014-04-12T14:53:24+0900)>>