VS Code拡張機能のセキュリティリスク:26.5%が高リスクと判定された実態調査
公開日
Visual Studio Code(VS Code)は、その動作の軽快さと豊富な拡張機能のエコシステムにより、世界中の開発者にとって欠かせないツールとなっています。しかし、生産性を飛躍的に向上させるこれらの拡張機能が、実は開発環境における重大なセキュリティホールになり得るという事実は、あまり広く認識されていません。
本記事では、Ishaan Agrawal氏によって発表された論文「Automated Security Framework for VS Code Extensions: Risk Profiling, Policy Generation, and Runtime Sandboxing」に基づき、VS Code拡張機能のセキュリティ実態について解説します。
VS Code拡張機能が抱える構造的なセキュリティ課題
VS Codeの拡張機能は、Node.jsアプリケーションとして実装されており、JavaScriptやTypeScriptで記述されています。ここで最大の問題となるのが、拡張機能がホストであるIDE(統合開発環境)の全特権を継承してしまうという点です。
現状のVS Codeの仕様では、拡張機能に対して細かな権限設定が強制されていません。そのため、インストールされた拡張機能は、Node.jsのランタイムが持つフル機能を利用できます。これには、ファイルシステムの読み書き、ネットワーク通信、OSレベルのプロセス実行などが含まれます。つまり、たった一つの悪意ある、あるいは脆弱な拡張機能をインストールするだけで、開発者のローカルシステム全体が危険にさらされ、認証トークンやソースコードなどの機密情報が流出する恐れがあるのです。
377の拡張機能を対象としたリスク評価の結果
論文では、トレンドとなっている377のVS Code拡張機能を対象に、メタデータ分析、サプライチェーン分析、およびコード解析(静的・動的)を用いた包括的なリスク評価が行われました。その結果、調査対象の約4割がセキュリティ上の懸念を抱えていることが判明しました。
以下の表は、分析された拡張機能のリスク分類を示したものです。
| リスク区分 | 件数 | 割合 | 判定基準の概要 |
|---|---|---|---|
| クリティカル | 43 | 11.4% | VirusTotalで悪意判定されたドメインへの接続、悪意あるパターンの検出 |
| 高 | 100 | 26.5% | 正当な用途だが広範な権限を持つ、脆弱な依存関係を含む、疑わしいパターンあり |
| 中 | 234 | 62.1% | セキュリティ上の懸念はあるが限定的な権限、更新が古いなど |
| 低 | 0 | 0% | 適切にスコープ設定され、十分にメンテナンスされている |
図表1:リスクベースの分類結果
驚くべきことに、調査対象の26.5%が高リスク、11.4%がクリティカルと判定されています。クリティカルな拡張機能には、悪意があると判定されたドメインへの接続や、攻撃的なコードパターンが含まれていました。また、高リスクの拡張機能であっても、悪意はないものの過剰な権限を持っていたり、既知の脆弱性を持つ依存パッケージを含んでいたりと、攻撃者に悪用される隙を持っています。低リスクと判定された拡張機能がゼロであったことは、エコシステム全体のセキュリティ成熟度がまだ発展途上であることを示唆しています。
実態データが示す脆弱性の内訳
では、具体的にどのような点がリスク要因となっているのでしょうか。まずは拡張機能の提供者(パブリッシャー)と権限の状況を見てみます。
| カテゴリ | 指標 | 件数 | 割合 |
|---|---|---|---|
| パブリッシャー種別 | 検証済みパブリッシャー (Verified) | 26 | 6.9% |
| 未検証パブリッシャー (Unverified) | 351 | 93.1% | |
| 権限の使用状況 | 広範なファイルシステムアクセス | 330 | 87.5% |
| ネットワーク通信 | 17 | 4.5% | |
| プロセス実行 | 67 | 17.8% | |
| 2つ以上の高リスク権限 | 75 | 19.9% |
図表2:拡張機能のメタデータと権限の露出状況
図表2が示す通り、分析された拡張機能の93.1%が未検証のパブリッシャーによって公開されています。また、87.5%もの拡張機能がファイルシステムへの広範なアクセス権限を有しており、多くの拡張機能が開発者のファイルに自由にアクセスできる状態にあります。
次に、ソフトウェアサプライチェーンの観点からのリスクを確認します。拡張機能は多くの外部パッケージ(依存関係)を利用して開発されますが、ここにも落とし穴があります。
| カテゴリ | 指標 | 値 |
|---|---|---|
| 脆弱性 | 既知のCVEを持つ拡張機能 | 23 (6.1%) |
| 高深刻度 (High Severity) のCVE | 10 | |
| 中深刻度 (Medium Severity) のCVE | 15 | |
| 2年以上更新されていない依存関係 | 45 (22.5%) |
図表3:依存関係と脆弱性のプロファイル
図表3によると、全体の約6%にあたる23の拡張機能から既知の脆弱性(CVE)が見つかりました。さらに、22.5%の依存関係で、2年以上更新されていない古い依存パッケージが使用されています。これらは攻撃者にとって格好の侵入経路となり得ます。
検出された悪意ある振る舞いのパターン
本調査では、単なる設定ミスや更新漏れだけでなく、明らかに悪意がある、あるいは極めて疑わしい挙動も検出されました。以下の表は、検出された悪意あるパターンの内訳です。
| 悪意あるパターン | 件数 | 割合 | 具体的な内容 |
|---|---|---|---|
| 不審なネットワーク活動 | 17 | 4.5% | 文書化されていないAPIエンドポイントへの接続、ユーザーの同意なしでのデータ送信、不審なドメインへの接続 |
| 権限昇格の試み | 14 | 3.7% | システム設定への不正アクセス、VS Code内部ファイルの変更試行、永続化メカニズムの確立 |
| データ持ち出し | 19 | 5.0% | 環境変数の収集、ユーザー認証情報の収集試行、ワークスペース内容の送信 |
図表4:悪意あるパターンのプロファイル
特に警戒すべきは、データの持ち出し が19件(5%)確認されたことです。これには、環境変数の収穫や、クラウドサービスの認証情報の収集などが含まれます。また、不審なネットワーク活動も4.5%で確認されており、ユーザーが意図しないデータを外部サーバーへ送信している可能性があります。
調査では他にも、ハードコードされたAPIキーやプライベートな認証情報がコード内に放置されているケースも散見されました。 別の調査(27,261件を対象) では、8.5%の拡張機能がアクセストークンなどの機密情報を漏洩させていたという報告もあります。
結論
本調査結果は、VS Code拡張機能のエコシステムが、生産性の向上という恩恵の一方で、無視できないセキュリティリスクを内包していることを浮き彫りにしました。分析された拡張機能の4割近くが高リスクまたはクリティカルと判定され、未検証のパブリッシャーによる公開や、過剰な権限要求が常態化しています。
開発者は「人気の拡張機能だから安全だ」と盲信するのではなく、インストールする拡張機能がどのような権限を要求し、誰によって開発されたものなのかを意識する必要があります。開発環境は、企業の知的財産や顧客データに直結する重要な領域です。その入り口となる拡張機能のセキュリティに対し、より慎重な姿勢が求められています。
Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!
参考資料: