Home

VS Code拡張機能のセキュリティリスク:26.5%が高リスクと判定された実態調査

公開日

img of 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割がセキュリティ上の懸念を抱えていることが判明しました。

以下の表は、分析された拡張機能のリスク分類を示したものです。

リスク区分件数割合判定基準の概要
クリティカル4311.4%VirusTotalで悪意判定されたドメインへの接続、悪意あるパターンの検出
10026.5%正当な用途だが広範な権限を持つ、脆弱な依存関係を含む、疑わしいパターンあり
23462.1%セキュリティ上の懸念はあるが限定的な権限、更新が古いなど
00%適切にスコープ設定され、十分にメンテナンスされている

図表1:リスクベースの分類結果

驚くべきことに、調査対象の26.5%が高リスク11.4%がクリティカルと判定されています。クリティカルな拡張機能には、悪意があると判定されたドメインへの接続や、攻撃的なコードパターンが含まれていました。また、高リスクの拡張機能であっても、悪意はないものの過剰な権限を持っていたり、既知の脆弱性を持つ依存パッケージを含んでいたりと、攻撃者に悪用される隙を持っています。低リスクと判定された拡張機能がゼロであったことは、エコシステム全体のセキュリティ成熟度がまだ発展途上であることを示唆しています。

実態データが示す脆弱性の内訳

では、具体的にどのような点がリスク要因となっているのでしょうか。まずは拡張機能の提供者(パブリッシャー)と権限の状況を見てみます。

カテゴリ指標件数割合
パブリッシャー種別検証済みパブリッシャー (Verified)266.9%
未検証パブリッシャー (Unverified)35193.1%
権限の使用状況広範なファイルシステムアクセス33087.5%
ネットワーク通信174.5%
プロセス実行6717.8%
2つ以上の高リスク権限7519.9%

図表2:拡張機能のメタデータと権限の露出状況

図表2が示す通り、分析された拡張機能の93.1%が未検証のパブリッシャーによって公開されています。また、87.5%もの拡張機能がファイルシステムへの広範なアクセス権限を有しており、多くの拡張機能が開発者のファイルに自由にアクセスできる状態にあります。

次に、ソフトウェアサプライチェーンの観点からのリスクを確認します。拡張機能は多くの外部パッケージ(依存関係)を利用して開発されますが、ここにも落とし穴があります。

カテゴリ指標
脆弱性既知のCVEを持つ拡張機能23 (6.1%)
高深刻度 (High Severity) のCVE10
中深刻度 (Medium Severity) のCVE15
2年以上更新されていない依存関係45 (22.5%)

図表3:依存関係と脆弱性のプロファイル

図表3によると、全体の約6%にあたる23の拡張機能から既知の脆弱性(CVE)が見つかりました。さらに、22.5%の依存関係で、2年以上更新されていない古い依存パッケージが使用されています。これらは攻撃者にとって格好の侵入経路となり得ます。

検出された悪意ある振る舞いのパターン

本調査では、単なる設定ミスや更新漏れだけでなく、明らかに悪意がある、あるいは極めて疑わしい挙動も検出されました。以下の表は、検出された悪意あるパターンの内訳です。

悪意あるパターン件数割合具体的な内容
不審なネットワーク活動174.5%文書化されていないAPIエンドポイントへの接続、ユーザーの同意なしでのデータ送信、不審なドメインへの接続
権限昇格の試み143.7%システム設定への不正アクセス、VS Code内部ファイルの変更試行、永続化メカニズムの確立
データ持ち出し195.0%環境変数の収集、ユーザー認証情報の収集試行、ワークスペース内容の送信

図表4:悪意あるパターンのプロファイル

特に警戒すべきは、データの持ち出し が19件(5%)確認されたことです。これには、環境変数の収穫や、クラウドサービスの認証情報の収集などが含まれます。また、不審なネットワーク活動も4.5%で確認されており、ユーザーが意図しないデータを外部サーバーへ送信している可能性があります。

調査では他にも、ハードコードされたAPIキーやプライベートな認証情報がコード内に放置されているケースも散見されました。 別の調査(27,261件を対象) では、8.5%の拡張機能がアクセストークンなどの機密情報を漏洩させていたという報告もあります。

結論

本調査結果は、VS Code拡張機能のエコシステムが、生産性の向上という恩恵の一方で、無視できないセキュリティリスクを内包していることを浮き彫りにしました。分析された拡張機能の4割近くが高リスクまたはクリティカルと判定され、未検証のパブリッシャーによる公開や、過剰な権限要求が常態化しています。

開発者は「人気の拡張機能だから安全だ」と盲信するのではなく、インストールする拡張機能がどのような権限を要求し、誰によって開発されたものなのかを意識する必要があります。開発環境は、企業の知的財産や顧客データに直結する重要な領域です。その入り口となる拡張機能のセキュリティに対し、より慎重な姿勢が求められています。


Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!

参考資料:

Author: vonxai編集部

Google Scholarで開発生産性やチーム開発に関する論文を読むことが趣味の中の人が、面白かった論文やレポートを記事として紹介しています。