ウェブブラウザは世界中で何十億台ものデバイスにインストールされており、サイバー犯罪者にとって格好の標的となっている。主要なウェブブラウザは膨大な数のユーザーを抱えているため、一つの脆弱性が広範囲に影響を及ぼす可能性があります。ブラウザを常に最新の状態に保つことは、進化する脅威から身を守るために非常に重要です。
ウェブブラウザの脆弱性の深刻さを説明するために、我々のフェローは、Chromiumベースのブラウザの脆弱性であるCVE-2024-6778、特にChrome DevToolsに影響を及ぼす脆弱性について広範な分析を行いました。このブログでは、脆弱性の技術的側面、潜在的な影響、緩和策について詳しく検証しています。
CVE-2024-6778の背景
CVE-2024-6778 は、Chrome DevTools に発見された競合状態の脆弱性です。この脆弱性により、攻撃者は悪意のあるブラウザ拡張機能を介して、特権を持つブラウザページに悪意のあるHTMLやJavaScriptを注入することが可能になります。NVD(National Vulnerability Database)によると、この脆弱性はCVSSスコア8.8で、深刻度が高いと評価されている。
この脆弱性の深刻度が高いのは、リモートでのコード実行を可能にする可能性があるためであり、その結果、システムを侵害し、機密性を損ない、可用性を低下させる可能性がある。
クロミウム・セキュリティの概要
CVE-2024-6778の意味をより深く理解するためには、Chromiumのセキュリティ・モデルの重要な側面について知ることが重要である。Chromiumは、Google Chrome、Microsoft Edge、Opera、Braveなどのブラウザのオープンソース基盤です。Chromiumはマルチプロセス・モデルを採用しており、レンダラーとも呼ばれる各タブやさまざまなブラウザ・コンポーネントが分離されたプロセスで実行され、潜在的な侵害の範囲を限定することで安定性とセキュリティを高めている。
Chromiumのセキュリティの基本的な要素は、レンダリングプロセスがシステムリソースに直接アクセスすることを制限するサンドボックス機構です。代わりに、すべての相互作用は、許可された操作のみが実行されることを保証するために、IPC(プロセス間通信)チャネルを介して管理されます。
Chromium 内のすべてのコンポーネントが完全なサンドボックスの対象となるわけではありません。chrome://settings や chrome://downloads などの WebUI ページは、レンダラー処理内でレンダリングされますが、部分的なサンドボックス制限で動作します。このプロセスにより、通常は Web 経由ではアクセスできないブラウザ API にアクセスできるようになります。
例えば、chrome://policyページは、管理者とユーザーがブラウザのセキュリティポリシーを設定し、実施することを可能にするため、企業環境において重要な役割を果たしている。これらのポリシーは、Windows システムのグループ ポリシーでも管理されます。
chrome://policyはオペレーティングシステムと直接やり取りできるため、攻撃者にとって貴重な標的となります。Chrome DevTools内の競合状態を悪用する脆弱性CVE-2024-6778により、攻撃者はこれらのページに悪意のあるコードを注入することができ、深刻なセキュリティリスクをもたらす。
CVE-2024-6778のテクニカル分析
ディスカバリー
この脆弱性は、Chrome Enterprise バージョン 117 で導入されたテスト機能で発見されました。この機能により、chrome://policy/testページを通じたポリシーのテストが可能になります。この機能に関する公式文書が限られているため、私たちの研究者は、その実装を完全に理解し、関連するセキュリティ脆弱性を特定するために、Chromium のソースコードを徹底的に調査し、CVE の作者からの洞察を補足しました。
ポリシー管理コンポーネント
OPSWAT フェローがソースコードを分析した結果、以下のことが判明した。 chrome://policy/testポリシーは ポリシー情報
インタフェースを介して、WebUIとブラウザのプロセス間で通信される。 ポリシーテストブラウザプロキシ
クラスである。その ポリシー情報
構造は以下のように定義されている:
これらのポリシーの取り扱いを担当するクラスをさらに調べると、次のようなメソッドが特定された。 適用テストポリシー
.このメソッドはプライベートAPI利用する、 setLocalTestPolicies
ポリシーのリストを動的に適用する。
このAPI経由してポリシーリクエストがどのように処理されるかを理解するために、研究者たちは次のような分析を行った。 HandleSetLocalTestPolicies
メソッド内の ポリシーUIハンドラ
クラスである:
について HandleSetLocalTestPolicies
メソッドは、提供された引数からポリシーのデータを取得し、そのポインタを LocalTestPolicyProvider
インスタンスを生成する。そして、現在のユーザープロファイルにこのプロバイダを利用するように指示する前に、このプロバイダの存在を検証する。
この検証は不十分であることが判明した。 ローカルテストプロバイダー
は、ポリシーを適用する前に非NULLである。ポリシーの作成と初期化は ローカルテストプロバイダー
によって制御される。 作成が許可されている場合
メソッドを使用する:
その中で 作成が許可されている場合
メソッドの結果に依存する。 IsPolicyTestingEnabled
関数を使用します。この関数は LocalTestPolicyProvider
インスタンスは、ユーザーの好みとブラウザーのリリース・チャンネルの組み合わせに基づいて作成される:
以来 pref_service
は常にNULLに設定される。 IsPolicyTestingEnabled()
が呼び出されると、最初の条件はバイパスされ、有効化の判断はブラウザのリリース・チャンネルのみに依存することになる。
ノーブランドの Chromium ビルドでは、リリースチャネルのデフォルトは チャンネル::UNKNOWN
.関数のロジックによれば チャンネル::UNKNOWN
と同じ扱いである。 チャンネル::DEFAULT
これはデフォルトでポリシー・テスト機能を有効にする。コードフロー解析の結果、プライベートAPI setLocalTestPolicies
をWebUI経由で呼び出して、意味のあるアクセス制限なしにポリシーを適用することができる。
搾取
このプライベートAPI特定し活用することで、攻撃者はWebUIを通じて任意にポリシーを適用することができ、以下のような設定を操作することが可能になる。 ブラウザスイッチャー有効
, ブラウザスイッチャURLリスト
, 代替ブラウザパス
そして AlternativeBrowserParameters
を設定してコマンドを実行する。例えば 代替ブラウザパス
にパワーシェルと AlternativeBrowserParameters
への ["calc"]。
特定のURLにアクセスすると、任意のシェルコマンドを実行できる。
プライベートAPI経由で任意の悪意のあるユーザーポリシーを適用する
どのようにポリシーを適用できるかを示すために、プライベート setLocalTestPolicies
先の分析で特定されたAPI 、以下のJavaScriptコードが 恐竜イースターエッグ
を通じて効果的に適用される。 ウェブユーアイ
を呼び出して setLocalTestPolicies
:
を無効にするポリシーを適用することができます。 恐竜イースターエッグ
セッティング
より大きな影響を与えるために、攻撃者は次のような標的を設定することができます。 ブラウザスイッチャー
というポリシーがある:
このポリシーは、URLが特定の条件に一致する場合に、ブラウザが代替のブラウザパスを呼び出すことを可能にします。このパスを、オペレーティング・システムのコマンドを実行するシステム実行可能ファイルを指すように設定することで、悪用することができます。次のJavaScriptコードは、この方法を示しています:
このスクリプトは以下のタスクを実行する:
- を有効にする。
ブラウザスイッチャー
example.com特集 - 代替ブラウザのパスをpowerShellに設定する
- 実行する
カルク
指定されたURLにアクセスするたびに
悪意のあるクローム拡張機能のシミュレーション
ポリシーの適用を可能にするプライベートAPI 特定することは、敵対者にとって重要な攻撃ベクトルを導入することになる。この脆弱性を効果的に悪用するには、攻撃者はChrome DevToolsAPI 使用して悪意のあるJavaScriptコードを実行する悪意のあるChrome拡張機能を開発する必要があります。
潜在的な実世界への影響を実証するために、我々の研究チームは、悪意のあるChrome拡張機能が脆弱なブラウザにインストールされ、攻撃の実行に使用されるシナリオをシミュレートしました。Chrome拡張機能のchrome.devtoolsAPIにより、開発者はChromeのDevToolsインターフェイスを拡張し、相互作用することができます。
しかしながら、拡張機能を通してDevToolsAPI 実行することは、迂回しなければならないある種の課題を提示する。第一に、DevToolsAPI 、DevToolsが開いていて、ウェブサイトをアクティブに検査しているときのみ動作可能である。第二に、DevToolsAPI 、ウェブ・ユーザー・インターフェイス、WebUI上でのコード実行を許可しません。この制限は、開発および検査プロセス中のWebUIのセキュリティと完全性を維持するのに役立ちます。
リロードAPIJavascript実行を示すサイン
さらに分析を進めると、chrome.devtools.inspectedWindow.reload関数には、拡張機能が検査されたページでスクリプトを実行することを許可されているかどうかを確認するための検証が欠けていることが判明した。唯一の防御手段はdevtools拡張機能サーバーで、検査されたページのURLが変更されるとアクセスをブロックする。
about:blank ページはそれを開いたページのパーミッションとオリジンを継承します。これは、WebUIのシグナルからリダイレクトされたときにabout:blank上でコードを実行する能力が潜在的な脆弱性であることを意味します。
リロードAPI介したWebUI上でのコード実行
のレースコンディション chrome.devtools.inspectedWindow.reload()
を使用すると、通常保護されているChromeのWebUIページ(例:chrome://policy)でコードを実行できる。この悪用は、ページ遷移中にJavaScriptを注入するリロードAPI機能を利用します。以下がその仕組みだ:
- WebUIをターゲットにする:タブでWebUIページ(例:chrome://policy)を開き、DevToolsをアタッチする。
- スクリプトを注入する:reload()API
注入スクリプト
パラメータを使用して、リロード中に任意のJavaScriptを実行することができます。 - レースコンディションの悪用:レースコンディションは、WebUIのセキュリティメカニズムが完全に初期化される前にリロードがトリガーされ、注入されたスクリプトが実行されることで発生します。
about:blankページからchrome://policyにナビゲートするという文脈で:
ページのオリジンの代わりにURLのみが検証されるため、ナビゲーションの後、URLは変更されないまま、オリジンが新しいページを反映する短い期間が存在する。
もし chrome.devtools.inspectedWindow.reload
がこのウィンドウの間に呼び出された場合、意図せずにJavaScriptを実行する可能性があります。
レース・コンディションでの信頼性向上
レースコンディションを悪用することは、タイミングに依存するため、本質的に信頼性が低い。さらに、急激なリロードや不正なスクリプトは、ページクラッシュを引き起こす可能性がある。信頼性を向上させるための新しいアプローチは、意図的にページ・クラッシュを誘発することです。 ページリロード
にマップされる。 chrome.devtools.inspectedWindow.reload()
はホワイトリストに登録され、ページのリロード後に実行される。
以下は、後続のコマンドをプッシュしてページをクラッシュさせるワークフローモデルである:
コンテンツ・スクリプトのデバッガ・ステートメントがクラッシュを引き起こすことがある
デバッガーを連続して2回使用すると、コンテンツスクリプトのナビゲーションプロセスが中断されます。デバッガを ナビゲーション・コミット状態
を予期せぬ状態にしてしまう。この問題は次のような場合に発生する。 RenderFrameImpl::SynchronouslyCommitAboutBlankForBug778318
が実行される、 navigation_commit_stateの変更
を予想外の値に変更した。
最初の呼び出しは実行を一時停止し ナビゲーション・コミット状態
の間は一時停止する。 CHECK_EQ
チェックに失敗し、状態検証に失敗してクラッシュを引き起こした。
修復
ブラウザのバージョンの定期的なアップデートを怠ると、デバイスが深刻なセキュリティ脅威、特にCVE(共通脆弱性と暴露)に関連する脅威にさらされる可能性があります。このリスクを軽減するために、MetaDefender Endpoint™はブラウザのバージョンを検出し、CVE-2024-6778のような既知のCVEを含む脆弱性をチェックすることで、強固な保護を提供します。
MetaDefender Endpoint 、アプリケーションが最新であることを確認し、古いバージョンや感染しているバージョンにフラグを立てます。また、既知の脆弱性を持つインストールされたアプリケーションをCVE深刻度別にリストアップし、潜在的な脅威を効果的に軽減するための修正を推奨します。MetaDefender Endpoint どのようにこれらのリスクを軽減するのに役立つのか、ライブデモをご覧になりたい方は、今すぐ弊社のエキスパートにご連絡ください。