ブラウザ・トラッキング

WebRTC

約 4 分で読めます

WebRTC とは

WebRTC (Web Real-Time Communication) とは、ブラウザ間でプラグインなしにリアルタイムの音声・映像・データ通信を実現する Web 標準技術です。Google Meet、Discord、Facebook Messenger などのビデオ通話機能は WebRTC を基盤としています。

WebRTC は通信の効率化のため、ブラウザ同士が直接接続する P2P (Peer-to-Peer) 方式を採用しています。この直接接続を確立するために、STUN/TURN サーバーを使って自分のIP アドレスを相手に通知する仕組みがあり、これがプライバシー上の問題を引き起こします。

STUN/TURN サーバーの役割

WebRTC の P2P 接続を確立するには、まず自分のネットワーク上の位置を把握する必要があります。ここで STUN と TURN という 2 種類のサーバーが使われます。

STUN サーバー
Session Traversal Utilities for NAT の略。クライアントが STUN サーバーにリクエストを送ると、サーバーは「あなたの IP アドレスはこれです」と応答する。NAT の内側にいるデバイスが自分のパブリック IP アドレスとポート番号を知るための仕組み。Google は stun.l.google.com:19302 を無料で公開しており、多くの WebRTC アプリケーションがこれを利用している。
TURN サーバー
Traversal Using Relays around NAT の略。対称型 NAT やファイアウォールにより P2P 接続が確立できない場合に、TURN サーバーが通信を中継する。全トラフィックがサーバーを経由するため帯域コストが高く、P2P 接続の最終手段として使われる。

プライバシーの観点で問題なのは、STUN サーバーへの問い合わせが VPN トンネルを経由せずに行われる場合があることです。この場合、VPN で隠しているはずの実際の IP アドレスが STUN サーバーに送信され、JavaScript 経由で取得可能になります。

ICE Candidate と IP 漏洩の仕組み

WebRTC は接続経路を確立するために ICE (Interactive Connectivity Establishment) というフレームワークを使用します。ICE は複数の接続候補 (ICE Candidate) を収集し、最適な経路を選択します。

ICE Candidate の収集プロセスでは、以下の 3 種類の候補が生成されます。

  • Host Candidate: デバイスのネットワークインターフェースから直接取得したローカル IP アドレス (192.168.x.x10.x.x.x)。VPN 接続中でも、物理 NIC の IP アドレスが含まれる場合がある
  • Server Reflexive Candidate (srflx): STUN サーバーから返されたパブリック IP アドレス。VPN を経由しない経路で STUN に問い合わせた場合、VPN の外側の実 IP が露出する
  • Relay Candidate: TURN サーバーのアドレス。プライバシーリスクは低い

悪意のある Web サイトは、RTCPeerConnection オブジェクトを生成して ICE Candidate の収集を開始するだけで、実際に通話を行わなくてもこれらの IP アドレスを JavaScript で取得できます。わずか数行のコードで実行可能なため、DNS リークと並ぶ VPN 利用時の代表的な情報漏洩経路となっています。

ブラウザごとの対策方法

  • Firefox: アドレスバーに about:config と入力し、media.peerconnection.enabledfalse に設定すると WebRTC を完全に無効化できます。より細かい制御として、media.peerconnection.ice.default_address_onlytrue にすると、デフォルトのネットワークインターフェースの IP のみを公開し、他のインターフェース (VPN アダプタ等) の IP 漏洩を防げます。
  • Chrome: 設定画面からは無効化できません。「WebRTC Leak Prevent」などの拡張機能を使い、ICE Candidate の収集ポリシーを disable_non_proxied_udp に制限します。これにより、プロキシを経由しない UDP 通信が遮断され、実 IP の漏洩を防止できます。
  • Safari: 「設定」→「詳細」→「WebRTC」で、ICE Candidate の制限オプションを有効にできます。Safari はデフォルトで WebRTC の IP 漏洩に対して比較的保守的な設定になっています。
  • Brave: デフォルトで WebRTC の IP 漏洩を防止する設定が有効になっています。「設定」→「プライバシーとセキュリティ」→「WebRTC IP ハンドリングポリシー」で確認できます。

VPN キルスイッチを有効にしていても、WebRTC 漏洩は防げない場合があります。ブラウザ側での対策が必須です。

WebRTC の正当な用途

WebRTC はプライバシーリスクが注目されがちですが、プラグインなしでリアルタイム通信を実現する強力な技術です。主な用途を理解しておくと、無効化した場合の影響を判断しやすくなります。

  • ビデオ会議: Google Meet、Zoom (Web 版)、Microsoft Teams (Web 版) はすべて WebRTC を使用。無効化するとブラウザからの参加ができなくなる
  • 音声通話: Discord の Web 版、Facebook Messenger の通話機能など
  • P2P ファイル共有: WebTorrent やブラウザ間の直接ファイル転送サービス
  • リアルタイムゲーム: ブラウザベースのマルチプレイヤーゲームで低遅延通信に使用
  • ライブストリーミング: 超低遅延 (サブ秒) のライブ配信に WebRTC が採用されるケースが増えている

ビデオ会議を頻繁に使う場合は、WebRTC を完全に無効化するのではなく、VPN プロバイダーが提供する WebRTC 漏洩防止機能や、ブラウザの ICE Candidate 制限設定を活用するのが現実的です。

WebRTC 漏洩の確認方法

自分のブラウザで WebRTC 漏洩が発生しているかは、専用のテストサイトで簡単に確認できます。VPN に接続した状態でテストを実行し、VPN サーバーの IP アドレス以外の IP が表示されていれば漏洩しています。

確認手順は以下のとおりです。

  1. VPN に接続する
  2. WebRTC リークテストサイトにアクセスする
  3. 表示された IP アドレスを確認する
  4. VPN サーバーの IP 以外のアドレスが表示されていれば漏洩あり

ブラウザフィンガープリントのテストと合わせて定期的に確認することで、プライバシー設定の有効性を検証できます。

よくある誤解

VPN を使っていれば WebRTC の IP 漏洩は起きない
WebRTC は VPN トンネルを迂回してネットワークインターフェースに直接アクセスするため、VPN だけでは防げません。ブラウザ側で WebRTC を無効化するか、漏洩防止の拡張機能が必要です。
WebRTC を無効にするとインターネットが使えなくなる
WebRTC を無効にしても、通常の Web 閲覧、動画視聴、ダウンロードなどには影響しません。影響があるのはブラウザ内のビデオ通話や P2P ファイル共有など、リアルタイム通信を使う機能だけです。

関連用語

関連記事