DNS Summer Day 2020
本記事は、DNS Summer Day 2021で発表した内容を記事として書き起こし、加筆修正したものです。
目次
NXNSAttackとは
- フルリゾルバーと権威サーバーを同時に攻撃できるお得な手法
- メインのターゲットは権威サーバー?
- 狙った権威サーバーに向けた、存在しない名前のNSレコード(NXNS)を大量に付与した委任応答を返すことで、フルリゾルバーと権威サーバーとの間に多くのやり取りを発生させるという攻撃
- RFC通りに真面目に名前解決を行おうとしたら加害者になってしまう
- DNSプロトコルの穴を突いたようなもので、結構な数の実装がこの脆弱性を踏みました
- XACK DNS
- BIND
- Unbound
- PowerDNS Recursor
- Knot Resolver
NX○○Attack ?
- 何かあったら水平展開!
- →NSレコード以外でも同様の攻撃が可能なのでは?
- 必要と思われる条件
- 向き先を設定できる(攻撃対象となるサーバーを何らかの方法で指定できる)
- その向き先にフルリゾルバーが名前解決を行い、NXDomainを得るように仕向けることができる
- フルリゾルバーが目的のレコードを得られるまで複数回問い合わせを行うように細工することができる
NXNSAttack
〇 NSDNAMEに向き先を設定できる(ゾーンの権威サーバーに向けられる)
〇 NSDNAMEを存在しないであろう名前にすることで、フルリゾルバーがNSDNAMEのA/AAAAレコードを解決しに行き、NXDomainを得るように仕向けることができる
〇 権威部に大量にNSレコードを付与することで、目的のA/AAAAレコードを得られるまでフルリゾルバーが複数回問い合わせを行うようにすることができる
⇒条件達成
NXCNAMEAttack
〇 CNAMEに向き先を設定できる(ゾーンの権威サーバーに向けられる)
〇 CNAMEを存在しないであろう名前にすることで、フルリゾルバーがCNAMEを解決しに行き、NXDomainを得るように仕向けることができる
✖ CNAMEは通常、1つの名前につき1つしか設定できず、複数回問い合わせを行うように細工することができない
⇒条件未達成
NXPTRAttack
〇 PTRDNAMEに向き先を設定できる(ゾーンの権威サーバーに向けられる)
✖ フルリゾルバーはPTRDNAMEの名前解決を行わない
✖ そもそも問い合わせ自体が行われない
⇒条件未達成
NX■■■Attack
〇 ■■■に向き先を設定できる(ゾーンの権威サーバーに向けられる)
〇 ■■■を存在しないであろう名前にすることで、フルリゾルバーがNXDomainを得るように仕向けることができる
〇 回答部に大量に■■■レコードを付与することで、目的の■■■レコードを得られるまで■■■が問い合わせを繰り返し、フルリゾルバーが複数回問い合わせを行うようにすることができる
⇒条件達成
実際にやってみた

ただ実際に攻撃に使えるかというと微妙です。
一応伏せてはおきます。
まとめ
- NXNSAttackは、RFC通りに真面目に名前解決を行おうとしたフルリゾルバーが加害者になってしまう、DNSプロトコルの穴を突いた攻撃手法
- 利用されているのはDNSの根幹となる部分
- DNSプロトコルの難しさを再認識
- 一部のアナウンスで「実装上の不具合」と表現されていましたが、この評価は開発者側からすると少し手厳しいです…。
今回の経験と水平展開の結果を踏まえ、今後もキャリアグレードの製品を開発してまいります。

課題抽出やどの製品を選定すればよいかの整理からご相談ください
システムの新規構築や更改にお悩みのお客様もお待ちしています。
現状の課題抽出や要件の整理、解決に導くための機能紹介やシステム
構成まで、アプライアンス・ソフトウェア問わずご提案します。