1. DNS/KnotResolver/危ない機能
/1.1.1.1 /brau.jpを乗取る /normal /tss版 /別返答 /毒設定 /解説1 /解説3 |
1.1. 警告
mode('permissive') は危険な機能です。使ってはいけません。
1.2. きっかけ
こういうtweetがありました。 https://twitter.com/otsuka0752/status/1277365526801629185?s=20
https://twitter.com/tss_ontap_o/status/1298958328999972865?s=20
http://www.e-ontap.com/blog/?date=20200827 /tss版
お使いのリゾルバーを試してみてください。
1.3. 1.1.1.はどれくらい危ないのか
/1.1.1.1 ではどうか。よく分りません。危険な場合があることは分かっています。
1.4. mode('permissive')
permissiveだけ指定したときの毒盛脆弱性 -- ToshinoriMaeno 2020-08-27 04:08:45
- 私の環境で Knot Resolver 5.1.2 (2020-07-01) を mode('permissive') で動かしてみた。 アドレスは 127.0.0.1 です。
DNS/Knot Resolver/config/mode によると、
- normal mode なら in-baliwick NS とそのA/AAAAAを受け入れるとあり、通常は問題ない。
1.5. 実験の目的
brau.internat.jp ゾーン(/毒設定)を使って、/brau.jpのNSを乗取れるかを試す。
結論:
再現性に問題がありますが、乗取は可能です。非常に危険です。利用には十分注意が必要です。
1.6. 毒盛1
$dig -t ns brau.internat.jp
brau.internat.jp. 60 IN NS ns.brau.internat.jp.
- NXDOMAIN が返ってきたら正常ですので、続ける必要はありません。
/1.1.1.1 は上の返事になるはずです。
以下は mode("permissive") のKnot Resolver 5.1.2 での結果です。
1.7. 毒盛2
$ dig -t soa brau.jp @127.0.0.1
- を実行すると、以下の返事が得られたが、これはキャッシュされた返事のようだ。
brau.jp. 1777 IN SOA fake.brau.jp. hostmaster.brau.jp. 1598667800 16384 2048 1048576 2560
偽brau.jp SOA TTLが長すぎる。
正しい Aレコードはこれなのだが、すでに毒盛で別のアドレスを指している。/解説2
ns.brau.jp. 120 IN A 150.42.6.4
これでは確認にならないので、こっちの方がよいだろう。/解説3
$dig ns.brau.jp
乗取られていると、NXDOMAINが返ってくる?
1.8. 確認
$dig -t soa brau.jp
- brau.jp の SOAはどうなっているか。
brau.jp. 1730 IN SOA ns.brau.internat.jp. hostmaster.brau.jp. 1598366138 16384 2048 1048576 2560
SOA 値の最初が ns.brau.internat.jp になっていたら、毒盛されるリゾルバーを使っている可能性があります。ご用心。
本来の返答はこれです。1.1.1.1 も毒は入っていません。
brau.jp. 119 IN SOA ns.brau.jp. tss.e-ontap.com. 2020082501 3600 600 86400 60
1.9. 参考
$ dig -t ns brau.internat.jp @8.8.8.8 ; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> -t ns brau.internat.jp @8.8.8.8 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33262 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;brau.internat.jp. IN NS ;; AUTHORITY SECTION: internat.jp. 59 IN SOA ns.internat.jp. tss.e-ontap.com. 2020061601 3600 600 86400 60 ;; Query time: 61 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Aug 27 15:57:04 JST 2020 ;; MSG SIZE rcvd: 99