ニュース

名前解決の仕組みを使ってDNSを攻撃、「NXNSAttack」とは

 DNSに対する新たな攻撃手法「NXNSAttack」についての情報を、テルアビブ大学の研究者らが5月19日に公開した[*1]

 NXNSAttackは、DNSに対するDoS攻撃の1つである[*2]。攻撃対象のドメイン名を管理する権威DNSサーバーや名前解決を実行するフルリゾルバー(キャッシュDNSサーバー)をサービス不能の状態に陥らせ、名前解決ができない状態にすることで、サービスの提供・利用を妨害することを目的としている。手法を公開した研究者らは、複数のDNS実装やパブリックDNSサービスが、NXNSAttackに対して脆弱であった旨を発表している。

 5月27日時点で、「BIND」[*3]、「Unbound」[*4]、「PowerDNS Recursor」[*5]、「Knot Resolver」[*6]に対するセキュリティアドバイザリとパッチリリースが公開済みとなっており、Microsoftからも「Windows DNS Server」[*7]に対するセキュリティアドバイザリが公開されている。日本国内においても、株式会社日本レジストリサービス(JPRS)[*8]、一般社団法人JPCERTコーディネーションセンター(JPCERT/CC)[*9]、独立行政法人情報処理推進機構(IPA)[*10]、一般社団法人日本ネットワークインフォメーションセンター(JPNIC)[*11]などから、早急な対応を呼び掛ける注意喚起が、相次いで公開されている。

「NXNSAttack」の仕組み

 DNSの名前解決は、利用者からの名前解決要求を受け取ったフルリゾルバーが、DNSの階層構造をたどることで実行される。階層構造をたどれるようにするため、委任元(親)の権威DNSサーバーはフルリゾルバーに、委任先(子)を示す委任情報[*12]を返す。委任情報には委任先のゾーンを管理するネームサーバーホスト名(NSレコード)が含まれ、必要に応じてグルーレコードが追加される。

 委任先のネームサーバーホスト名が外部名[*13]であった場合、委任情報にグルーレコードがないため、フルリゾルバーは指定されたネームサーバーホスト名のIPアドレスを別途入手する必要がある。つまり、その場合、フルリゾルバーは実行中の名前解決をいったん保留し、委任先のネームサーバーホスト名に対する名前解決を実行することになる。

 通常、委任情報には委任先の正当な権威DNSサーバーが指定される。しかし、悪意を持つ者が、自身が管理権限を持つドメイン名の委任情報として、意図的に不適切な内容を設定することは、技術的には可能である。そうした設定をしたドメイン名を準備しておき、そのドメイン名の名前解決を実行するように仕向けることで、名前解決の仕組みを使ってフルリゾルバーや権威DNSサーバーを攻撃するというのが、NXNSAttackの仕組みである。

具体的な動作

 研究者らが公開した研究論文やウェブページには、いくつかの例が示されている。

 ここでは、ウェブページでも紹介されている基本的な例を紹介する(図1)。文中の数字は、図に対応させている。

図1:攻撃手法の例(引用元:http://www.nxnsattack.com/

 NXNSAttackにおける登場人物は、クライアント(図左上)、攻撃者が準備した権威DNSサーバー(図右上)、一般的なフルリゾルバー(図中央)の3種類である。

① クライアントは、攻撃者が管理権限を持つドメイン名(xyz.attack.com)に対する名前解決要求を、フルリゾルバーに送る。

② 名前解決要求を受け取ったフルリゾルバーは、攻撃者が準備した権威DNSサーバーに、「xyz.attack.com」に対する問い合わせを送る。

③ 権威DNSサーバーは、攻撃用に準備された委任情報を応答する。委任情報には、多数のNSレコード(NS1、NS2、……NSn)が含まれている。

④ 委任情報を受け取ったフルリゾルバーは、NSレコードで指定されたネームサーバーホスト名に対する名前解決を実行する。名前解決はAレコードとAAAAレコードに対して実行され、問い合わせの数がNSレコードの数の2倍(2n)に増幅される(増幅率はフルリゾルバーの実装や設定などに依存する)。

 この例において、NSレコードに「fake-1.victim.com」「fake-2.victim.com」……「fake-n.victim.com」のように、攻撃対象のドメイン名(victim.com)に存在しないサブドメインを付加したネームサーバーホスト名を指定することで、攻撃対象の権威DNSサーバーに問い合わせを集中させることが可能になる。また、極めて多数のNSレコードを指定することで、フルリゾルバーの処理をあふれさせる攻撃も可能になる。

実装における対策状況

 NXNSAttackの情報公開と同時に、BIND(CVE-2020-8616)、Unbound(CVE-2020-12662)、PowerDNS Recursor(CVE-2020-10995)、Knot Resolver(CVE-2020-12667)に対するセキュリティアドバイザリとパッチリリースが公開された。

 いずれの実装においても、フルリゾルバーの名前解決の動作に制限を導入することで、対策が図られている。バージョンアップ/パッチの適用以外の回避策は準備されていないため、各組織において、早急なバージョンアップ/パッチの適用が必要になる。

[*1]…… NXNSAttack
http://www.nxnsattack.com/
http://www.nxnsattack.com/shafir2020-nxnsattack-paper.pdf(論文のPDF)

[*2]…… JPRS用語辞典「NXNSAttack(エヌエックスエヌエスアタック)」
https://jprs.jp/glossary/index.php?ID=0262

[*3]…… CVE-2020-8616: BIND does not sufficiently limit the number of fetches performed when processing referrals
https://kb.isc.org/docs/cve-2020-8616

[*4]…… Two vulnerabilities have been discovered in Unbound: CVE-2020-12662 and CVE-2020-12663.
https://nlnetlabs.nl/downloads/unbound/CVE-2020-12662_2020-12663.txt

[*5]…… PowerDNS Security Advisory 2020-01: Denial of Service(PowerDNS Recursor documentation)
https://docs.powerdns.com/recursor/security-advisories/powerdns-advisory-2020-01.html

[*6]…… NXNSAttack: upgrade resolvers to stop new kind of random subdomain attack(The CZ.NIC Staff Blog)
https://en.blog.nic.cz/2020/05/19/nxnsattack-upgrade-resolvers-to-stop-new-kind-of-random-subdomain-attack/

[*7]…… ADV200009|Windows DNS Server Denial of Service Vulnerability
https://portal.msrc.microsoft.com/ja-JP/security-guidance/advisory/ADV200009

[*8]…… (緊急)BIND 9.xの脆弱性(パフォーマンスの低下・リフレクション攻撃の踏み台化)について(CVE-2020-8616) - バージョンアップを強く推奨 -
https://jprs.jp/tech/security/2020-05-20-bind9-vuln-processing-referrals.html

[*9]…… ISC BIND 9の脆弱性(CVE-2020-8616、CVE-2020-8617)に関する注意喚起
https://www.jpcert.or.jp/at/2020/at200023.html

[*10]…… DNSサーバBINDの脆弱性対策について(CVE-2020-8616)(CVE-2020-8617)(IPA)
https://www.ipa.go.jp/security/ciadr/vul/alert20200520.html

[*11]…… BIND 9における複数の脆弱性について(2020年5月)(JPNIC)
https://www.nic.ad.jp/ja/topics/2020/20200520-01.html

[*12]…… JPRS用語辞典「委任情報」
https://jprs.jp/glossary/index.php?ID=0192

[*13]…… JPRS用語辞典「外部名」
https://jprs.jp/glossary/index.php?ID=0191