「拡張機能の混同」でVS Codeレジストリを横断した信頼できる名前の乗っ取りが可能に

Open VSXを通じて開発者情報やCI環境データを収集する組織的なキャンペーンが確認されました。77個の偽装VS Code拡張機能が使用されていました。

これらのパッケージは信頼できる拡張機能の名前、名前空間、説明文をコピーしていましたが、実際には無関係な匿名アカウントから公開されたものでした。

2026年7月26日から8月1日にかけて、77個すべての拡張機能が新規登録されたばかりの同一ドメインmangorbit[.]comに接続していました。

ほとんどのバージョンは0.0.1で、正規の拡張機能のextension.jsをビーコン送信用のコンポーネントに置き換えていました。Open VSXは8月3日までにこれらの拡張機能を削除しましたが、データ収集用のインフラは依然として稼働中です。

このキャンペーンには大きく分けて2種類のペイロードが含まれていました。サイズが1.6KBから3.3KBの軽量な拡張機能58個は、ホスト名や、場合によってはワークスペースのフォルダ名、VS Codeのバージョンを送信していました。これらには固有の追跡識別子も含まれていました。

残る19個のパッケージはより侵入的でした。約10KBのペイロードはエディタ起動から数秒以内に動作を開始し、ホスト名、OSのユーザー名、VS Codeのバージョン、マシンID、プラットフォーム、アーキテクチャ、ロケール、タイムゾーン、ワークスペースのファイルシステムパスを収集していました。

さらにGitのメタデータも調査していました。コードはリモートのGitホストと組織の詳細、設定されているコミット用メールアドレスのドメイン部分、アクティブなブランチ、最新のコミットSHAを抽出していました。

加えて、インストール済みの拡張機能を列挙し、プロキシの詳細も確認していました。最も重大なのは、これらの偵察用ペイロードがCI環境の値を読み取っていた点です。

これにはGitHubのリポジトリ名、GitLabのプロジェクトパス、Azure DevOpsのコレクションURI、Buildkiteの組織スラッグ、CircleCIのプロジェクト名、Codespacesの名前、Gitpodのワークスペース URLが含まれていました。

ビルドランナー上では、この情報によってプライベートリポジトリの完全なパスが露見する可能性があります。拡張機能の掲載ページでは、この動作を「テレメトリー」と表示していました。

これらのパッケージがソースコード、認証情報、トークン、SSHキー、ブラウザデータ、あるいは任意の環境変数を取得していないという記載自体は正確でした。

しかし、CIの値がローカルマシンの外部に送信されることはないという記載は虚偽でした。実際にはコードがこれらの値を送信していました。

これらのパッケージは、ワークスペースのdevcontainer.json.vscode/extensions.jsonがインストールの原因になったかどうかも記録していました。

これにより、攻撃者は開発者が手動で選択した拡張機能なのか、リポジトリの設定によって自動的にインストールされた拡張機能なのかを識別できます。

これらの拡張機能は、いずれも謳っていた機能を実際には提供していませんでした。目に見える動作は、ステータスバーのチェックマークと、拡張機能が有効であることを示すメッセージだけに限られていました。

本当の目的はリモートインフラへのデータのビーコン送信でした。このキャンペーンは、MicrosoftのVS Code

MarketplaceとOpen VSXの間に存在するすき間を悪用したものです。両レジストリとも正規の拡張機能をホストしていますが、それぞれ独自の名前空間の所有権システムと発行者検証システムを使用しています。

あるレジストリで信頼されている名前が、もう一方のレジストリでは未登録のままになっている場合があると、manifoldは指摘しています。これが「拡張機能の混同」というリスクを生み出しています。

自動化ツール、devcontainerの設定、プロビジョニングスクリプト、AIエージェントなどは、発行者の履歴やダウンロード数、検証ステータス、ソースリポジトリの来歴を評価することなく、名前だけを頼りに拡張機能をインストールしてしまう可能性があります。

ANY.RUNのブラウザ内データ検査で、検知・調査・対応をより迅速に。フィッシングの可視性を高め、SOCを強化してMTTRを削減しましょう

翻訳元: https://cyberpress.org/vs-code-namespace-hijacking/

ソース: cyberpress.org