NXNSAttack の公表「CacheServe は？」
アカマイ・テクノロジーズ合同会社
シニア・ソリューション・エンジニア
松本 陽一
1© Akamai Technologies, 2020

このプレゼンテーションにおいてなされる記述は作成者個人の見解を示すものであり、アカマイ・テクノロジーズの見解を示すものではありません。提供される情報は作成時点において正確なものであると考えておりますが、当該情報についてなんら表明又は保証を行いません。

2© Akamai Technologies, 2020

Akamai (CacheServe) はどこ？
「…忘れられてるなんてことないよね？」
Akamai DNSi CacheServe
商用のフルリゾルバー・ソフト
ウェア
国内外多くの主要なキャリアやISP で採用される
http://www.nxnsattack.com/
2020 年 6 月 23 日現在

3© Akamai Technologies, 2020

オープンソースではなく、一般の方は入手、検証の機会がなさそうここにいました
Acknowledgements (謝辞)We would like to thank Michael McNally and:Tim April and Ralf Weber of Akamai and:http://www.nxnsattack.com/•

4月上旬頃コンタクトをもらう•

事前情報に基づいてテスト•研究者に対してクラウド上にテスト用の CacheServe を提供

問題がないことを確認済み（お客様からのお問い合わせに回答、アナウンス）
4© Akamai Technologies, 2020

今日のテーマ他の多くの実装が影響を受けると発表をする中で…
• なぜ、CacheServe は大丈夫といえるのか（具体論）• なぜ、CacheServe は未発見の問題に準備できていたのか（背景）問題とされたフルリゾルバーの動作の例
attacker.test.の権威サーバー

クライアントフルリゾルバー( BIND )victim.test.の権威サーバー

sd01.attacker.te
st. A?
sd01.attacker.test. A?
多数の参照 NS

• BIND 9.16.2 ( 修正前の最新 Stable ) で観察された動作• 参照先として受け取った NS から最大37 個に対する A と AAAA 計 74 のクエリを応答をまたず送信
5© Akamai Technologies, 2020

fake36.victim.test.
A?
fake36.victim.test.
AAAA?
fake83.victim.test.
A?
fake83.victim.test.
AAAA? A + AAAA
fake94.victim.test.
A?
x 37
fake94.victim.test.
AAAA?
(計74)
fake01.victim.test.
A?
fake01.victim.test.
AAAA?
fake02.victim.test.
A?
fake02.victim.test.
AAAA?
fake45.victim.test.
A?
:CacheServe (7.5.1.1) の動作
attacker.test.の権威サーバー

クライアントフルリゾルバー( CacheServe )sd01.attacker.te
st. A?

victim.test.の権威サーバー

sd01.attacker.test. A?
多数の参照 NS

• 参照先の NS のアドレスをひとつだけ解決しようとする• NXDOMAIN だと別のものを• A と AAAA を合計12 まで問い合わせ、全て NXDOMAIN の場合は諦めて
SERVFAIL 応答
VFAIL(名前解決に SER
IPv4を優先して使う設定
時 A x 8 、AAAA x 4の順)
6

© Akamai Technologies, 2020

fake33.victim.test. A?
NXDOMAIN
fake59.victim.test
. A?

A×8

NXDOMAIN::
fake35.victim.test. AAAA?
NXDOMAINAAAA × 4

名前解決のメッセージ数
microsoft.com. A

論文 (AWSのBIND 9.12.3?)

BIND
9.16.2

CacheServe
7.5.1.1

54 (126)

74 (194)

22 (22)

論文は、通常の名前解決につい twitter.com A
388
228 (586)
28 (28)ても、理論上 3 回のクエリで www.gov.uk A 102
468 (1137) 90 (90)済むところ非常に多くのパケッ DNSSEC validation オフ、数字は DNS メッセージ数、() 内はトが見られると指摘
TCP 制御を含む IP パケット数。起動直後にクエリし落ち着くまで。

CacheServe による microsoft.com の結果 (11クエリ) の内訳•••

ルート・プライミング (1)ルート、com.、microsoft.com. の権威サーバへのクエリと応答 (3) = 理論上のクエリ数 (広義の in-bailiwick な NS のグルーに従い解決 )予備的な NS のアドレス解決 (後述) (3)•

委任インジェクション対策のために委任参照の再確認 (2+2)

7© Akamai Technologies, 2020

参照先 NS 8 つ (12) で⼗分なのか？
委任の情報は通常のキャッシュとは別に丁寧に管理（右はinspection-delegation コマンドの出力より一部抜粋）
参照 NS の名前とそのアドレス解決状況(不存在を含め)保持一度に(あきらめるまで)解決するのが 8 (12) までなのであり、次のクエリを処理する際にはさらに 8 (12) まで解決を行う
8© Akamai Technologies, 2020

A L E X A TO P 1 0 0 0 : N S の 数 *346316

42

2
12332
4583
68761
82

22061910111213*委任参照ではなく、NS タイプでクエリした結果"server": "ns1-205.azure-dns.com","addresses": [{"type": "A","origin": "192.42.93.30","ttl": "172443","glue": "true","addresses": [{"address": "40.90.4.205","rtt": "0.008528","outstanding-queries": "0":あらかじめ NS のアドレスを解決しておかなくていいの？
CacheServewww.sub.example.
test. A?
委任参照
sub.example.test.
NS ns1.domain.test.
NS ns2.domain.test.
NS ns3.domain.test.

foo.sub.example.
test. A?
予備的に、ns2 のアドレスを解決しておくbar.sub.example.
test. A?
既知の ns2 にクエリ
並行して ns3 を予備的に解決

baz.sub.example.
test. A?
9

© Akamai Technologies, 2020

sub.example.test. の権威サーバ群
example.test. domain.test.
ns2.domain.test.の権威サーバ の権威サーバ ns1.domain.test
ns3.domain.test
初回、一つだけアドレスを解決 (ns1)ns1.domain.test.
A?
www.sub.example.
test. A?
foo.sub.example.
test. A?
ns2.domain.test.
A?

ns3.domain.test.
A?

CacheServe の予備的 (speculative) クエリ
未解決の NS のアドレスをひとつ解決しておく。
徐々に委任情報のテーブルにアドレスや RTT の情報が埋まっていく

bar.sub.example.
test. A?

baz.sub.example.
test. A?

その他
Success-Based Rate-Limiting
権威サーバーへの問い合わせ状況と失敗をモニタし、独自のアルゴリズムで自動的にクエリを調整
従来型のランダムサブドメイン攻撃 ( いわゆる「水責め」) でも極めて有効

Prefetch Extension
権威サーバーからの応答が得られない場合に限って TTL が満了したキャッシュから応答2016 年の大規模な権威サーバーへの DDoS 事件を受けて追加された機能

10© Akamai Technologies, 2020

なぜ準備できてたのか？
•

開発当初より通信事業者を主なターゲットとしてパフォーマンスだけでなく、セキュリティ、信頼性、可用性を重視•

経験を生かしつつ、新しく作り直すことができた( BIND8 → BIND9 → CNS / Vantio 5 → CacheServe 7 )•世界中の通信事業者における利用からのフィードバック( 内容はほんとうに様々 )•現場や研究者等からの意見に対応
例 : キャッシュ・ポイズニングに対しても、カミンスキー攻撃の発表の前にも後にも継続的に様々な対策を続けてきた“As new DNS vulnerabilities are discovered, a layered approach such as Nominum’s will help
in ensuring ongoing Internet security ( Dan Kaminsky )”「新しい DNS の脆弱性が見つかるに従い、Nominum のような多層的な手法がインターネットのセキュリティの確保に役立つだろう（ダン・カミンスキー）」11© Akamai Technologies, 2020

12

© Akamai Technologies, 2020