拡張機能のランタイムセキュリティ
拡張機能は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: 既存の質問とパブリッシャーの応答レベルを確認します。懸念がある場合は、拡張機能のパブリッシャーと連絡を取ることもできます。
-
問題、リポジトリ、ライセンス: パブリッシャーがこれらを提供しているか、期待するサポートがあるかを確認します。
-
検証済みパブリッシャー: パブリッシャー名とドメイン名の横にある青いチェックマークを信頼の追加のシグナルとして使用します。チェックマークは、パブリッシャーがMarketplaceにドメイン名所有権を証明していることを示します。また、Marketplaceがドメイン名の存在と、少なくとも6か月間Marketplaceにおけるパブリッシャーの良好な状態の両方を検証していることを示しています。

組織内で使用できる拡張機能を強制したい場合は、VS Codeで許可された拡張機能を構成する方法を確認してください。
Marketplaceの保護
Visual Studio Marketplaceは、悪意のある拡張機能からユーザーを保護するためにいくつかのメカニズムを採用しています。
-
マルウェアスキャン: Marketplaceは、安全性確保のため、公開される各拡張機能パッケージに対してマルウェアスキャンを実行します。複数のアンチウイルスエンジンを使用するこのスキャンは、新規拡張機能および各拡張機能アップデートごとに実行されます。スキャンがすべてクリアになるまで、拡張機能は一般公開のためにMarketplaceに公開されません。
-
動的検出: Marketplaceは、サンドボックス環境 (クリーンルームVM) で拡張機能を実行して、そのランタイム動作を検証することにより、動的検出を行います。
-
検証済みパブリッシャー: パブリッシャーは、ドメイン所有権を証明することにより、そのIDを検証できます (青いチェックマーク)。これは、パブリッシャーがMarketplaceにドメイン名所有権を証明していることを示します。また、Marketplaceがドメインの存在と、少なくとも6か月間Marketplaceにおけるパブリッシャーの良好な状態の両方を検証していることも示しています。
-
異常な使用状況の監視: Marketplaceは、異常な動作を検出するために、拡張機能のダウンロードと使用パターンを監視します。
-
名前の占有 (Name squatting): 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で拡張機能のページを開きます。
-
拡張機能の詳細情報セクションの下部にある懸念事項を報告するリンクを選択します。
関連リソース
-
Visual Studio Codeでの拡張機能のインストールと管理方法について学びます。
-
ワークスペースの信頼を使用して、プロジェクトフォルダー内のコードがVS Codeおよび拡張機能によって明示的な承認なしに実行されるかどうかを決定します。これにより、慣れないコードを操作する際にセキュリティの追加レイヤーが加わります。
-
VS Codeで許可された拡張機能を構成して、組織内で使用できる拡張機能を強制します。