1. DNS/毒盛/go.jp攻略への道
Contents
co.jpに対する偽NSレコードをリゾルバーに送り込めるということを2014年に警告しましたが、
- 2016年に至っても注意喚起すらない状態ですので、危険性はないとみなされていると判断します。
危険ではないのか、各人で判断していただけるように、手口を紹介します。。
- Kaminsky流の攻撃手法は理解していただいているものと仮定します。
2. Muellerの指摘
NSレコードをもたないドメイン名にはNSレコードを追加する攻撃が成立する。
とくに、co.jpやgo.jpのようなレコードをひとつも持たないドメイン名(2014年にTXTレコードが追加された)には毒盛しやすい。
3. 攻撃手法
- リゾルバーに$random.go.jpのAを問い合わせる。
- キャッシュにはない。jp NSはキャッシュされているとする。
- リゾルバーはa.dns.jp (JP NS)に問い合わせを送る。
- a.dns.jpはNXDOMAIN返答を返す。(negative cachingの対象)
- NXDOMAINがキャッシュされても、次の問い合わせに対する障害にはならない。(Kaminskyの指摘)
- 次の返答が a.dns.jpとの競争に勝つまで1.を繰り返す。
- 問い合わせに対する以下の偽返答を(a.dns.jpを騙って)送りつける。(Muellerの指摘)
- go.jp NS evil-host [go.jp は evil-hostに委任されている]
- 偽返答が受け取られたら、毒盛成功である。
- 以降、go.jp 下のドメインに対する問い合わせはすべてevil-hostに送られる。(乗取りの成功)
攻撃前にはgo.jp NSはキャッシュにないことは確実である。(キャッシュの上書きは障害にならない。)
- 用心深いリソルバーであれば、毒を受け入れないこともある。それはこのページの範囲外w
-- 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年現在も見かけない。