Open VSX の悪意のエクステンションを検出:GitHub ダウンローダーを介して RAT などを展開

Open VSX Extension Delivers RAT and Stealer via GitHub Downloader

2026/03/19 gbhackers — Open VSX エクステンションの一つが、フル機能の RAT と情報窃取マルウェアを、GitHub から密かに取得していたことが判明した。open-vsx.org で提供される 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.106 と 0.10.112 の間に位置する 0.10.111 は正常であり、最新の 0.10.135 にも悪意のローダー・ロジックは含まれていない。

この不規則なパターンが示唆するのは、メンテナーが一貫してマルウェアを配布していた状況ではなく、パブリッシャー・アカウントに対する侵害またはリリース・トークンの窃取である。

2026年3月12日の時点で研究者たちは、GitHub issue を通じてメンテナーに問題を通知したが、この記事の執筆時点で未対応のままである。

Open VSX エクステンション

このエクステンションの temp ラッパーは、ハードコードされた IP オクテットから C2 アドレスを再構築し、process.on(‘uncaughtException’, ()=>{}) によりランタイムエラーを抑制し、node -e を用いて 4 つの分離された Node 子プロセスを生成する。

C2 address from hardcoded IP octets (Source : aikido).
C2 address from hardcoded IP octets (Source : aikido).

悪意のビルドでは、エクステンションのアクティベーション・ロジック内から攻撃が開始される。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 段階のローダーとして機能する。ZIP アーカイブをダウンロードし、一時フォルダへ展開し、そのディレクトリに抽出された難読化ペイロードにバンドルされる Node.js バイナリを実行する。

最初の子プロセスは、Socket.IO を介して “http://195%5B.%5D201%5B.%5D104%5B.%5D53:6931” へ接続し、完全なリモート制御チャネルを公開する。


Remote Desktop RAT (Source : aikido).
Remote Desktop RAT (Source : aikido).
Remote Desktop 型 RAT

難読化を解除した結果として判明したのは、このペイロードは 4 つの並列モジュールで構成されるコンパクトな攻撃フレームワークであることだ。具体的には、Socket.IO ベースの RAT/ブラウザおよび暗号資産ウォレットの窃取/ファイル流出コンポーネント/クリップボード監視機能である。

すべてのモジュールは、”BlokTrooper/extension” に関連するインフラに接続され、IP アドレス “195.201.104.53” のポート 6931/6936/6939 を使用する。

1 つ目のRAT モジュールは、リモート・デスクトップ型の完全な制御チャネルを Socket.IO を介して提供する。そこでサポートされる機能は、マウス操作/キーボード入力/スクリーンショット取得 (画像圧縮付き)/クリップボードアクセス/画面サイズ取得/基本的なシステム・プロファイリングなどであり、効率の良い操作環境を攻撃者に提供する。

なお、nut-js (自動化)/clipboardy (クリップボード制御)/screenshot-desktop (画面取得)/sharp (画像処理)/socket.io-client (通信) などの依存関係は、このリモート制御挙動と一致する。

モジュールを構成するコードは、vmware/virtualbox/qemu/kvm/xen といったマーカーを用いて仮想マシンを検出するが、検出時も実行を停止せず、ホストにタグ付けして処理を継続する。

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 ではログイン・キーチェーンへのアクセスも試行される。

Browser And Wallet Theft (Source : aikido).
Browser And Wallet Theft (Source : aikido).

収集されたデータは一時的な cldbs ディレクトリへ格納され、ポート 6936 を介して C2 サーバへ送信される。さらに、約 100 秒ごとに新しい LevelDB ファイルを監視し、継続的にデータ取得を行う。

3 つ目のモジュールは、開発者の環境を標的とし、ドキュメントおよび機密情報の窃取を行うものだ。ホーム・ディレクトリまたは Windows の全ドライブを再帰的に走査し、office ドキュメント/PDF/CSV/ソースコード/コンフィグファイル/環境ファイル/鍵情報/一般的な画像形式を収集する。

それと同時に、node_modules/.git/dist/build などの低価値またはノイズの多いパスを除外し、.windsurf/.pearai/.claude/.cursor/.brownie/openzeppelin などの最新の開発ツールや AI 関連ディレクトリも明示的にスキップする。

この選択的な収集が示すのは、無差別なファイル収集ではなく、高度に機密性の高いソースコードや秘密情報を狙ったものであることだ。

4 つ目のモジュールは、クリップボードを継続的に監視し、機密情報を攻撃者へ送信する。macOS では pbpaste/Windows では PowerShell の Get-Clipboard/Linux では clipboardy が用いられる。

クリップボード内で安定したデータを検出すると、C2 サーバである “/api/service/makelog” エンドポイントへ送信する。それにより、シードフレーズ/パスワード/リカバリコード/API キーなどが窃取されるが、ディスクへ保存されない場合でも同じである。

GitHub ダウンローダーの使用

内部的には、第 2 段階ラッパーが、これら 4 つのモジュールをメモリ上で統合管理する。C2 アドレスをコンフィグ要素から再構築し、uncaught exception ハンドラによりエラーを抑制し、node -e を用いて4つの分離された Node 子プロセスを生成する。

子プロセスの分離と、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 といったクリップボード取得文字列などの指標を検証した。

情報が開示されない状況や、不規則な悪意のリリース・パターンを総合すると、長期的なバックドア運用ではなく、パブリッシャー侵害またはトークン窃取の可能性が高いと結論付けられる。