重要情報 脆弱性の種類: UXSS (Universal Cross-Site Scripting) 優先度: P1 (高優先度) 深刻度: S2 (中程度~高程度) 状態: Fixed (修正済み) 報告者: ro...@robwu.nl カテゴリ: Security_Impact-Stable CVE状態: CVE説明を提出済み 脆弱性の詳細 Chrome を フラグ付きで起動すると、指定されたポートで HTTP+WebSocket サーバーが有効になります。この WebSocket サーバーはリモートデバッグプロトコルへのアクセスを提供し、ブラウザ全体を制御することを可能にします。これにより、以下のセキュリティ上の問題が発生します。 任意のウェブサイトへのスクリプトアクセス ローカルファイルの読み取り能力 ローカルファイルへの書き込み能力 外部プログラムの起動能力 1つのウェブページからリモートデバッグプロトコルを使用するには、攻撃者は以下の情報を必要とします。 HTTP/WebSocket サーバーのポート番号 リモートデバッグ対象を識別するための GUID 攻撃経路の説明 攻撃者は容易にポート番号を検出できます。例えば、DevTools サーバー上の静的画像リソースが読み込めるかどうかを確認することで判別できます。さらに、GUID は HTTP サーバーから取得できます。したがって、HTML および JSON のレスポンスが同じオリジンポリシーによって保護されていても、攻撃者は DNS リバインド攻撃を利用してコンテンツにアクセスできます。 攻撃シナリオの概要 ユーザーが フラグ付きで Chrome を使用している(Puppeteer や Selenium などを通じて)。 ユーザーが攻撃者が管理するページ(例えば、ページフレーム内に埋め込まれた悪意のある広告など)にアクセスする。 攻撃者は1分以内にユーザーのブラウザの完全な制御権を獲得し、その間、ユーザーからの追加のインタラクションは必要ない。 技術的詳細 関連リンク: - Puppeteer ライブラリ - Puppeteer 配布パッケージ - Chrome での Puppeteer 開発ブログ Chrome バージョン: - 64.0.3282.167 (Stable) および 66.0.3351.0 (Canary)。 再現手順 Linux および Node.js 環境が必要であり、2つのファイルからなる自己完結型の概念実証(PoC)を実施します。 添付ファイル(index.html および server.js)をダウンロードする。 使用するポートを選択し、 のようにしてリモートデバッグ有効化で Chrome を起動する。 攻撃者側の模擬サーバーを起動する。