DNSリバインディング攻撃

Feb 08 2023
DNS 再バインディングは、DNS 解決を操作することで同一オリジン ポリシーをバイパスする方法です。一般的なクロスオリジン攻撃はブラウザによってどのようにブロックされるのでしょうか? ここで、ブラウザは、攻撃者のオリジンからの応答ページが他のオリジンからのページを要求していることを理解します(つまり、

DNS 再バインドは、DNS 解決を操作することで同一生成元ポリシーをバイパスする方法です。

一般的なクロスオリジン攻撃はブラウザによってどのようにブロックされるのでしょうか?

ブラウザがクロスオリジンリクエストをブロックしている

ここで、ブラウザは、攻撃者のオリジンからの応答ページが他のオリジン (つまり、ローカルホスト) からのページを要求していることを理解します3。これは「クロスオリジン」による「非単純リクエスト」であるため、ブラウザはデフォルトでリクエストをブロックします。

ローカルサーバーにアクセスするには、SOPをバイパスする必要があります

ここで DNS リバインディングが私たちの助けになります……

攻撃シナリオ

同一生成元ポリシーをバイパスする DNS リバインディング攻撃

最初の DNS 解決では、攻撃者.com は 6.6.6.6 ²に解決されます。したがって、ブラウザはリクエストを 6.6.6.6 に送信し、攻撃者の応答を受け取ります。攻撃者の応答には、攻撃者.com へのフェッチ要求が再度含まれる可能性があります。ここでは、攻撃者のオリジンからのページが攻撃者のオリジンからのリソースを要求しているため、同じオリジンです⁵。

DNS サーバーを構成する際、攻撃者はTTL(Time-To-Live) を小さい値 (例: 2 秒)² に設定します。

そのため、ブラウザは、攻撃者.com へのフェッチ要求を実行する際に、再度 DNS サーバーに攻撃者.com の解決⁵を要求しますが、これは 127.0.0.1⁶ に解決されます (攻撃者は DNS サーバー設定に 2 つの A レコードを設定します)。

次に、ブラウザは攻撃者ページで次のリクエストを実行します。これは 127.0.0.1 ⁸への DELETE リソース リクエストです。127.0.0.1と同じ発信元のローカルホストへのリクエストなので、ブラウザはブロックせずに実行します。
リソースが削除されます⁹

DNS サーバーをすばやく起動するにはどうすればよいですか?

アプリケーションを使用できますhttp://lock.cmpxchg8b.com/rebinder.html(ソースコードも利用可能です)

他の攻撃シナリオはありますか?

  1. 混乱を招くサーバー側のインフラストラクチャ

攻撃者に対する制約/開発者に対する緩和策

1. 認証が必要な場合

2. SSL証明書が存在する場合

3. サーバーがホストヘッダーを検証する場合

4. カスタム プロトコル ハンドラー (例: chrome:// ) が定義され、ローカル アプリケーションへのアクセスに使用されている場合

参考文献:

  • DEF CON 25 — ルーク・ヤング
  • 攻撃 URI または DNS 解決のための Web アプリケーション (Tavis Ormandy 著)
  • バグ報奨金 | Leet Cipher による DNS 再バインドを使用した SSRF バイパスには 2000 ドル
  • Feross によるデータ リバインディング攻撃の講義
  • Gerald Doussot — DNS リバインディング攻撃と発信元の特異点の状況 — DEF CON 27 カンファレンス
  • DNS 再バインドによる SSRF (CVE-2022–4096) by Basavaraj
  • 特異点ツール