1. DNS/毒盛/go.jp攻略への道

co.jpに対する偽NSレコードをリゾルバーに送り込めるということを2014年に警告しましたが、

危険ではないのか、各人で判断していただけるように、手口を紹介します。。

2. Muellerの指摘

NSレコードをもたないドメイン名にはNSレコードを追加する攻撃が成立する。

とくに、co.jpやgo.jpのようなレコードをひとつも持たないドメイン名(2014年にTXTレコードが追加された)には毒盛しやすい。

3. 攻撃手法

  1. リゾルバーに$random.go.jpのAを問い合わせる。
    • キャッシュにはない。jp NSはキャッシュされているとする。
  2. リゾルバーはa.dns.jp (JP NS)に問い合わせを送る。 
    • a.dns.jpはNXDOMAIN返答を返す。(negative cachingの対象)
  3. NXDOMAINがキャッシュされても、次の問い合わせに対する障害にはならない。(Kaminskyの指摘)
    • 次の返答が a.dns.jpとの競争に勝つまで1.を繰り返す。
  4. 問い合わせに対する以下の偽返答を(a.dns.jpを騙って)送りつける。(Muellerの指摘)
    • go.jp NS evil-host [go.jp は evil-hostに委任されている]
  5. 偽返答が受け取られたら、毒盛成功である。
    • 以降、go.jp 下のドメインに対する問い合わせはすべてevil-hostに送られる。(乗取りの成功)

攻撃前にはgo.jp NSはキャッシュにないことは確実である。(キャッシュの上書きは障害にならない。)

-- ToshinoriMaeno 2016-04-06 03:20:22

4. 経緯

Kaminsky-Muellerの手法により攻略しやすいドメインがJP下に存在することは2014年に前野が気付き、 鈴木がBINDキャッシュで確認した。JPRSはこれを「委任インジェクション」と呼んでいる。

さらに親子ゾーンが同居している場合にも毒盛脆弱であることはJPRSが指摘している。 当時のdns.jpゾーンはjpゾーンと同居状態であったが、7月ころにjpゾーンから分離された。

-- ToshinoriMaeno 2016-04-06 03:27:59

キャッシュにあるNSを上書きする手法も存在するが、こちらはリゾルバーの実装不良であると考える。

-- ToshinoriMaeno 2016-04-06 03:31:38

5. 防衛策

防衛は簡単である。NXDOMAINについてくるSOAレコードを活用すればよい。 -- ToshinoriMaeno 2016-04-06 07:44:53

この防衛手法は2022年現在も見かけない。


MoinQ: DNS/毒盛/go.jp攻略への道 (last edited 2022-02-27 02:49:02 by ToshinoriMaeno)