Koiの研究者は、多くのユーザーが決して注意深く確認しないもの――拡張機能のロゴ――の中に悪意あるコードを隠した、大規模なFirefox拡張機能マルウェアキャンペーンを発見しました。
GhostPosterと名付けられたこのキャンペーンは、ステガノグラフィを用いてPNGアイコンファイル内に実行可能なJavaScriptを埋め込み、最終的に信頼されたアドオンを通じて5万人以上のFirefoxユーザーに感染させました。
このキャンペーンは「閲覧するあらゆるものを監視し、ブラウザのセキュリティ保護を取り除き、リモートコード実行のためのバックドアを開くマルチステージのマルウェアペイロードを配布する」と、Koiの研究者が述べています。
GhostPosterキャンペーンは信頼された拡張機能を標的に
GhostPosterは、ブラウザ拡張機能――ユーザーや組織に暗黙に信頼されがちな存在――が依然として高リスクな攻撃対象領域であることを浮き彫りにしています。
このキャンペーンは少なくとも17個のFirefox拡張機能に及び、その中にはFree VPN Foreverも含まれます。これは単体で1万6,000件以上のインストールがあり、分析時点でもFirefox Add-onsマーケットプレイスで入手可能なままでした。
これらの拡張機能は総じて、VPNアクセス、翻訳ツール、天気更新、広告ブロックといった無害な機能をうたう一方で、永続的なマルチステージのマルウェアペイロードを密かに配布していました。
GhostPosterの感染チェーンの仕組み
GhostPosterの感染チェーンは、拡張機能が自身のアイコンファイルを読み込むところから始まります。これはあらゆるブラウザアドオンにとって標準的な挙動です。
しかし、単に画像を表示するのではなく、拡張機能はPNGファイルの生バイトを読み取り、特定のマーカー列(===)を探します。そのマーカー以降のデータは画像データではなく、ファイルに直接埋め込まれた隠しJavaScriptです。
ステガノグラフィとして知られるこの手法により、悪意あるコードは静的スキャンや手動レビューを回避できます。
拡張機能のソースファイルを検査するセキュリティツールからは明確なペイロードが見えず、アイコンはブラウザのツールバーに通常どおり表示されます。しかし拡張機能が読み込まれるたびに、隠されたJavaScriptが抽出されて実行されます。
PNGに埋め込まれたコード自体には最終的なマルウェアは含まれていません。
代わりに、攻撃者が管理するインフラから追加のペイロードを取得するローダーとして機能します。
ローダーはliveupdt[.]comに接続し、利用できない場合はdealctr[.]comにフォールバックします。その際、感染したインストールをオペレーターが追跡できるよう、一意のシグネチャを渡します。
GhostPosterが検知を回避する方法
GhostPosterは、検知を回避するために多層的な回避手法に依存しています。ローダーは48時間ごとにしかチェックインせず、次段階のペイロードをダウンロードするのは10%の確率に限られます。
この確率的な挙動によりネットワーク監視は信頼性が低下し、感染した拡張機能が観測中に完全に不活性に見える場合があります。
ペイロードが配布される際には、独自のエンコーディングで難読化されます。具体的には、文字の大小を入れ替える、数値を変更する、Base64デコード、拡張機能のランタイムIDに紐づくXOR暗号化などです。
デコードされたペイロードはブラウザストレージに保存され、従来のファイルをディスクに書き込むことなく永続性を確立します。
これらの手法により、マルウェアは主としてメモリと実行時状態に存在し、フォレンジック分析から隠れるようになっています。
GhostPosterのブラウザペイロードの内部
有効化されると、GhostPosterのペイロードは被害者のブラウザ環境を攻撃者が完全に制御できるようにします。
主要な収益化手法の一つはアフィリエイトリンクの乗っ取りで、主要なECプラットフォーム上の正規のアフィリエイトリンクが、ユーザー体験を損なうことなく攻撃者管理のリンクに密かに置き換えられ、コミッションが横取りされます。
このマルウェアはまた、訪問したすべてのページに追跡コードを注入し、Google Analyticsの識別子を用いて閲覧行動、インストール時系列、加盟店の活動を収集します。
感染したブラウザに紐づくメタデータや識別子を保存するため、隠しHTML要素がページに動的に挿入されます。
拡張機能はさらに、HTTPレスポンスからContent-Security-PolicyやX-Frame-Options を含む重要なブラウザセキュリティヘッダーを取り除きます。
これにより、ユーザーが訪れるすべてのサイトにおいて、クロスサイトスクリプティングやクリックジャッキングに対する組み込み防御が弱体化します。
追加の機能には、CAPTCHAバイパス機構、広告・クリック詐欺のための不可視iframe注入、リファラー操作、実行後に目に見える痕跡を除去する動的クリーンアップが含まれます。
ブラウザ拡張機能のリスクを低減する方法
以下の実践は、組織がブラウザ拡張機能のリスクを管理するのに役立ちます。
- ブラウザ拡張機能をエンドポイントの攻撃対象領域の一部として扱い、ブラウザポリシーと承認済み許可リストを用いてインストールを制限する。
- インストール済み拡張機能を定期的に監査し、特にVPNなどの「無料」サービスや、広範な権限を要求するユーティリティを厳しく精査する。
- 不正利用の兆候について拡張機能の挙動を監視し、予期しないネットワーク接続、動的コード実行、レスポンス改ざんなどを確認する。
- ブラウザおよび拡張機能のテレメトリをEDRまたはSIEMプラットフォームに統合し、不審な活動の検知と相関分析を改善する。
- DNSフィルタリングやセキュアWebゲートウェイなどのネットワークレベルの制御を適用し、既知の悪性拡張機能インフラを遮断する。
- 信頼できる発行元からのみ拡張機能をインストールするようユーザーを教育し、不要になった、または積極的に保守されていないアドオンを削除する。
これらの制御を組み合わせることで、可視性を高め、不必要な露出を制限し、全体的なエンドポイントのセキュリティ態勢を強化することにより、ブラウザベースのリスクを低減できます。
攻撃者は信頼シグナルを悪用する
GhostPosterは、攻撃者が技術的な脆弱性ではなく信頼シグナルを悪用するという、より広範な傾向を反映しています。
画像にマルウェアを隠し、正規のマーケットプレイスを通じて拡散することで、攻撃者は従来のセキュリティ上の前提を回避し、想定されたブラウザ挙動の範囲内だけで活動します。
この傾向は、多くの組織が暗黙の信頼を排し、正当なものに見える場合でも継続的に活動を検証するゼロトラスト原則を採用している理由を改めて裏付けています。