NATはこうなることを予見していたのか: 悪意あるJavaScriptがファイアウォールに穴を開けて悪意ある人物を侵入させる

Table of Contents

NATはこうなることを予見していたのか: 悪意あるJavaScriptがファイアウォールに穴を開けて悪意ある人物を侵入させる

週末のハロウィーンに合わせて、セキュリティ研究者のサミー・カムカー氏は「NATスリップストリーム」と呼ぶ、ファイアウォールを突破する不気味な手法の詳細を公開した。この手法により、リモート攻撃者はゲートウェイやブラウザの防御を突破し、被害者の設定に応じてネットワーク内のコンピュータで実行されているサービスにアクセスできるようになる。

名前が示すように、NATスリップストリームは、ルーターやファイアウォールがローカルネットワーク上のシステムと外部ネットワーク間の接続を繋ぐために用いるネットワークアドレス変換(NAT)を悪用します。このスリップストリームを悪用することで、リモートの攻撃者が被害者のPC上の、通常は外部からアクセスできないTCP/UDPサービスにアクセスすることが可能になります。この手法は分かりにくいものですが、Kamkar氏は技術的な詳細と動作を実証するコードを提供しています。

この攻撃が成功するには、被害者が悪意のあるJavaScriptを含むウェブサイトにアクセスし、脆弱なアプリケーションレベル/レイヤーゲートウェイ(ALG)の背後にいる必要があります。ALGは、送受信パケットを傍受することで仲介役として機能します。ブラウザはJavaScriptコードによる特定のポートへのアクセスをブロックしますが、このスリップストリームはこうした制限を克服します。

Kamkar氏はThe Registerへのメールで、典型的なスリップストリーム攻撃を実行するために必要な一連の手順を説明した。まず、攻撃者のJavaScriptコードは、WebRTCなどの手段を用いて、被害者の内部IPアドレス(NATによって割り当てられる)を取得する必要がある。次に、スクリプトは送信HTTPリクエスト(例えば、大きなHTTP POSTリクエスト)を構築する。このリクエストは、被害者のOSによって自動的に3つの部分に分割されるように巧妙に細工されている。

3つ目のチャンクは、ビデオ会議セッションなどを開始するために用いられるSIPパケットを装うように設計されている。これはALGによって解析され、SIPセッションが開始されたと誤認させられ、被害者のPCにルーティングされる外部ポートを開く。攻撃者は、外部から接続されるPCのポートを制御できるため、攻撃者はコンピュータ上の任意のサービスにアクセスできるようになる。

この脆弱性は、Linuxカーネル2.6.36.4を搭載したNetGear Nighthawk R7000ルーターを用いて実証されました。その他の設定や機器も脆弱性を抱えていると言われています。悪意のあるWebページにアクセスする以外、ユーザーによる操作は必要ありません。

「NATスリップストリームとサーバーを組み合わせれば、ブラウザはローカルで稼働しているあらゆるサービスに対して完全なTCPおよびUDPソケット接続を行えるようになります」とKamkar氏はTwitterで説明した。「興味深いのは、ユーザーが何もする必要がなく、ブラウザがソケットクライアントになるという点です。」

KamkarのRPiゼロベース攻撃

PoisonTapはあなたのPCを騙してインターネット全体がrPiの中にあると思わせる

続きを読む

攻撃が成功すると、被害者のマシンの任意のポートにアクセスできるようになります。これらのポートで実行されているサービスがセキュリティ対策がほとんど、あるいは全く施されていない場合、簡単に乗っ取られる可能性があります。こうしたサービスには、DropboxやSpotifyなどのアプリケーション、ローカルデータベース、各種システムアプリケーションなどが挙げられますが、これらはその一例です。

カムカー氏によると、この概念実証エクスプロイトコードは一部のルーターと一部のブラウザで動作し、後者はWebRTCによるローカルIPアドレスの特定方法を変更することで脆弱性の緩和策を講じているという。しかし、ブラウザが被害者の内部ネットワークIPアドレスを開示しない場合、ウェブベースのTCPタイミング攻撃が代替策となる可能性があるとカムカー氏は示唆した。

「より広範な武器化にはコードの修正が必要ですが、根本的な脆弱性はブラウザやルーター全体に及ぶ可能性があります」と彼は述べた。「確かに、ブラウザのせいでもルーターのせいでもありません。ただ、本来の挙動をしているだけです。」

彼は、これは脆弱性というよりも、予期せぬ一連の結果だと付け加えた。「すべては期待通りに機能しています。ただ、様々なプロトコルと機能が複雑に絡み合い、連鎖的に作用することで、意図しない副作用が生じる可能性があるだけです」と彼は述べた。

Linux の netfilter はデフォルトで ALG 機能を無効にしていますが、ほとんどのユーザーは netfilter をそのまま使用するのではなく、SIP や VoIP などのプロトコルが管理設定なしで動作できるように ALG が有効になっている市販のルーターを使用していると Kamkar 氏は言います。

「ユーザーは、ルーター/ファイアウォールで ALG を無効にすることで(VoIP 電話などには必要ないと仮定した場合)、自分自身を保護できます。また、ブラウザーやルーターのベンダーは、これに対する保護のために追加の安全策を実装すると確信しています」と彼は述べた。

同氏は、高度なファイアウォールは状態を監視することでこの攻撃を防御できると述べた。

「しかし、このデモにより、パケット境界を必要とせず、パケット内のどこにでも簡単に配置できる IRC DCC (ALG がある) などのより緩やかなプロトコルへの攻撃が可能になる」と同氏は説明した。

「IRC DCC のポートは Chrome の HTTP POST では無効になっているため、ここでは使用しませんでしたが、ブラウザの他の機能 (TURNS および WebRTC 接続) によってこのポートブロックが回避され、活用される可能性があります。」®

Discover More