拡張機能の実行時セキュリティ
拡張機能は Visual Studio Code の機能を大幅に向上させます。一方で、悪意のあるコードの実行やデータプライバシーに関する懸念など、リスクをもたらす可能性もあります。Visual Studio Marketplace には、悪質な拡張機能からユーザーを保護するための多くの手段が用意されています。さらに、VS Code では拡張機能の信頼性を示すいくつかの指標を提供しています。
このドキュメントでは、VS Code における拡張機能の実行時権限と、悪意のある拡張機能から保護するための措置の概要を説明します。インストールする前に、拡張機能の信頼性について十分な情報を得た上で判断する方法を学びます。
拡張機能の実行時権限について
拡張機能ホストは、VS Code 内で拡張機能を実行する役割を担います。拡張機能ホストは、VS Code 自体と同じ権限を持っています。つまり、VS Code が実行できるあらゆる操作は、拡張機能ホストを通じて拡張機能も実行できるということです。
たとえば、拡張機能はマシン上のファイルの読み書き、ネットワークリクエストの送信、外部プロセスの実行、ワークスペース設定の変更などを行うことができます。
拡張機能の発行者の信頼
VS Code バージョン 1.97 以降では、サードパーティの発行者から拡張機能を初めてインストールする際、その発行者を信頼することを確認するダイアログが VS Code に表示されます。
拡張機能パックや、他の拡張機能に依存関係を持つ拡張機能の発行者を信頼する場合、依存先の拡張機能の発行者も信頼したことになります。
以前にインストールした拡張機能の発行者は信頼されているとみなされ、信頼できる発行者のリストに自動的に追加されます。
信頼できる拡張機能の発行者のリストは、Extensions: Manage Trusted Extensions Publishers (拡張機能: 信頼できる拡張機能の発行者の管理) コマンドを使用して管理できます。
VS Code コマンドラインを使用して拡張機能をインストールする場合、その発行者は自動的には信頼されません。
拡張機能の信頼性を判断する
拡張機能をインストールする前に、信頼できるかどうかを判断するためのさまざまな手順を踏むことができます。Visual Studio Marketplace は、十分な情報に基づいて判断できるように、拡張機能に関する情報を提供しています。
-
評価とレビュー: 他のユーザーがその拡張機能をどう評価しているかを確認します。
-
Q & A: 既存の質問と発行者の対応レベルを確認します。懸念がある場合は、拡張機能の発行者に直接問い合わせることもできます。
-
Issue、リポジトリ、ライセンス: 発行者がこれらを提供しているか、また期待するサポート体制があるかを確認します。
-
検証済み発行者: 発行者名の横にある青いチェックマークとドメイン名を、信頼の追加の指標として活用してください。このチェックマークは、発行者がそのドメイン名の所有権を Marketplace に対して証明済みであることを示します。また、Marketplace がドメイン名の存在を確認し、かつその発行者が Marketplace において少なくとも 6 か月間、良好な状態で活動していることも示しています。

組織内で使用を許可する拡張機能を強制したい場合は、「VS Code で許可する拡張機能の設定方法」を確認してください。
マーケットプレイスの保護機能
Visual Studio Marketplace は、悪意のある拡張機能からユーザーを保護するためにいくつかのメカニズムを採用しています。
-
マルウェアスキャン: Marketplace は、公開されるすべての拡張機能パッケージに対してマルウェアスキャンを実行し、安全性を確保しています。このスキャンには複数のアンチウイルスエンジンが使用され、新しい拡張機能ごと、および拡張機能の更新ごとに実行されます。スキャンで安全が確認されるまで、その拡張機能は公開されず、利用することはできません。
-
動的検知: Marketplace は、サンドボックス環境 (クリーンルーム VM) で拡張機能の実行時動作を検証することで、動的な検知を行っています。
-
検証済み発行者: 発行者はドメイン所有権を証明することで、自身の身元を検証(青いチェックマーク)できます。これは、発行者が Marketplace に対してドメイン名の所有権を証明済みであることを示します。また、Marketplace がドメインの存在を確認し、かつその発行者が少なくとも 6 か月間 Marketplace で良好な状態で活動していることも示しています。
-
異常な使用状況の監視: Marketplace は、拡張機能のダウンロード数や利用パターンを監視し、異常な動作を検知しています。
-
なりすまし防止: Marketplace は、Microsoft や RedHat といった公式の発行者名や、GitHub Copilot のような人気のある拡張機能の名前を、作成者が盗用することを防止しています。
-
ブロックリスト: 悪意のある拡張機能が報告され検証された場合、または拡張機能の依存関係に脆弱性が見つかった場合、その拡張機能は Marketplace から削除され、ブロックリストに追加されます。すでにインストールされている場合は、VS Code によって自動的にアンインストールされます。
-
拡張機能の署名検証: Visual Studio Marketplace は、公開時にすべての拡張機能に署名を行います。VS Code は拡張機能をインストールする際にこの署名をチェックし、パッケージの整合性とソース元を検証します。
-
シークレットスキャン: Marketplace は、新しく公開されたすべての拡張機能に対し、API キーや認証情報(Azure DevOps PAT トークンなど)といったシークレットが含まれていないか自動的にスキャンします。シークレットが検出された場合、潜在的なセキュリティリスクを防ぐために公開がブロックされます。VSCE ツールはパッケージング中に
.envファイルをスキャンし、シークレットが見つかった場合は公開をブロックします。
これらの対策の詳細については、「Visual Studio Marketplace におけるセキュリティと信頼についてのブログ記事」を参照してください。
不審な拡張機能を報告する
もし不審な拡張機能を見つけた場合は、Marketplace チームに報告してください。Marketplace チームは、通常 1 営業日以内に初期回答を行います。
拡張機能を報告する方法
-
Visual Studio Marketplace で対象の拡張機能のページを開きます。
-
拡張機能の More Info セクションの下部にある Report a concern (懸念を報告) リンクを選択します。
関連リソース
-
Visual Studio Code での拡張機能のインストールおよび管理方法についてはこちらを参照してください。
-
ワークスペースの信頼機能を使用して、プロジェクトフォルダー内のコードを、明示的な承認なしに VS Code や拡張機能で実行してよいかを判断します。これは、馴染みのないコードを扱う際にセキュリティの層を追加するものです。
-
組織内で使用できる拡張機能を強制するには、VS Code での許可拡張機能の設定を確認してください。