拡張機能の実行時セキュリティ
拡張機能は、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 がそのドメイン名の存在と、その発行元が少なくとも6か月間 Marketplace で良好な状態にあることを確認済みであることも示しています。

組織内で使用できる拡張機能を制限したい場合は、「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」をご覧ください。
-
ワークスペースの信頼 (Workspace Trust) を使用すると、プロジェクトフォルダー内のコードを、明示的な承認なしに VS Code や拡張機能で実行できるかどうかを決定できます。これにより、不慣れなコードを扱う際のセキュリティ層が強化されます。
-
組織内で使用を許可する拡張機能を強制するには、「VS Code で許可する拡張機能の設定」を構成してください。