VPNを使っていてもWebRTCという機能を通して接続元のIPアドレスが漏れてしまう事例が幾つも確認されています。Chrome, Firefox等の普段使うブラウザーにWebRTCは組み込まれており、プライバシーを脅かす1つの問題となっています。
どのようにWebRTC漏れを防げばよいのでしょうか?WebRTCの仕組みから紹介します。
WebRTCとは?
WebRTCとは「Real-Time Communication」の略で、ビデオチャットや音声、ファイル転送やライブストリーミングをブラウザ間でやり取りすることを可能にする規格です。
Googleがオープンソース化した技術で、現在Chrome, FireFox, Safari, Opera, Edgeなどの主要ブラウザーに実装されています。
通信方法の大きな特徴の1つはTorrentのように端末間で直接通信をやり取りするP2P (ピア・ツー・ピア) 方式を採用している点です。従来のWebSocketなどの通信方法は次のようにサーバーを介して通信されます。
しかし、WebRTCはメインのやり取りはユーザー間で行われます。そのために、低い遅延や速度の低下を防いだり、サーバーの負担を減らす事が出来ます。
Facebook Messenger, Google Hangout, appere.inなどがこの規格を採用しており現在もWebRTCを使用したサービスは増え続けています。
普及している一方で、プライバシーの面で大きな問題が見つかっています。
どんな問題が生じているの?
VPNを使っていても接続元のIPアドレスが第三者に渡っている可能性があります。この問題はWebRTC漏れ、もしくはWebRTCリークと呼ばれています。
P2Pという通信方法を採用している為に、電話番号を知らないと電話をかけられない事と同じく、お互いのIPアドレスを知ることによって初めて通信が成立します。
WebRTCを使ったサービスや、ウェブサイト自体がWebRTCを使って使用者のリアルIPアドレス(VPNのIPではなく、接続元のパブリックIP)を知る事が出来ます。このパブリックIPは家の住所のような個人情報で、相手に知られるとある程度の身分が特定出来てしまいます。
何故IP漏れが生じる?
VPNを使ってもWebRTCから通信元のIPアドレスが漏れてしまう理由はP2P通信を確立する為のSTUNサーバーにあります。VPNはSTUNサーバーを使ってリアルIP(接続元のパブリックIP)とVPNサーバーのIPを交互に変換します。
STUNサーバー内にリアルIPとVPNサーバー双方が記載されたIPテーブルが作成され、その情報をWebRTCを使ったサービスもしくはウェブサイトを提供している第三者が読み取る事が出来ます。
このようにしてVPNを使っていても地元のIPアドレスが漏れる可能性がありあます。
WebRTC漏れのチェック方法
初めに、VPN無しで現在利用中のパブリックIPをチェックします。下記サイトなどから確認可能です。
参考BearMyIP
その後VPNに接続して、テストサイトから確認します。WebRTC漏れを確認出来るサイトは多くありません。日本語にも対応していて分かりやすいサイトはExpressVPN公式サイトです。
初めに確認したパブリックIPとは異なるIPが表示される、もしくは下記のように「WebRTCは利用出来ません」と表示されていればIP漏れの心配はありません。
より細かく状況を知りたい場合は、browserleaks.comからでも確認出来ます。
WebRTC漏れを防ぐ方法
ExpressVPNは業界の中でも最もWebRTC対策に力を入れています。しかし、WebRTCは常に変化を遂げており、VPNだけでは完全に防ぎ切れない可能性があります。WebRTCは基本的にはブラウザーベースのアプリケーションなので、ブラウザー単位で対処する必要があります。
WebRTC漏れに対応しているブラウザーはGoogle Chrome, Firefox, Opera, Safari, Braveになります。Microsoft Edgeは問題があるようで、完全に対処出来ません。
iOSに関してはiOS12以降で, Safariを利用している限りWebRTC漏れの問題はないようです。
WebRTCを制限、無効化する事によって使えなくなるウェブサービスが出てくる可能性があります。
Google Chrome(デスクトップ)
Chromeの場合はプラグインをインストールする事でWebRTC漏れを防ぐ事が出来ます。多くのプラグインが存在しますが、おすすめは下記プラグインです。
今回は簡単に設定可能なWebRTC Network Limiterの設定を紹介します。
先ず、下記リンクからプラグインをダウンロード&インストールします。
メニューバーに表示されたプラグインをクリックしてオプションを選択。下記画像が表示されます。
ExpressVPN, NordVPN, VyperVPNを使用している場合は上から3つ目 (Use only my default public IP address) のオプションを選択。
UCSSなどのShadowsocks (Proxy) を使用している場合は4つ目 (Use my proxy sever) を選択します。
Google Chrome (Android)
アドレスバーへ、下記URLを入力します。
chrome://flags/#disable-webrtc
"WebRTC Stun origin header"という項目を探して、"Disabled" へ変更。気になるようでしたらWebRTCに関する項目全てを"Disabled"に変更してもOKです。
Firefox(Android共通)
ブラウザーのアドレスバーへ "about:config" を入力します。「危険を承知のうえで使用する」をクリック。
Config一覧が表示されるので、検索欄に "media.peerconnection.enabled" をコピペして検索します。
Trueをダブルクリックして、Falseに変更します。これでWebRTC漏れを防ぐ事が出来ます。
Safari
「環境設定」→「詳細」→「メニューバーに"開発"メニューを表示」にチェック。
メニューバーに「開発」が表示されるので、「WebRTC」→「レガシーWebRTC APIを有効にする」のチェックを外します。
Brave
Braveは2つの方法でWebRTC漏れを防ぐことが可能です。2つの設定を変えればより確実です。
1. 設定から「Braveシールド」→「指紋保護」→「すべての指紋をブロック」を選択
2. 設定内にある詳細設定から「プライバシーとセキュリティ」→「WebRTC IPアドレスの取扱方針」→「非プロキシUDPを無効にする」を選択。
Opera
Opera addonsからWebRTC Leak Preventをインストール。
IP handling policyを"Disable non-proxied UDP" へ変更。
管理人の一言
このWebRTC漏れ(リーク)の問題は2015年には問題にもなっておらず、わりと新しいプライバシー保護に関する問題です。
ブラウザーはプライバシーが漏れる大きな原因の1つとして挙げられており、フィンガープリントなど個人を特定出来る要素を漏らしたくない場合は出来る限りChromeやIE, Edgeに使用を避け、FirefoxやBraveなどのブラウザーの使用をおすすめします。
無料VPNやその他技術力やプライバシー保護の観念に欠けるサービスは、VPNを使用していてもWebRTCから接続元のIPが漏れているという危険があります。上記の方法で防ぐ事に加えて、ExpressVPNやProxy.shと言った技術力が高く、プライバシー保護に関して努力しているVPNサービスの利用が必須になります。
管理人のおすすめVPNサービスはこちらから。
-
【目的・状況別】管理人オススメの有料VPN|2021年版
続きを見る