オープンソース

DNSの新しい攻撃手法NXNSAttack

2020年5月にイスラエルのテルアビブ大学の研究者らが、DNSサービスへの新しい攻撃手法を報告しました。この攻撃手法は、いわゆるDoS/DDosに類する攻撃です。具体的には、DNSサーバに多量のパケットを送信して、DNSサーバやネットワークリソースを枯渇させます。過去にもDNSサービスへのDoS/DDoS攻撃は、いくつか存在しました。しかしこのNXNSAttackは、攻撃の容易さ、また効率の高さから危険視されています。

NXNSAttackの仕組み

NXNSAttackは、DNSサービスの委任と呼ばれる機能を悪用したものです。委任の仕組みからNXNSAttackのメカニズムまでを解説します。

ドメインの委任

DNSサービスは、世界中に分散しています。その分散の仕組みの根幹を成すのが委任の機能です。前提としてドメインは階層構造になっています。上位のルートDNSと呼ばれるDNSサーバから、下位のcom.やjp.などのドメインに管理権限が委任されています。さらにcom.のDNSサーバから、example.comなどが委任されています。階層構造になっていることで、複数のDNSサーバでドメインを管理することが可能になり、巨大なインターネットの通信を支えることができています。

委任のメカニズム

NXNSAttackを理解するためには、委任と呼ばれる機能が、どのように動作するのかを知る必要があります。例えば、example.comのIPアドレスを知りたい場合、クライアントはルートDNSから順にexample.comについて問い合わせます。その途中経過で、com.ドメインの権威DNSサーバは、「a.gtld-servers.net.」などあることがわかります。

NXNSAttack画像

さて、Linux等で使われるdigコマンドで、「a.gtld-servers.net.」にexample.comのIPアドレスを尋ねると、次のように答えが返ってきます。

$ dig @a.gtld-servers.com example.com A
(中略)
;; QUESTION SECTION:
;example.com.			IN	A
;; AUTHORITY SECTION:
example.com.		172800	IN	NS	a.iana-servers.net.
example.com.		172800	IN	NS	b.iana-servers.net.

この応答の中で、委任の情報を指すのがAUTHORITY SECTIONです。AUTHORITY SECTIONは、example.comのNSレコード、つまり権威DNSサーバの名前を示しています。この情報からexample.comのIPアドレスは、「a.iana-servers.net.」などに問い合わせれば良いことがわかります。

ただこの時点では、「a.iana-servers.net.」のIPアドレスがわかりません。インターネットの通信には、IPアドレスが不可欠です。つまり「a.iana-servers.net.」のIPアドレスも、ルートDNSから順を追って問い合わせを調べる必要があります。NXNSAttackは、この動作を悪用したものです。

委任の特徴

NXNSAttackは、委任の仕組みの次のような欠点をついた攻撃です。

  • クライアントは、委任情報を必ず信用して問い合わせを行う
  • 委任元は、委任先の了承無く委任情報を登録することができる
  • 委任情報(NSレコード)を、複数(大量)に登録することができる

NXNSAttackの動作

NXNSAttackは、次のようなシナリオで行われます。

  1. 攻撃者は攻撃用のドメインを取得・権威DNSサーバを用意する
  2. 攻撃用の権威DNSサーバに、大量のNSレコードを登録する
  3. NSレコードには、攻撃ターゲットになるドメインのレコードを登録する(委任設定)
  4. 攻撃者は、攻撃用ドメインの名前解決を行う
  5. 名前解決の処理で大量のNSレコードが返却される
  6. 大量のNSレコードのIPアドレスを調べるために、大量の問い合わせが発生する
  7. 問い合わせ先に指定されたDNSサーバが過負荷状態に陥る

NXNSAttackの動作の画像

NXNSAttackの影響

権威DNSサーバへの影響

NXNSAttackで、攻撃対象に指定された権威DNSサーバは、大量のNSレコードのクエリを受け取って、CPUやメモリリソースの枯渇が発生する恐れがあります。

キャッシュDNSサーバへの影響

NXNSAttackは、権威DNSへの問い合わせにキャッシュDNSを利用します。キャッシュDNSも大量のNSレコードを処理するため、CPUやメモリリソースの枯渇により、サービス停止が発生する恐れがあります。

周辺への影響

攻撃を受けた場合、大量のDNSパケットがネットワーク上を通るため、ネットワーク帯域の専有、ネットワーク機器の過負荷により、通信の速度低下などの影響がでる可能性があります。

NXNSAttackの対策

キャッシュDNSの対策

多くのキャッシュDNSサーバは、すでに対策が施されたバージョンがリソースされています。各ソフトウェアのアナウンスに従って、アップデートを行うことで、キャッシュDNSへの影響を抑えることができます。

現状、キャッシュDNSの機能を持つサーバソフトウェアの対策状況は次の通りです。

権威DNSの対策

NXNSAttackはDNS仕組みを悪用しているため、権威DNS側では残念ながら根本的な対策方法はありません。ただ、攻撃の緩和策としてレートリミットという仕組みがあります。

レートリミットは、大量のクエリを受信した場合に、大量のクエリを送信しているクライアントからのアクセスを遮断したり、応答を遅延させてサービス停止を防ぐ方法です。

ただし、単純なレートリミットでは、攻撃ではない大量の通信まで遮断してしまう恐れがあります。そのため、クエリの内容から攻撃と思われるものへの応答を、選択的に拒否・遅延させるレスポンスレートリミット(Response Rate Limit:RRL)と呼ばれるレートリミットが、ベターな対策と言われています。

レスポンスレートリミットに対応する権威DNSサーバソフトウェアは次の通りです。

参考URL

http://www.nxnsattack.com外部サイトへ

OSSのDNSサーバ構築

権威DNSサーバ
ここでは、BINDPowerDNSNSDKnotDNSについて紹介します。
キャッシュDNSサーバ
ここでは、bindunboundRecursorDJBDNSdnsdistについて紹介します。
DNSサーバ選定のポイント
ここでは、DNSサーバを選定する場合のポイントについて紹介します。
DNSの新しい攻撃手法NXNSAttack
NXNSAttackは、DNSサービスの委任と呼ばれる機能を悪用したものです。ここでは委任の仕組みからNXNSAttackのメカニズムまでを解説します。

DNSの新しい攻撃手法NXNSAttackの先頭へ