<> == DNS/返答/NXDOMAIN/毒盛対策 == <> RFC 2308 否定返答を使った毒見の提案 1. zone cutsの非存在を推定できる。 2. CNAMEレコードの非存在を推定する。 == 心配事 == 偽のNXDOMAIN返答を返すことで、サービス不能攻撃ができる。  なやましい。-- ToshinoriMaeno <> == Name Error 返答 == 3 - Negative Answers from Authoritative Servers {{{ Name servers authoritative for a zone MUST include the SOA record of the zone in the authority section of the response when reporting an NXDOMAIN or indicating that no data of the requested type exists. }}} ゾーンに「権威」を持つ権威サーバはゾーンのSOAレコードをAuthority Sectionに含めなくてはならない。(must) SOAレコードのラベルはquery nameが「存在しない」ことを保証するゾーンを示している。  ただし、広く使われている間違った返答ではquery nameに対するレコードが存在しないことを示すに過ぎない。 だが、そこは重要ではない。 == negative caching == NXDOMAIN返答でなにがキャッシュに保持されているのだろうか。それが問題だ。  多くのリゾルバーでは問い合わせた名前/タイプのレコードが存在しないことだけが記録されるらしい。 それではもったいない、というのが出発点だ。 == 毒盛対策 == Kaminsky型攻撃でNXDOMAIN返答が返ってきたとしよう。  qmail.jpゾーンサーバにx.y.z.ns.qmail.jp を問い合わせたとする。 以下の返事が返る。 $ dnsq a x.y.z.qmail.jp a.ns.qmail.jp {{{ 1 x.y.z.qmail.jp: 86 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 1 x.y.z.qmail.jp authority: qmail.jp 2560 SOA a.ns.qmail.jp hostmaster.m.qmail.jp 1454758295 16384 2048 1048576 2560 }}}  これから分かることはx.y.z.qmail.jpがqmail.jpゾーンにレコードを持たないということだけだろうか。 -- ToshinoriMaeno <> == co.jp == co.jp へのNS毒盛は簡単なのだろうか。w $ dnsq a x.y.z.co.jp a.dns.jp {{{ 1 x.y.z.co.jp: 76 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 1 x.y.z.co.jp authority: jp 900 SOA z.dns.jp root.dns.jp 1457919902 3600 900 1814400 900 }}} == SOA だけのゾーン? == www.sony.jp を名前解決しようとして、ここにぶつかった。 SOAしかもたない名前には毒盛しやすいだろう。 $ dig wpc.omicroncdn.net {{{ ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> wpc.omicroncdn.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26811 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1220 ;; QUESTION SECTION: ;wpc.omicroncdn.net. IN A ;; AUTHORITY SECTION: wpc.omicroncdn.net. 559 IN SOA ns1.omicroncdn.net. noc.edgecast.com. 2006030100 3600 600 604800 600 ;; Query time: 0 msec ;; SERVER: 127.0.0.2#53(127.0.0.2) ;; WHEN: Mon Mar 14 11:05:18 JST 2016 ;; MSG SIZE rcvd: 103 }}} $ dnsq a xyz.wpc.omicroncdn.net a.gtld-servers.net {{{ 1 xyz.wpc.omicroncdn.net: 164 bytes, 1+0+2+4 records, response, noerror query: 1 xyz.wpc.omicroncdn.net authority: omicroncdn.net 172800 NS ns1.omicroncdn.net authority: omicroncdn.net 172800 NS ns2.omicroncdn.net additional: ns1.omicroncdn.net 172800 28 &\006(\000\000\001\000\000\000\000\000\000\000\000\000\005 additional: ns1.omicroncdn.net 172800 A 72.21.80.5 additional: ns2.omicroncdn.net 172800 28 &\006(\000\000\001\000\000\000\000\000\000\000\000\000\006 additional: ns2.omicroncdn.net 172800 A 72.21.80.6 }}} $ dnsq a xyz.wpc.omicroncdn.net ns1.omicroncdn.net {{{ 1 xyz.wpc.omicroncdn.net: 96 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 1 xyz.wpc.omicroncdn.net authority: wpc.omicroncdn.net 600 SOA ns1.omicroncdn.net noc.edgecast.com 2006030100 3600 600 604800 600 }}} == きっかけ == %dnsq a www.sony.jp asia4.akam.net {{{ 1 www.sony.jp: 67 bytes, 1+1+0+0 records, response, authoritative, noerror query: 1 www.sony.jp answer: www.sony.jp 300 CNAME cs328.wpc.omicroncdn.net }}} [[watchNS/omicroncdn.net]]