1. DNS/毒盛再考/jpゾーン毒盛

watchNS/jp を参照すれば分かるはずだが、 jp ゾーンに毒盛する手段としては以下の方法がある。 2014年当時は jp, dns.jp ゾーンは同居していた。

  1. NS レコードを別のものにする。 (再委譲を含め)
  2. NS 値の [a-g].dns.jp が指す A レコード(glue?)に毒(偽情報)を注入する。

これらについて、キャッシュの状態により、それぞれみっつの場合に分けて、検討する必要があると考える。

  1. TLD からの委譲レコードがキャッシュに入っている。 (委譲情報だけがキャッシュされている。)
  2. jp ゾーンサーバにNSを問い合せて、Answer Section から得たNS(+A) レコードがキャッシュに入っている。
  3. jp ゾーンサーバになんらかの問い合せをして、付随する Authority Section から得たNSレコードがキャッシュに入っている。

キャッシュサーバによってはキャッシュされているNSレコードを上書きするそうだが、 キャッシュされているものの重要度により、上書き可能かどうかが変わる。

2. 委譲レコードがキャッシュされているケース (1)

jp DNS 情報がキャッシュにある状態として一番ありそうなのはこれである。

root server からの返事はこういうものである。

%dig -t a www.qmail.jp @a.root-servers.net                                                  ~

; <<>> DiG 9.9.0 <<>> -t a www.qmail.jp @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14710
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 14
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;www.qmail.jp.                  IN      A

;; AUTHORITY SECTION:
jp.                     172800  IN      NS      a.dns.jp.
jp.                     172800  IN      NS      b.dns.jp.
jp.                     172800  IN      NS      c.dns.jp.
jp.                     172800  IN      NS      d.dns.jp.
jp.                     172800  IN      NS      e.dns.jp.
jp.                     172800  IN      NS      f.dns.jp.
jp.                     172800  IN      NS      g.dns.jp.

;; ADDITIONAL SECTION:
a.dns.jp.               172800  IN      A       203.119.1.1
b.dns.jp.               172800  IN      A       202.12.30.131
c.dns.jp.               172800  IN      A       156.154.100.5
d.dns.jp.               172800  IN      A       210.138.175.244
e.dns.jp.               172800  IN      A       192.50.43.53
f.dns.jp.               172800  IN      A       150.100.6.8
g.dns.jp.               172800  IN      A       203.119.40.1
a.dns.jp.               172800  IN      AAAA    2001:dc4::1
b.dns.jp.               172800  IN      AAAA    2001:dc2::1
c.dns.jp.               172800  IN      AAAA    2001:502:ad09::5
d.dns.jp.               172800  IN      AAAA    2001:240::53
e.dns.jp.               172800  IN      AAAA    2001:200:c000::35
f.dns.jp.               172800  IN      AAAA    2001:2f8:0:100::153

;; Query time: 125 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Wed Jun 25 17:07:57 2014
;; MSG SIZE  rcvd: 437

あるいは

%dnsq a www.qmail.jp a.root-servers.net                                                     ~
1 www.qmail.jp:
426 bytes, 1+0+7+13 records, response, noerror
query: 1 www.qmail.jp
authority: jp 172800 NS g.dns.jp
authority: jp 172800 NS f.dns.jp
authority: jp 172800 NS e.dns.jp
authority: jp 172800 NS d.dns.jp
authority: jp 172800 NS c.dns.jp
authority: jp 172800 NS b.dns.jp
authority: jp 172800 NS a.dns.jp
additional: g.dns.jp 172800 A 203.119.40.1
additional: f.dns.jp 172800 A 150.100.6.8
additional: f.dns.jp 172800 28 \040\001\002\370\000\000\001\000\000\000\000\000\000\000\001S
additional: e.dns.jp 172800 A 192.50.43.53
additional: e.dns.jp 172800 28 \040\001\002\000\300\000\000\000\000\000\000\000\000\000\0005
additional: d.dns.jp 172800 A 210.138.175.244
additional: d.dns.jp 172800 28 \040\001\002@\000\000\000\000\000\000\000\000\000\000\000S
additional: c.dns.jp 172800 A 156.154.100.5
additional: c.dns.jp 172800 28 \040\001\005\002\255\011\000\000\000\000\000\000\000\000\000\005
additional: b.dns.jp 172800 A 202.12.30.131
additional: b.dns.jp 172800 28 \040\001\015\302\000\000\000\000\000\000\000\000\000\000\000\001
additional: a.dns.jp 172800 A 203.119.1.1
additional: a.dns.jp 172800 28 \040\001\015\304\000\000\000\000\000\000\000\000\000\000\000\001

%dnsq a www.qmail.jp a.dns.jp                                                               ~
1 www.qmail.jp:
65 bytes, 1+0+1+1 records, response, noerror
query: 1 www.qmail.jp
authority: qmail.jp 86400 NS a.ns.qmail.jp

jp 委譲情報を使って、 www.qmail.jp の問い合せを送るので、 

2.1. Authority Section 情報での上書きは危険

これを上書きするような状況はどういうものであるか。

RFC 2181 の ranking で関係するのは以下の部分の後半である。

The authoritative data included in the answer section of an authoritative reply.
Data from the authority section of an authoritative answer, 

これらは偽返答であることは考慮されていないと考えている。-- ToshinoriMaeno 2014-06-25 02:28:14

ranking の後半部分にある「委譲(移転)を示す返答」をどう扱うかが大きな問題である。

委譲情報(NS)を含むスーパーセットであっても、毒の可能性がある。

防衛策:

  1. 委譲情報を使い続けて、決して上書きしない。
    1. 委譲情報を使って、権威のあるNS(とA) を取り込みキャッシュし、以降は決して上書きしない。 (次のケース)

3. jp サーバから Answer として得たNSレコード (2)

Answer (section) として得られた NS がキャッシュされている場合を考える。

存在しない $random. jp (A)を問い合せた場合、返事に含まれるのはNXDOMAINを示すSOAレコードだけである。

存在する *.jp (A) を問い合せた場合に、 Authority Section に NS がある(ことがある)が、 この情報で「委譲を示すNSレコード」を上書きしてよいかは疑問(議論)の余地がある。 (民田スライド)

4. Mueller 手法

ここでは Mueller 手法により [a-g].dns.jp をサブドメインとして委譲する攻撃が可能であることを指摘しておく。

この方法での毒盛の難点は個別に毒盛するとしたら時間がかかることである。 (port randomize はされているとして)

-- ToshinoriMaeno 2014-05-07 06:24:36

時間がかかるということは、その間に正規の返答で毒が無毒化される可能性も増えるということを意味する。

5. JPRS 指摘

また、JPRSが指摘したように、dns.jp ゾーンの NS はキャッシュにないことが多いことを利用して、 DNS/毒盛再考/多世代ゾーン同居 (アクセス制限中)

この毒がいつ有効になり、いつまで有効かは今は触れないことにする。

-- ToshinoriMaeno 2014-05-07 03:30:33

参考: DNS/毒盛再考/qmail.jp毒盛

MoinQ: DNS/毒盛/2014/jpゾーン毒盛 (last edited 2021-05-02 00:11:22 by ToshinoriMaeno)