npmエコシステムで初の自己増殖ワームとなったShai Huludから1ヶ月後、VS Codeエクステンション向けの世界初のワームがOpenVSXマーケットプレイスをターゲットにしているのを発見しました。
しかしGlassWormは単なるサプライチェーン攻撃ではありません。これまで野生で見たことのないステルス技術を使用しています。悪質なコードをコードエディタから文字通り消してしまう目に見えないUnicode文字です。これにブロックチェーンベースのC2インフラストラクチャ(削除不可)、Googleカレンダーをバックアップコマンドサーバーとして使用、そして感染した全開発者を犯罪プロキシノードに変えるフル機能のリモートアクセストロイの木馬と組み合わせます。
これは私たちが分析した中で最も高度なサプライチェーン攻撃の1つです。そして現在拡散中です。
GlassWormが感染したシステムに対して行うこと:
- NPM、GitHub、Gitの認証情報を取得してサプライチェーン伝播を行う
- 49種類の異なる暗号資産ウォレットエクステンションをターゲットにして資金を排出
- SOCKSプロキシサーバーをデプロイして、開発者マシンを犯罪インフラストラクチャに変える
- 隠されたVNCサーバーをインストールして完全なリモートアクセスを提供
- 盗まれた認証情報を使用してさらなるパッケージとエクステンションを侵害し、ワームをさらに拡散させる
現在の状況: 2025年10月17日にOpenVSXエクステンション7個が侵害されました。総ダウンロード数 35,800。10個のエクステンションが現在もあなたが読んでいるときも積極的にマルウェアを配布しています。攻撃者のC2インフラストラクチャは完全に稼動しており、ペイロードサーバーが応答し、盗まれた認証情報が追加パッケージの侵害に使用されています。
更新(10月19日、2025年):Microsoftの VSCodeマーケットプレイスで新しい感染エクステンションが検出されました – まだ活動中です。
攻撃は昨日ライブになりました。インフラストラクチャは活動中です。ワームは拡散しています。
当社のリスクエンジンが検出したもの
ここからが話の始まりです。Koiのリスクエンジンが、CodeJoyというOpenVSXエクステンションにバージョン1.8.3で疑わしい行動の変化が導入されたときにフラグを立てました。当社の研究者がリスクエンジンでフラグを立てたマルウェアのように掘り下げたとき、私たちが発見したものは非常に不安でした。

CodeJoyは正当に見えました。何百ものダウンロード、定期的な更新、一見すると通常のコードを備えた開発者生産性ツール。しかし、当社のリスクエンジンが人間のコードレビューが完全に見落とすであろうものを捉えました。エクステンションの生産性機能とは何の関係もない疑わしいネットワーク接続と認証情報アクセスパターン
そこで当社はソースコードを開いて詳しく調べてみることにしました。
そしてそこで私たちはそれを見ました。というより、見えませんでした。
目に見えない攻撃:Unicodeステルス技術
CodeJoyエクステンションのソースコードのこのスクリーンショットを見てください:

2行目と7行目の間の巨大なギャップが見えますか?これは空の空間ではありません。これは悪質なコードです。人間の目には文字通り描写されないUnicode文字でエンコードされています。
もう一度言います:マルウェアは目に見えません。難読化されていません。ミニ化されたファイルに隠されていません。実際に人間の目には見えません。
攻撃者はUnicode変動セレクタ(Unicode仕様の一部だが、視覚的な出力を生成しない特殊文字)を使用しました。コードレビューを行う開発者にとっては、空行または空白のように見えます。悪質なコードをスキャンしている静的分析ツールにとっては、何もないように見えます。しかし、JavaScript インタプリタにとっては?実行可能なコードです。
これが私たちがそれをGlassWormと呼ぶ理由です。ガラスのように、それは完全に透明です。あなたがそれをじっと見ていても、何も見えません。アカウントが侵害された開発者は、おそらくこのファイルを見て、自分の正当なコードであると思い、何百人ものユーザーに悪質なコードを配布しようとしていることに気づきませんでした。
ここからが重要な点です。この技術は従来のコードレビューを完全に破壊します。見えないものを見つけることはできません。GitHubのdiffビュー?何も疑わしい点を表示しません。IDEの構文の強調表示?すべてクリアです。手動でのコード検査?すべて通常に見えます。
目に見えないコード技術は賢いだけではなく、セキュリティモデルの基本的な崩壊です。人間がコードをレビューできるという仮定の上に全体的なシステムを構築してきました。GlassWormはその仮定が間違っていることを証明しました。
ステージ2:殺せないC2 – Solanaブロックチェーン
目に見えないUnicode文字をデコードしました。その中で何を見つけるでしょう?正直に言って、当社の顎が落ちるような別の高度さのレベルです。
マルウェアは、そのコマンドアンドコントロールインフラストラクチャとしてSolanaブロックチェーンを使用しています。
もう一度それを読んでください。攻撃者は公開ブロックチェーン(不変、分散型、削除不可能)をC2サーバーとして使用しています。
それがどのように機能するかは次の通りです:

マルウェアは、ハードコードされたウォレットアドレスからのトランザクションについてSolanaブロックチェーンを検索します。トランザクションが見つかると、メモフィールド(ブロックチェーントランザクションに任意のテキストを添付できる場所)を読みます。そのメモの中に?次のステージをダウンロードするためのbase64エンコードされたリンクを含むJSONオブジェクト。

そのスクリーンショットを見てください。これは2025年10月15日の実在するSolanaトランザクションです。3日前です。命令データには:{"link":"aHR0cDovLzIxNy42OS4zLjIxOC9xUUQlMkZKb2kzV0NXU2s4Z2dHSGlTdg=="}
そのbase64文字列はデコードされます:http://217.69.3.218/qQD%2FJoi3WCWSk8ggGHiTdg%3D%3D
そしてそのようにして、マルウェアは次のペイロードをどこからダウンロードするかを知っています。
これが絶対的に素晴らしい(そして恐ろしい)理由:
- 不変:一度ブロックチェーンにトランザクションが乗ると、変更または削除することはできません。永遠に。削除リクエストはありません。ドメインの差し押さえはありません。永遠にそこにあります。
- 匿名:暗号資産ウォレットは匿名です。これを実在の人物に追跡するのは難しいでしょう。
- 検閲耐性:お問い合わせするホスティングプロバイダはなく、圧力をかけるレジストラはなく、シャットダウンするインフラストラクチャはありません。Solanaブロックチェーンはただ…存在します。
- 正当なトラフィック:Solana RPCノードへの接続は完全に正常に見えます。セキュリティツールはそれをフラグ付けしません。
- 動的で低コスト:ペイロードを更新したいですか?新しいトランザクションを投稿してください。コスト?0.000005 SOL – 1セント未満。攻撃者は自分たちが好きなだけ頻繁にインフラストラクチャをローテーションできます。
ペイロードURL(この場合は217.69.3.218)を特定してブロックしたとしても、攻撃者は別のURLを含む新しいトランザクションを投稿し、感染したすべてのエクステンションが新しい場所を自動的に取得します。あなたはモグラたたきゲームをしており、モグラと槌が無限にいる相手と対戦しています。
これは理論的な攻撃ベクトルではありません。これは現在積極的にマルウェアを提供している実世界の、プロダクションレディなC2インフラストラクチャです。そしてそれをシャットダウンする方法は文字通りありません。
ステージ3:認証情報の取得
SolanaトランザクションはIPアドレスを指しています:217.69.3.218。URLをフェッチしましょう、そして大規模なbase64ペイロードを戻します。しかしそれは暗号化されています。AES-256-CBC暗号化です。私が持っていない鍵で。
では、復号化キーはどこにありますか?
HTTPレスポンスヘッダー内。

攻撃者は動的にリクエストごとに暗号化キーを生成し、カスタムHTTPヘッダーで渡しています。賢いです。暗号化されたペイロードをインターセプトしたとしても、現在のキーを取得するには新しいリクエストを作成する必要があります。
ペイロードを復号化して、それが何をするかを分析し始めました。ここでGlassWormの真の目的が明らかになります。

マルウェアは認証情報を探しています:
- NPM認証トークン – 悪質なパッケージを公開するため
- GitHubトークン – リポジトリを侵害するため
- OpenVSX認証情報 – より多くのエクステンションを注入するため
- Git認証情報 – 悪質なコードをプッシュするため
- 49種類の異なる暗号資産ウォレットエクステンション – MetaMask、Phantom、Coinbase Walletなど数十個以上をターゲット

しかしちょっと待ってください、もっとあります。コードに埋め込まれているのは、私たちが見つけた別のもの:GoogleカレンダーのリンクでGoogleカレンダーのリンク。
https://calendar.app.google/M2ZCvM8ULL56PD1d6

マルウェアは、バックアップC2メカニズムとしてこのGoogleカレンダーイベントに到達しています。そしてイベントのタイトルに何があると思いますか?別のbase64エンコードされたURL。別の暗号化されたペイロードを指しています。
攻撃者はタイトルを持つGoogleカレンダーイベントを作成しました:aHR0cDovLzIxNy42OS4zLjIxOC9nZXRfem9tYmlfcGF5bG9hZC9xUUQlMkZKb2kzV0NXU2s4Z2dHSGlUdg==
それはデコードされます:http://217.69.3.218/get_zombi_payload/qQD%2FJoi3WCWSk8ggGHiTdg%3D%3D
パスに注意してください:/get_zombi_payload/
はい。「Zombi」はゾンビボットネットのように。攻撃者は文字通り、被害者を変えるものの後に彼らのエンドポイントに名前を付けています。
バックアップC2としてGoogleカレンダーを使用する理由?
- 無料で正当(誰もGoogleカレンダーをブロックしていません)
- いつでもイベントを編集して更新可能
- セキュリティコントロールを完全にバイパス
- 別の殺せないインフラストラクチャの部分
これで3層のC2システムができました:
- Solanaブロックチェーン(プライマリ、不変)
- ダイレクトIP接続(217.69.3.218)
- GoogleカレンダーGoogleカレンダー(バックアップ、正当なサービス)
1つがブロックされても、他の方が機能し続けます。そして3つ全てはシャットダウンするのがほぼ不可能です。
ステージ4:ZOMBI – 悪夢の啓示
「zombi_payload」URLをフェッチし、ヘッダーから暗号化キーをキャプチャし、それをデコードし、大規模に難読化されたJavaScriptペイロードであることがわかるデコードを開始します。
そして私たちは実現しました:これは単なる認証情報の盗難ではありません。これは完全スペクトラムのリモートアクセストロイの木馬です。
GlassWormの最後のステージ – ZOMBIモジュール – すべての感染した開発者ワークステーションを犯罪インフラストラクチャネットワーク内のノードに変換します。このことができることを詳しく説明させてください。正直に言って、これは我々が分析した最も洗練されたマルウェアの一部です。

SOCKSプロキシ – あなたのマシンが犯罪インフラストラクチャになる
ZOMBIモジュールはあなたのコンピュータをSOCKSプロキシサーバーに変えることができます。これがコードです:

開発者ワークステーション(すべてのファイアウォールとセキュリティコントロールの背後にある企業ネットワーク内にあるもの)が、犯罪活動のためのSOCKSプロキシノードになりました。
これが壊滅的な理由:
- 企業ネットワークアクセス:あなたのマシンは外部攻撃者がアクセスできない内部システムに到達できます
- 攻撃の匿名化:攻撃者は彼らのIPではなく、あなたのIPを通してトラフィックをルーティングします
- ファイアウォールのバイパス:内部マシンは外部プロキシが到達できないリソースにアクセスできます
- 無料インフラ:プロキシサーバーに支払う理由は?被害者はそれらを提供します。
感染したすべての開発者がグローバルプロキシネットワーク内のノードになります。そしてあなたはそれが起こっているのを知ることさえしません。
WebRTC P2P – ダイレクトピアツーピアコントロール
ZOMBIはピアツーピア通信用のWebRTCモジュールをダウンロードおよびデプロイします:

WebRTCは、NAT走査を通じて従来のファイアウォールをバイパスするダイレクトピアツーピア接続を有効にします。攻撃者は、中央サーバーを経由することなく、感染したマシンへのリアルタイム、ダイレクトコントロールチャネルを確立できます。
BitTorrent DHT – 分散型コマンド配布
ZOMBIはコマンド配布用にBitTorrentの分散ハッシュテーブル(DHT)ネットワークを使用します:

コマンドはBitTorrent DHT ネットワークを通じて配布されます。トレント追跡をシャットダウン不可にする同じ分散システム。シャットダウンする中央C2サーバーはありません。コマンドは数百万ノードの分散ネットワークを通じて伝播します。
隠されたVNC(HVNC)- 完全に見えないリモートコントロール
そしてここが本当に恐ろしい部分です。HVNC(隠されたバーチャルネットワークコンピューティング):

HVNCは攻撃者にあなたのマシンへの完全なリモートデスクトップアクセスを与えます。しかしそれは隠されています。タスクマネージャーに表示されない仮想デスクトップで実行され、スクリーン上にウィンドウを表示せず、完全に透過的に動作します。
攻撃者は以下のことができます:
- ログインしたセッションでブラウザを使用する
- メール、Slack、内部ツールにアクセス
- ソースコードを読む
- 追加の認証情報を盗む
- ネットワーク内の他のシステムにピボット
- あなたができることは文字通り何でも。ただしあなたはそれが起こっているのを見ることはありません
全体像
ZOMBIはマルウェアではありません。それは完全なリモートアクセスとネットワーク浸透ツールキットです:
- SOCKSプロキシは被害者ネットワークを通じて攻撃をルーティング
- WebRTC P2Pはダイレクト、ファイアウォールバイパスコントロール用
- BitTorrent DHTは殺せないコマンド配布用
- HVNCは見えないリモートデスクトップアクセス用
- 自動再起動は何か失敗しても(それは消えません)
- モジュールアーキテクチャは動的な能力更新をサポート
エンタープライズの場合、これは悪夢シナリオです。感染した開発者ワークステーションが以下になります:
- 内部ネットワークアクセスポイント
- 永続的なバックドア
- 他の内部システムの攻撃のプロキシ
- 機密データの流出チャネル
- コマンドアンドコントロールリレーポイント
そしてそれはすべてVS Codeエクステンションの見えないUnicode文字から始まりました。
ワームは拡散します:盗まれた認証情報を通じた自己増殖
ここがGlassWormが「ワーム」の部分の名前を得る場所です。
それが盗んでいるすべての認証情報を覚えていますか?NPMトークン、GitHub認証情報、OpenVSXアクセス?これらは単なるデータの盗難ではありません。それらは伝播用です。
自己複製サイクル:
- 初期感染 – 侵害された開発者アカウントは正当なエクステンションに悪質なコードをプッシュ
- 目に見えないペイロード – Unicode隠しマルウェアは被害者マシンで実行
- 認証情報の取得 – NPM、GitHub、OpenVSX、Git認証情報を盗む
- 自動化された拡散 – 盗まれた認証情報を使用してさらなるパッケージとエクステンションを侵害
- 指数関数的な成長 – 各新しい被害者は感染ベクトルになります
- リピート – サイクルは自動的に継続
これは一回限りのサプライチェーン攻撃ではありません。これは開発者エコシステムを通じて野火のように広がるように設計されたワームです。
ちょうど1ヶ月前、セキュリティコミュニティはShai Huludを目撃しました。npmエコシステムで最初に成功した自己増殖ワーム。そのキャンペーンはnpmトークンを盗んで、100以上のパッケージを侵害し、自動的に悪質なバージョンを公開しました。
GlassWormは同じ技術をOpenVSXにもたらしますが、恐るべき進化で:
- 目に見えないコード注入すべてのコードレビューをバイパス
- ブロックチェーンベースC2シャットダウンできない
- フルRAT機能被害者を犯罪インフラストラクチャに変える
- マルチレイヤー冗長性3つの異なるC2メカニズム全体
パターンは明確です。攻撃者は、サプライチェーンマルウェアを自己維持するようにする方法を理解しました。彼らは個々のパッケージを侵害しているだけではありません。彼らはソフトウェア開発エコシステム全体を通じて自律的に拡散できるワームを構築しています。
従来のサプライチェーン攻撃では、1つのパッケージを侵害してそれがあなたのブラスト半径です。Shai HuludやGlassWormのようなワームでは、各感染は数十個のさらなるのための新しい発射ポイントです。それは指数関数的な成長です。そしてそれがどのように見えるかを見始めているだけです。
影響:35,800の被害者、リアルタイムで活動中
この感染の現在の状態について話しましょう。これは理論的な攻撃や歴史的な事件ではありません。GlassWormはリアルタイムで活動中です。
攻撃タイムライン:
- 2025年10月17日:7つのOpenVSXエクステンションが侵害(昨日)
- 2025年10月18日:検出を開始し、分析を開始(今日)
- 2025年10月19日:OpenVSXおよびVSCodeマーケットプレイスでより多くの侵害されたエクステンションが検出
- 現在の状況:5つのエクステンションがまだ積極的にマルウェアを配布中
総合的な影響:35,800インストール
ここで特に緊急な理由:VS Codeエクステンションは自動的に更新されます。CodeJoyが目に見えないマルウェアを含むバージョン1.8.3をプッシュしたとき、CodeJoyをインストールしたすべての人が感染バージョンに自動的に更新されました。ユーザーの操作なし。警告なし。ただ沈黙した自動感染。
そしてマルウェアが見えないため、アカウントが侵害された元の開発者は気が付かなかったかもしれません。彼らは自分のコード内の「空の」行をレビューしたかもしれません。何も間違っていないと見えた。
現在感染したシステムに起こっていることについて:
- 認証情報盗難が進行中 – NPM、GitHub認証情報、Git認証情報が取得中
- 暗号資産ウォレットが排出中 – 49種類の異なるウォレットエクステンションがターゲット
- SOCKSプロキシをデプロイ中 – 開発者ワークステーションを犯罪インフラストラクチャに変える
- HVNCインストール中 – 隠されたリモートアクセスが確立中
- ネットワーク偵察中 – 感染したマシンが内部企業ネットワークをマッピング中
- 広がりの準備中 – 盗まれた認証情報が追加の侵害のために検証中
C2インフラストラクチャは完全に稼動中:
- 217.69.3.218 – 応答して暗号化されたペイロードを提供中
- Solanaブロックチェーン – トランザクション活動、ペイロードサーバーを指してます
- GoogleカレンダーイベントGoogleカレンダーイベント – ライブでアクセス可能
- 流出サーバー(140.82.52.31)- 盗まれたデータを収集中
これは活動中、進行中の侵害です。ケーススタディではありません。戦争の話ではありません。これはあなたがこの文を読むのに応じて起こっています。
感染したエクステンションをいくつかインストールしている場合、あなたは侵害されています。あなたの認証情報はおそらく盗まれています。あなたの暗号資産ウォレットが排出されるかもしれません。あなたのマシンはすでに犯罪活動のためのSOCKSプロキシとして機能しているかもしれません。そしておそらくあなたはこのことが起こっているのを知ることさえしません。
2人の開発者がクリーンアップデートをプッシュしました(vscode-theme-seti-folderとgit-worktree-menu)。彼らがアカウントへのアクセスを取り戻したか、何か悪いことに気づいたかのどちらかであることを示唆しています。しかし5つのエクステンションは依然として感染しています。5人の開発者が、侵害されていることを知らないか、アカウントの制御を取り戻すことができないかのどちらか。
そして忘れないでください:これは今まで私たちが見つけたものです。GlassWormは拡散するように設計されています。それらの盗まれた認証情報は、さらなるパッケージとエクステンションを侵害するために今使用されています。実際の被害者数はさらに高いかもしれません。
最終的な考え
このライトアップはKoi Securityの研究チームによって執筆されました。健康的な偏執狂と安全なオープンソースエコシステムへの希望の用量で。
GlassWormは、悪質なエクステンションがマーケットプレイスセキュリティをいかに簡単に通り抜けるか、機密データを侵害するかを示しています。Koiを使用して、セキュリティチームはバイナリおよび非バイナリソフトウェア全体で可視性、リスクスコアリング、ガバナンスを得ます。本番環境に到達する前に。
デモを予約して、Koiがレガシーツールが見落とすギャップをどのように埋めるかを確認してください。
長い間、信頼されていないサードパーティコードの使用、多くの場合最高の特権で実行されている、エンタープライズと攻撃者の両方がレーダーの下を飛行しました。その時代は終わっています。潮が変わっています。先月、私たちは18の公開および検証済みエクステンションの別のキャンペーンが悪質になったことを発見し、数百万のユーザーに影響しました。
Koiはこの瞬間に対応するために構築されました。実務家とエンタープライズの両方のために。当社のプラットフォームは、Chrome Web Store、VSCode、Hugging Face、Homebrew、GitHubなどのマーケットプレイスからチームが引っ張るすべてを発見、評価、および管理できます。
Fortune 50組織、BFSIs、および世界最大級のテクノロジー企業のいくつかから信頼されており、Koiはこの広がる攻撃サーフェス全体でリスクを削減するために必要なセキュリティプロセスを自動化します。可視性を得て、ガバナンスを確立し、主体的にリスクを削減してください。
マルウェアが文字通り見えない世界では、偏執狂はバグではありません。それはフィーチャーです。
そこから安全に。
IOC
侵害されたエクステンション
OpenVSXエクステンション(悪質なバージョン付き):
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
Microsoft VSCodeエクステンション:
インフラストラクチャ
コマンドアンドコントロール:
217.69.3.218(プライマリC2サーバー)199.247.10.166(プライマリC2サーバー)140.82.52.31:80/wall(流出エンドポイント)199.247.13.106:80/wall(流出エンドポイント)
ブロックチェーンインフラストラクチャ:
Solanaウォレット:28PKnu7RzizxBzFPoLp69HLXp9bJL3JFtT2s5QzHsEA2
トランザクション:49CDiVWZpuSW1b2HpzweMgePNg15dckgmqrrmpihYXJMYRsZvumVtFsDim1keESPCrKcW2CzYjN3nSQDGG14KKFM 3eVTqgEVdUCWcppSh7HQ6h6au7k8JL7Nt7rreKYB598ew4sVe2tBcx87cQS1ocrHPKzeatbJUyHM57Yb1qFasCuL 3v3jCvKfdvHjdoZx3RX7ATUY8jKTrt9hJwhqF5qqpeoK9U9BQvGPPntH2B4qDwQtACBtfrfjNRkM6DZtnjZPGwHL
GoogleカレンダーC2:
https://calendar.app.google/M2ZCvM8ULL56PD1d6
ペイロードURL:
http://217.69.3.218/qQD%2FJoi3WCWSk8ggGHiTdg%3D%3D
http://217.69.3.218/get_arhive_npm/
http://217.69.3.218/get_zombi_payload/qQD%2FJoi3WCWSk8ggGHiTdg%3D%3D
レジストリインジケータ
永続化メカニズム:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Run