ブラウザの同一生成元ポリシーを悪用して情報を窃取するDNSリバインディング攻撃とは?
ブラウザが情報窃取の踏み台にされてしまうのは何故?
攻撃の流れや防御策について分かりやすく解説
DNSリバインディング攻撃(DNS Rebinding Attack)とは、ウェブブラウザの同一生成元ポリシーを巧みにすり抜け、攻撃者が標的のネットワーク内部にある非公開のサーバーやデバイスへ不正にアクセスする攻撃手法です。本記事では、DNSリバインディング攻撃の仕組みと、被害を防ぐための対策について分かりやすく解説します。
目次
まず、同一生成元ポリシーとは?
DNSリバインディング攻撃を理解するには、まず同一生成元ポリシーとDNSの仕組みを押さえておくことが重要です。はじめに、この項では同一生成元ポリシーについて解説します。
同一生成元ポリシーの概要
同一生成元ポリシー(Same-Origin Policy:SOP)は、ウェブブラウザに備わっている基本的なセキュリティ機能の一つです。簡単にいうと、あるWebサイトで読み込まれたスクリプトが、別の無関係なサイトのデータへ勝手にアクセスできないようにする仕組みを指します。この仕組みによって、悪意のあるサイトがブラウザを通じて銀行サイトやSNSなどの情報を不正に取得することを防いでいます。
「生成元(Origin)」の定義
ブラウザは以下の3つの要素がすべて一致した場合に、それらを「同一の生成元」であるとみなします。
- プロトコル(httpやhttps)
- ホスト名
- ポート番号(httpなら80, httpsなら443)
(例)https://example.com との生成元の一致確認
| 比較対象のURL | 同一判定 | 理由 |
| https://example.com/page1 | ○ 同一 | パスが違うだけなら同一 |
| http://example.com | × 異なる | プロトコルが違う(https と http) |
https://sub.example.com |
× 異なる | ホスト名が違う(サブドメインは別扱い) |
https://example.com:8080 |
× 異なる | ポート番号が違う |
なぜ同一生成元ポリシーが必要なのか?
仮に同一生成元ポリシーが存在しなければ、深刻な情報漏えいが発生するおそれがあります。たとえば、利用者がオンライン銀行サイト(bank.com)にログインした状態で、別のタブから悪意のあるサイト(evil.com)を開いたとします。このとき、evil.comに埋め込まれたJavaScriptがブラウザを通じてbank.comにアクセスし、残高情報や個人情報を読み取ったうえで、攻撃者のサーバーへ送信できてしまう可能性があります。
しかし実際には、同一生成元ポリシーがこのような不正アクセスを防いでいます。evil.comのスクリプトがbank.comのデータ(DOMやCookieなど)を読み取ろうとしても、ブラウザが「生成元が異なる」と判断し、アクセスをブロックしてくれるからです。
DNSについて、その大まかな機能
次に、DNSの役割について見ていきます。DNSの仕組みは非常に複雑ですが、ここではDNSリバインディング攻撃を理解するうえで重要なポイントに絞って、簡単に整理します。
DNSの概要
DNS(Domain Name System)を一言でいうと、インターネット上の「住所録」や「電話帳」のような仕組みです。
コンピューター同士が通信する際は、192.168.1.1 のような数字の羅列であるIPアドレスを使用します。しかし、人間にとって数字を覚えるのは大変なため、google.com のような分かりやすいドメイン名を使えるように、名前と数字を紐付けて管理しているのがDNSです。
DNSの役割:名前解決
ブラウザにドメイン名を入力すると、サイトが表示されるまでの間に、DNSは「名前解決」と呼ばれる処理を行います。
名前解決の流れ
1. ユーザーが「example.com のIPアドレスを知りたい」とリクエストします。
2. DNSサーバーが情報を確認し、「93.184.216.34 です」と応答します。
3. ブラウザは、そのIPアドレスを使って目的のサーバーに接続します。
DNSの階層構造
DNSは1つの巨大なコンピューターで管理されているわけではなく、世界中に分散した階層的な仕組みで成り立っています。
-
ルートサーバー:全体の頂点。.com や .jp など、どのトップレベルドメインを誰が管理しているかを知っています。
-
TLDサーバー:.com や .net などの種類ごとに管理しています。
-
権威DNSサーバー:特定のドメイン(例:example.com)の正確なIPアドレス情報を持っている「最終的な回答者」です。
-
キャッシュDNSサーバー:私たちが普段、プロバイダーなどを通じて利用している問い合わせ先が、キャッシュDNSサーバーです。権威DNSサーバーから得た過去の回答を一時的に保存し、同じ問い合わせに対してより迅速に応答する役割を担っています。なお、このキャッシュを保持する期間はTTLと呼ばれ、権威DNSサーバーの管理者によって設定されます。
DNSリバインディング攻撃の仕組み
~何故内部情報が盗まれる?~
前述の通り、同一生成元ポリシーでは、あるサイトから読み込まれたスクリプトは、原則として別のドメインのデータにアクセスできません。DNSリバインディング攻撃は、この仕組みを逆手に取り、ドメイン名とIPアドレスの対応関係を途中で切り替えることで、この制限をすり抜けます。
DNSリバインディング攻撃の流れ
攻撃は主に以下の流れで行われます。
1.罠サイトへの誘導
まず、被害者となるユーザーが攻撃者の管理するドメイン(例:evil.com)にアクセスします。
2.初期DNS解決(正常なIPアドレスの返却)
ブラウザが evil.com のIPアドレスを問い合わせると、攻撃者の用意した権威DNSサーバーは、非常に短いTTL(キャッシュの有効期限)を設定したうえで、攻撃者が用意したサーバーのIPアドレスを返します。
3.悪意あるスクリプトの実行
ブラウザは、evil.com からJavaScriptを読み込みます。このスクリプトには、evil.com にデータを送信する処理が含まれていますが、通信先のドメイン名は同じであるため、同一生成元ポリシーには違反せず、ブラウザに処理が許可されます。
4.DNSの書き換え(リバインディング)
しばらくして、スクリプトが再び evil.com へ通信しようとすると、TTLが切れているため、ブラウザは攻撃者のDNSサーバーへ再度問い合わせを行います。すると今度は、攻撃者のDNSサーバーが、被害者のローカルネットワーク内にあるIPアドレス(例:192.168.1.1)を返します。
5.内部ネットワークの情報窃取
ブラウザは、アクセス先のドメイン名が引き続き evil.com であることから、「同じ生成元への通信」とみなします。その結果、内部サーバーやルーターの管理画面、IoT機器などのローカルネットワーク上の機器に対して evil.com 上のスクリプトを送信してしまいます。これにより、本来は外部から閲覧できない内部情報が、攻撃者へと送信されてしまうおそれがあります。
DNSリバインディング攻撃への対策 ~多層的な防御策~
DNSリバインディング攻撃を完全に防ぐことは難しいため、対策は一つに頼らず、多層的に講じることが重要です。
DNSフィルタリング
外部のDNSサーバーから「192.168.x.x」や「127.0.0.1」などのプライベートIPアドレスを含む返信があった場合、その応答を破棄する方法です。多くの企業向けルーターやプロキシで設定できます。
内部ネットワークへのアクセス制限
内部サーバー側で、アクセスを許可するホストを許可リスト方式で制限します。これにより、攻撃者が用意したホストから内部ネットワークへの通信を防ぐことができます。
ブラウザ機能による保護
現在の主要なブラウザには、DNSのTTLが短くても参照結果を一定時間保持する「DNS Pinning」が実装されています。これにより、急なIPアドレスの切り替えを悪用する攻撃への対策が可能となっています。
プライベートネットワークへの認証導入
「ローカルネットワーク内だから安全」と考えず、内部の管理画面やAPIにも必ず認証を設定することが重要です。パスワードなどの認証を導入することで、不正アクセスのリスクを抑えられます。
DNSリバインディング(DNS Rebinding)は、ブラウザの同一生成元ポリシーを巧みにすり抜け、被害者のブラウザを経由して、通常は外部からアクセスできないプライベートネットワーク内の機器や機密情報に不正アクセスする攻撃手法です。ブラウザがDNSによる名前解決の結果を信頼して通信先を判断する仕組みを悪用する点が特徴であり、対策としては、内部ネットワーク側でアクセス元のドメイン名を厳格に検証することが、汎用性の高い有効な防御策の一つといえます。
弊社へのお問い合わせは、下記のメールアイコンから

