Open VSX拡張機能がGitHubダウンローダーを経由してRATとスティーラーを配信

数千人の開発者が使用するOpen VSX拡張機能が、GitHubから本格的なリモートアクセストロイの木馬と情報盗聴型マルウェアを静かに取得していたことが判明しました。

Open VSX上にリストアップされているKhangNghiem/fast-draft拡張機能は、2026年3月17日時点で26,000回以上のダウンロード数を記録しており、複数の悪意あるリリースが含まれていて、GitHubホスト型のダウンローダーを実行し、BlokTrooper/extensionリポジトリから第2段階のペイロードを取得していました。

確認された悪意あるバージョンは0.10.89、0.10.105、0.10.106、0.10.112です。

このインシデントが特に注目される理由は、バージョン履歴です。0.10.88までのバージョンはクリーンに見え、0.10.89は悪意あるものになり、その後のリリースは良性のビルドとバックドア化されたビルドが交互に現れました。

バージョン0.10.111は悪意あるバージョン0.10.106と0.10.112に挟まれているにもかかわらずクリーンであり、確認された最新のOpen VSXバージョンである0.10.135には、同じローダーロジックが含まれていません。

この不規則なパターンは、メンテナーが意図的に一貫した方法でマルウェアを配信していることと矛盾しており、その代わりに侵害されたパブリッシャーアカウントまたは盗まれたリリーストークンを指し示しています。

Open VSX拡張機能

研究者は2026年3月12日にGitHubのイシュー経由でメンテナーに問題を報告し、執筆時点ではレポートは公開されたままで返答がありませんでした。

外部のtempラッパーはハードコーディングされたIPオクテットからC2アドレスを再構築し、process.on('uncaughtException', ()=>{})でランタイムエラーを抑制し、node -eで4つのデタッチされたノード子プロセスを生成します。

Image

悪意あるビルドでは、攻撃は拡張機能のアクティベーションロジック内で開始されます。Fast-draftはraw.githubusercontent.com/BlokTrooper/extensionに接続し、レスポンスを直接シェルにパイプしますが、これは事実上GitHubをリモートコード実行配信チャネルとして扱っています。

バージョン0.10.89は、リポジトリのscriptsディレクトリからプラットフォーム固有のスクリプトを取得し、OSに応じてshまたはcmdを経由してそれらを実行します。

その後の悪意あるバージョン0.10.105、0.10.106、0.10.112は、同じ動作をicons/${platform}フェッチの背後にラップし、スタートアップアクティベーションにバインドします。これは通常の拡張機能操作に合わせるため、エディタ初期化に関連した単純な検出を回避することを目的としたと思われます。

これらのプラットフォームスクリプトは、より複雑な第2段階のための第1段階ローダーとして機能します。それらはZIPアーカイブをダウンロードし、それらを一時フォルダーに解凍し、バンドルされたNode.jsバイナリを、そのディレクトリに抽出された難読化されたペイロードに対して実行します。

最初の子プロセスはhttp://195[.]201[.]104[.]53:6931にSocket.IOを経由して接続し直し、完全なリモートコントロールチャネルを公開します。

Image

難読化の解除により、このペイロードがコンパクトな攻撃フレームワークであることが明らかになり、4つの並列モジュールに分岐します。Socket.IOベースのRAT、ブラウザーと暗号ウォレットスティーラー、ファイル流出コンポーネント、クリップボード監視ルーチンです。

これらはすべてBlokTrooper/extensionチェーンに関連するインフラストラクチャに配線されており、IPアドレス195.201.104.53に対して、アクティブなポート6931、6936、6939で設定値を解決します。

RATモジュールは、Socket.IOを経由した完全なリモートデスクトップスタイルのコントロールチャネルを公開します。マウスの移動とクリック、キーボード入力、画像圧縮付きのスクリーンショットキャプチャ、クリップボードアクセス、スクリーン寸法クエリ、基本的なシステムプロファイリングをサポートしており、オペレーターは物理的に存在しているかのように被害者のワークステーションと対話することができます。

バンドルされた依存関係セット(オートメーション用のnut-js、クリップボードコントロール用のclipboardy、キャプチャ用のscreenshot-desktop、画像処理用のsharp、通信用のsocket.io-clientを含む)は、観測されたリモートコントロール動作と密接に一致しています。

コードはvmware、virtualbox、qemu、kvm、xenなどのマーカーを探すことで基本的な仮想マシンチェックも実行しますが、VMが検出されても中止せず、代わりにホストにタグを付けて実行を続行します。

2番目のモジュールは、Chrome、Edge、Brave、Opera、すべての主要なデスクトッププラットフォーム上のLT Browserにまたがるブラウザーとウォレットデータをターゲットにしています。

プロフィールディレクトリをウォークして、Login Data、Login Data For Account、Web Dataなどのブラウザーデータベース、および暗号通貨ウォレット拡張機能の長いリストに属するLevelDB状態を収集します。

MetaMask、Phantom、TronLink、Trust Wallet、Coinbase Wallet、OKX、Solflare、Rabbyなどのウォレットが明示的にハードコーディングされており、macOSではスティーラーはユーザーのログインキーチェーンへのアクセスも試みます。

Image

収集されたデータは一時的なcldbs ディレクトリの下でステージング され、C2サーバーのポート6936に流出されます。スティーラーは1回のみの実行ではなく、進化するウォレット状態をキャッチするために約100秒ごとに新しいLevelDBファイルをポーリングし続けます。

3番目のモジュールは、開発者ワークステーション向けにチューニングされた、ドキュメントと秘密の盗難に焦点を当てています。ホームディレクトリまたはWindows上のすべてのドライブを再帰的にスキャンし、オフィスドキュメント、PDF、CSV、ソースコード、設定ファイル、環境ファイル、主要なマテリアル、一般的な画像形式を収集します。

同時に、node_modules、.git、dist、buildなどのノイズが多いか価値の低いパスを回避し、.windsurf、.pearai、.claude、.cursor、.brownie、openzeppelinを含む最新の開発とAIツーリングに関連するディレクトリを明示的にスキップします。

この選択的なターゲッティングは、無差別なファイル保有ではなく、非常に機密性の高いソースツリー、秘密、プロジェクトアーティファクトに関心を持つオペレーターを示しています。

使用されたGitHubダウンローダー

4番目のモジュールはクリップボードを継続的に監視し、機密コンテンツをオペレーターに転送します。macOS上ではpbpasteを呼び出し、Windowsではaスポーンし、Linuxではclipboardyなどのライブラリに依存してクリップボードの内容を読み取ります。

安定した空でないコンテンツを検出すると、C2サーバーの/api/service/makelogの下のログエンドポイントに送信し、シードフレーズ、パスワード、回復コード、およびAPIキーを、ディスクに保存されていなくても捕捉できるようにします。​

フードの下では、第2段階ラッパーがメモリ内の4つのモジュールすべてを調整します。個別の設定フィールドからC2アドレスを再構築し、キャッチされていない例外ハンドラーでランタイムエラーを抑制し、node -eを使用して4つのデタッチされたノード子プロセスを生成します。各プロセスは1つのモジュールを実行します。

子プロセスをデタッチし、Windowsのウィンドウを非表示にすることで、拡張機能はコンポーネントがエディターの表示可能なライフサイクルとは独立してバックグラウンドで実行を続けることができます。

ユーザーのnpm関連ディレクトリの下に保存されたシングルトンロックにより、同じマシンに複数のコピーが積み重なるのを防ぎます。

​これらのマーカーはクリーンなビルドには表示されず、そのアクティベーションフローはダウンローダーとして機能するのではなく、予期された拡張機能登録およびAI統合動作と一致しました。

重要なことに、fast-draftバージョンラインを注意深く見直すると、クリーンなビルドと悪意あるビルドの間に明確なギャップが明らかになります。

セキュリティ研究者は、バージョン0.10.88、0.10.111、0.10.129から0.10.135を手動で検査して、バックドアされたリリースで使用される特定のインジケーターを探しました。これには、raw.githubusercontent.com/BlokTrooperへの呼び出し、fd.onlyOncePlease ガード、socket.io-client、/uploadエンドポイント、cldbs ステージングパス、pbpasteやGet-Clipboardなどのクリップボード収集文字列が含まれます。

未応答の開示と非連続的な悪意あるリリースパターンと組み合わせると、証拠はメンテナーが長期的なバックドアキャンペーンを進んで実行していることよりも、侵害されたパブリッシャーまたは盗まれたトークンをより強く指し示しています。

翻訳元: https://gbhackers.com/open-vsx-extension/

ソース: gbhackers.com