1. DNS/毒盛/概要
Contents
UDP をやめよう、という話になってきています。 TCPにするなら、DNSSEC もいらない。
- TCP でも危険だと、食い止めようとするひとたち。
1.1. 毒盛とは
対策?: ../ゾーンサーバの監視
http://cloud.watch.impress.co.jp/epw/cda/security/2008/08/28/13724.html 「ポートランダム化もすでに破られている」
1.1.1. 2014 年にあらたな展開
- Mueller の「委譲毒盛」を使った攻撃の再評価(前野)で、 co.jp などに簡単に毒が入ることがわかった。
- 鈴木は NS が上書きできるケースが多いことを示した。
http://www.e-ontap.com/blog/20140415.html
1.1.2. 攻撃手法
DNS/キャッシュ毒盛 /雨だれ攻撃 DNS_spoofing
/成立の要件 /taxonomy /poison https://moin.qmail.jp/DNS/RFC2181/s5
/Guide DNS/The Hitchhiker’s Guide to DNS Cache Poisoning
https://www.nic.ad.jp/ja/newsletter/No40/0800.html /nicの説明
https://tools.ietf.org/html/rfc5452
1.2. 経緯
1.2.1. Kaminsky 攻撃
Kaminsky流の攻撃手法により、毒盛の防御にはTTLは役にたたないことが示されました。 /Kaminsky手法
Kaminsky 手法は「キャッシュされていない名前を問い合わせる」ことにより、「毒を送りつける機会を増やす」ものである。
- どういうレコードをキャッシュさせるか(毒盛するか)は、次の段階の話です。
- Kaminsky が示した例では当時のBINDにすら毒盛できませんでした。
BIND各バージョンへの毒入れ実験 (Kaminsky Bug の検証) http://www.e-ontap.com/dns/bindmatrix.html
しかし、 DNS/node_re-delegationの報告にあるように「委譲返答」を使った攻撃が有効であると分かっています。
/Mueller手法 による「委譲返答攻撃」 と呼びます。
1.2.2. Mueller の委譲返答攻撃
Mueller は偽委譲返答(NSなど)を送りこむ攻撃が考えられると言っています。 DNS/毒盛/Mueller手法
Mueller paper の指摘では
キャッシュにないレコードを毒として注入します。ここでもTTLは関係しません。(ランキングも)
ここまでが2008年に明らかになったことです。(それに世界が気づいていなかったとしたら不思議です。)
問い合わせポートのランダム化である程度の防御ができるからでしょう。
1.2.3. Ghost Domain Names
そして、2012年にはDNS/GhostDomainNames脆弱性が指摘されています。(これもキャッシュへの毒盛です)
- (上位サーバで)登録を削除されたはずのドメイン(幽霊)をキャッシュサーバに残す(活かし続ける)というもの。
関連して「共用DNSサービスの危険性」を指摘しました。(サブドメイン登録など一部の問題は改善されました。)
unbound などのキャッシュサーバ(実装)での対策も追加されていますが、十分利用されているとは言えません。 -- ToshinoriMaeno 2014-03-22 23:56:19
1.3. いまも残る脅威
A レコード(web サーバやDNSゾーンサーバ) はキャッシュされていることが多いので、対象としません。
1.3.1. NS レコードが危ない
Mueller 手法にある NSレコードを狙うのが有効そうです。
RFC2181 では参照返答に含まれるNSレコードでキャッシュを上書きしてよいか、あいまいです。
- Mueller 手法で簡単にNSに毒を入れられるキャッシュ実装もありそうです。
正規の返答がNXDOMAINであるような問い合せを送るので、 毒盛したいNSレコードがキャッシュさせられることがない。 これにより効果的な攻撃になります。
--> Kaminsky 流の「存在しない下位の名前」を問い合せて、一段上位のNSを返答します。
1.3.2. NSレコードを持っていないノードが危ない
現実のDNSゾーン構成を観察すると、簡単に毒盛できそうなケースが多数見つかります。
2月に通報済みです。-- ToshinoriMaeno 2014-03-23 00:01:19
NSレコードを持たないノードです。たとえば、co.jp などの属性型JPドメイン名のおおもとです。
JPRSはいまもこのことを公表していません。(-- ToshinoriMaeno 2014-05-02 21:42:54)
DNS/委任毒盛 一部の人だけが読めます。 -- ToshinoriMaeno 2014-03-25 22:52:27
1.4. いますぐ確認して欲しいこと
ゾーンサーバとキャッシュサーバは分けていますか。
キャッシュサーバのポートランダム化はお済みでしょうか。
http://snoopy.e-ontap.com/ http://snoopy.e-ontap.com/announce.html
- 危険なDNSサーバの利用者へ警告を行う活動を行っています
1.5. 毒盛に使う毒
- キャッシュサーバにキャッシュされていなくて、
- 正当な権威サーバからの返事には含まれていなさそうで、
- 偽返答なら受け入れられそうなレコードとは:
Answer Section ではなさそうですね。
Mueller にあるように Authoriyt Section 内の NS レコードが一番狙われ易い。
なかでも、DNS/委譲毒盛 はターゲットを発見できれば、すぐにも毒盛できてしまう危険な手口です。
1.6. キャッシュにあっても危ないかも
キャッシュが優先されて、置き換えが起きないのなら、 余計なお節介のNSレコードも毒盛防御には役にたっているのかもしれない。
でも、置き換えられるのではないか。 DNS/RFC2181/s5 /root-servers.net
1.7. 参考情報
http://www.e-ontap.com/dns/bindmatrix.html (Kaminsky Bug の検証)
http://dnsops.jp/event/20130719/20130719-undocumented-DNS-orange-6.pdf 教科書には載っていないDNS (JPRS 森下)
DNSキャッシュポイズニング対策 IPA https://www.ipa.go.jp/security/vuln/DNS_security.html