1. DNS/毒盛/2016

新年の抱負に以下のように書いたが、その後、 Kaminsky-Mueller型のNS/毒盛/NS毒盛は簡単に防御できると分かった。(実装はまだ)

 リゾルバー(キャッシュ)が抱える毒盛脆弱性についてのわかりやすいまとめを作る。(無謀)

1.1. 否定的返答の利用

Kaminsky流攻撃において、これまで利用されていなかったNXDOMAIN情報を利用するのが重要である。

委譲(委任)返答毒以外の毒盛は考えなくていい。

(現状のリゾルバーはこれらの情報を利用していない。)

例えば、2014年に指摘した毒盛脆弱性:

Kaminsky流攻撃で本来のサーバから返るNXDOMAIN返答でco.jpドメインにはNSがないことが分かるから。

qname minimisationを採用しているなら、co.jpなどの中間ドメイン名のNSを直接問い合わせるので、 もっと簡単に毒だと分かる。(これも現状では利用されていないようだが)

あるいは、jprs.co.jp NSをJP NSに問い合わせたときの返答からもco.jpゾーンが存在しないことは分かる。

この程度の判断でも毒だと判定できる範囲は広がる。 あとはドメイン名階層の構成によって毒盛可能かどうかを判断することになる。

これで、中間者攻撃は別にすると、DNSSECを使わなくても、NS毒盛対策は簡単になった。


毒盛に脆弱というより、DNSは脆弱性の塊のようなものだから、

でも、そういうことを書いても読むひとはいないだろう。

-- ToshinoriMaeno 2015-12-14 01:44:53

「残っている脆弱性」というのも変なので、「分かっている脆弱性」とするか。

実装によってはほぼ解消されているものもある

-- ToshinoriMaeno 2015-12-17 10:26:50


2. UDP fragmentation attack

DNS/1/UDP checksum 0 という恐ろしい設定が今も残っている。

http://www.ietf.org/proceedings/87/slides/slides-87-saag-3.pdf

2012年 http://arxiv.org/pdf/1205.4011.pdf  Fragmentation Considered Poisonous

check sum 0 -> 計算しないという指定があって、

リゾルバー側の防御としては、check sum 0が指定されたUDPは受け取らないことだ。 -- ToshinoriMaeno 2016-01-29 15:05:13

だが、checksumがあっても、あまり役に立たないことが多い。


https://www.iajapan.org/ipv6/summit/SAPPORO2014/pdf/JPRS_SAPPORO2014.pdf

IPフラグメンテーションの弱点 [攻撃側から見れば、長所w)
(DNSサーバーの応答ログ)
•キャッシュDNSサーバーの応答ログには攻撃の痕跡が残らない
 –リアセンブリーされなかったフラグメントはIP層で捨てられ、
  リアセンブリーされた応答のみが上位層に到達する
 –これに対し、カミンスキー型攻撃手法では複数のDNS応答が上位層に到達するため、
   攻撃の痕跡が残る
•  IP/データリンク層には痕跡が残る
– netstatコマンドやtcpdumpコマンドなどである程度確認可能