新たな調査により、Windowsドメイン環境で動作するChromiumベースのブラウザに、カスタム拡張機能をサイレントインストールできる手法が発見されました。この脆弱性は、Chromeとその関連ブラウザが拡張機能の設定とセキュリティチェックをプリファレンスファイルに保存する方法を悪用するものです。攻撃者は、目に見える警告をトリガーすることなく、ユーザーのブラウザに任意のコードを注入できます。
この研究は、Chromiumバージョン130から最新リリースまでで検証されており、単純なディスク書き込みによって標準的な保護を迂回し、永続的でステルスなアクセスを実現する方法を示しています。
**拡張機能メカニズムの理解**
Chromium拡張機能は、マニフェスト、バックグラウンドスクリプト、コンテンツスクリプト、およびポップアップやオプション用のHTMLページを含む.crxファイルとしてパッケージ化されています。インストールされると、これらの拡張機能はユーザーのAppDataディレクトリにあるJSONプリファレンスファイルにエントリを登録します。ドメイン参加マシンは標準の`Preferences`ファイルを更新し、非参加システムは`Secure Preferences`を使用します。どちらのファイルもインストールされた拡張機能を追跡し、メッセージ認証コード(MAC)を通じて整合性を強制します。各拡張機能エントリは、拡張機能の公開鍵またはインストールパスから派生した一意のIDでキー付けされ、ブラウザのリソースから抽出されたシードを使用したHMACによって保護されています。
**攻撃の手口**
攻撃は3つのステップに集約されます。まず、拡張機能IDを事前に計算し、次に正しいMACを生成し、最後にプリファレンスファイルを変更します。研究者は、マニフェストに公開鍵を埋め込むことで、ターゲット拡張機能のIDを再現します。その後、`resources.pak`ファイルからHMACシードを抽出し、拡張機能エントリと開発者モードの切り替えの両方に対して有効なMACを計算し、JSON設定を上書きします。このアプローチにより、Chromeの開発者モードの制限が回避され、コマンドラインの`–load-extension`フラグやChromeウェブストアを使用せずに、悪意のある拡張機能が起動時にロードされ、ブラウザが効果的にバックドア化されます。
チームはまた、ドメインポリシーのバイパス方法も発見しました。承認された拡張機能のIDを偽装することで、攻撃者はグループポリシーの許可リストを迂回できます。アンパックされた拡張機能がストアにインストールされた拡張機能とIDを共有する場合、Chromiumはローカルバージョンを優先し、「拡張機能の踏みつけ(extension stomping)」を可能にします。
さらに、HKCUのレジストリキーの下に保存されている管理者のポリシーは、昇格された権限を持つプロセスによって削除または変更される可能性があり、ポリシーの強制を完全に無効にできます。
**対策と監視**
レッドチームにとって、この手法はブラウザの永続性を獲得し、Chromiumのプロセス内でJavaScriptをネイティブに実行するための信頼できる方法を提供し、アプリバウンド暗号化などの保護を回避します。既存のインプラントとの統合やSMBベースの展開戦術を使用することで、複数のホストにわたる制御を拡張できます。
ブルーチームは、プリファレンスファイルの変更を監視し、予期しない開発者モードの状態変更に注意を払い、`HKCU\Software\Policies\Google\Chrome`下のレジストリキーを監査する必要があります。これらの機密性の高い設定ファイルへの署名されていない書き込みを検出することが、未検出の拡張機能インプラントを防ぐ上で極めて重要です。
この研究は、Chromiumが静的なHMACシードとユーザーが書き込み可能なプリファレンスファイルに依存していることの根本的な弱点を浮き彫りにしています。防御を強化するには、重要な整合性チェックを保護されたシステムコンポーネントに移動するか、OSレベルの暗号化メカニズムを強化する必要があるかもしれません。ブラウザが本格的なアプリケーションプラットフォームへと進化するにつれて、その内部の秘密が安全に保たれることを保証することがこれまで以上に重要になっています。
元記事: [Chromium-Based Browsers in Windows Domains Vulnerable to Arbitrary Extension Loads](https://gbhackers.com/chromium-based-browsers-windows-domains-vulnerable-arbitrary-extension-loads/)