3月30日に「DNS キャッシュサーバでのアクセス制限だけでは不十分 / 隠れオープンリゾルバのスキャナを作ってみた」という記事を書きました。これに先立ち私の権威サーバで収集した約 10 万ドメインをスキャンして発見した約 8 千 (うち JP 約 700) の隠れオープンリゾルバのリストを3月7日に JPCERT/CC に報告済です。
その後これまでの半年に渡り様子を見てきましたが遅々として対策が進みませんでした。そこで 3 ヶ月ほど前から予告してきたように脆弱な国内のドメインを本日公開することとしました。なお GO.JP や LG.JP もいくつか含まれていましたが幸い昨日までの駆け込みで 1 つを残すのみになったようです。リストは以下です。
p.s.
一部のドメインではリゾルバに rate limit などをかけて承知のうえで公開しているというところがあるかもしれませんが、問題は DNS だけでなく送信元詐称攻撃一般 (NTP amp, SYN flood, etc) ですからそのあたり油断の無きようお願いしたいと思います。大きな AS が大変なのはわかりますが大半のサイトは境界ルータにアクセスリスト 1 つ書くだけのはずです。
Android 端末で login.live.com が引けないというツイートを見た。そしてこれは随分前から発生しているらしい。"Login.live.com can't be found when accessing from Android phone" という QA が MS のサイトにあって解決していないらしい。
調べてみた。
~% dig a login.live.com ; <<>> DiG 9.16.20 <<>> a login.live.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35317 ;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 512 ;; QUESTION SECTION: ;login.live.com. IN A ;; ANSWER SECTION: login.live.com. 298 IN CNAME login.msa.msidentity.com. login.msa.msidentity.com. 299 IN CNAME www.tm.lg.prod.aadmsa.akadns.net. www.tm.lg.prod.aadmsa.akadns.net. 60 IN CNAME prda.aadg.msidentity.com. prda.aadg.msidentity.com. 300 IN CNAME www.tm.a.prd.aadg.trafficmanager.net. www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 40.126.38.69 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 40.126.38.133 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 40.126.38.68 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 20.190.166.2 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 40.126.38.67 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 20.190.166.5 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 40.126.38.134 www.tm.a.prd.aadg.trafficmanager.net. 300 IN A 40.126.38.135
CNAME が 4 段もある。これだけでもダメダメな感。
そして www.tm.a.prd.aadg.trafficmanager.net.を怪しんでみた。まずはネームサーバは?
~% dig ns trafficmanager.net @a.gtld-servers.net +noall +auth +nodnssec trafficmanager.net. 172800 IN NS tm1.edgedns-tm.info. trafficmanager.net. 172800 IN NS tm2.edgedns-tm.info. trafficmanager.net. 172800 IN NS tm1.dns-tm.com. trafficmanager.net. 172800 IN NS tm2.dns-tm.com.
そして直感で ENT (Empty Non-Terminal) を疑ってみる。
~% dnsq ns aadg.trafficmanager.net tm1.dns-tm.com 2 aadg.trafficmanager.net: 102 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 2 aadg.trafficmanager.net authority: trafficmanager.net 30 SOA tm1.dns-tm.com hostmaster.trafficmanager.net 2003080800 900 300 2419200 30
ビンゴ! Empty Non-Terminal がことごとく NXDOMAIN になってる。これは RFC 8020 違反。RFC 8020 のタイトルは "NXDOMAIN: There Really Is Nothing Underneath" だ。「そこから下には本当に何も無い」のである。(くわしくはスライド参照)
aadg.trafficmanager.net が無いなら www.tm.a.prd.aadg.trafficmanager.net も無いと判断してよいのである。そして、ENT の NXDOMAIN を受け取ったあとの qname-minimisation-strict: yes な Unbound ではこの通り login.live.com は引けなくなる。
~% dnsqr ns aadg.trafficmanager.net 2 aadg.trafficmanager.net: 102 bytes, 1+0+1+0 records, response, nxdomain query: 2 aadg.trafficmanager.net authority: trafficmanager.net 30 SOA tm1.dns-tm.com hostmaster.trafficmanager.net 2003080800 900 300 2419200 30 ~% ~% dnsqr a login.live.com 1 login.live.com: 179 bytes, 1+2+1+0 records, response, nxdomain query: 1 login.live.com answer: login.live.com 299 CNAME login.msa.msidentity.com answer: login.msa.msidentity.com 300 CNAME www.tm.lg.prod.aadmsa.trafficmanager.net authority: trafficmanager.net 23 SOA tm1.dns-tm.com hostmaster.trafficmanager.net 2003080800 900 300 2419200 30
ところで、tm[12].edgedns-tm.info では正しく NODATA の応答が返る。tm[12].dns-tm.com が RFC 違反。
~% dnsq ns aadg.trafficmanager.net tm1.edgedns-tm.info 2 aadg.trafficmanager.net: 102 bytes, 1+0+1+0 records, response, authoritative, noerror query: 2 aadg.trafficmanager.net authority: trafficmanager.net 30 SOA tm1.dns-tm.com hostmaster.trafficmanager.net 118221445 900 300 2419200 30ちなみに dns-tm.com は委任と権威の NS 応答が異なっている。そのうち大事故を起こしそう。
~% dig ns dns-tm.com @a.gtld-servers.net +nodnssec +noall +auth dns-tm.com. 172800 IN NS ns1-09.azure-dns.com. dns-tm.com. 172800 IN NS ns2-09.azure-dns.net. dns-tm.com. 172800 IN NS ns3-09.azure-dns.org. dns-tm.com. 172800 IN NS ns4-09.azure-dns.info. dns-tm.com. 172800 IN NS ns4-34.azure-dns.info. dns-tm.com. 172800 IN NS ns1-34.azure-dns.com. dns-tm.com. 172800 IN NS ns2-34.azure-dns.net. dns-tm.com. 172800 IN NS ns3-34.azure-dns.org. ~% ~% dig ns dns-tm.com @ns1-09.azure-dns.com +nodnssec +noall +ans dns-tm.com. 172800 IN NS ns1-09.azure-dns.com. dns-tm.com. 172800 IN NS ns2-09.azure-dns.net. dns-tm.com. 172800 IN NS ns3-09.azure-dns.org. dns-tm.com. 172800 IN NS ns4-09.azure-dns.info.
Copyright by T.Suzuki
Before...
■ tm [奇妙な返事は親子同居で説明つきませんか。]
■ tm [prda.aadg.msidentity.com はCNAMEレコードを持っていますが、 その値は問い合わせたNS..]
■ tm [$ dig -t a trafficmanager\.net. @tm1.dns-tm.com NXDOMAI..]