ExtensionTotalのご紹介:VS Code拡張機能のリスクを評価する方法

前回のブログ記事「3/6 | マイクロソフトへの手紙:Visual Studio Code拡張機能の設計上の欠陥を暴く」では、私たちがVisual Studio Code拡張機能とマーケットプレイスで発見したすべてのセキュリティ設計上の欠陥について、マイクロソフトに宛てた手紙という形でお伝えしました。

そこで私たちは、組織が今日からこのリスクを軽減できる手段として、VSCode拡張機能のリスクを評価するためのコミュニティツールを開発することに決めました。

ソリューションをご紹介する前に、まずVSCode拡張機能が抱えるリスクについておさらいしておきましょう。

リスクの実態

これまでの調査ブログで取り上げてきたとおり、Visual Studio Code(VSCode)拡張機能はそもそも、根本的な境界線を欠いた設計になっています。拡張機能は任意のコードを実行し、子プロセスを生成し、システムリソースへアクセスすることができますが、そこには制限も許可モデルも一切存在しません。つまりユーザーは、拡張機能がどのような操作を行っているのかをまったく把握できないのです。さらにVSCodeマーケットプレイスの管理体制は最小限にとどまっており、悪意ある拡張機能が容易に信用と露出を獲得できてしまいます。実際、私たちの調査用拡張機能(最初のブログ記事で取り上げた事例)は、こちらから勧誘したり大きな労力をかけたりしなくても、数千人の開発者と、世界屈指の大手サイバーセキュリティ企業を含む複数の時価総額数十億ドル規模の企業にまで到達しました。こうした問題は、世界中の組織にとって重大な脅威となっています。

ExtensionTotalは、VirusTotalやAppTotal、その他のPLG型セキュリティツールに着想を得て私たちが開発したソリューションです。ExtensionTotalはWebツールで、拡張機能の名前・ID・URLを入力するだけで、その拡張機能が悪意あるものかどうかのリスクを評価できます。

私たちは拡張機能を解凍し、内部を徹底的に調査します。コードとその依存関係をサンドボックス化して脆弱性チェックを実行し、公開者に関する背景情報を収集し、拡張機能が外部と通信していないか監視し、漏洩した機密情報がないか確認します。さらにAIを活用したコード解析によって、そのコードが何を目的に作られているのかまで把握します。

私たちはExtensionTotalを1か月かけて構築しました。この場を借りて、皆さんと世界に向けて公開できることを嬉しく思います。これが、世界を少しでも安全にする一助となれば幸いです。

仕組みについて

ExtensionTotalは、VisualStudio Codeマーケットプレイスに掲載されている拡張機能を継続的に分析しています。各拡張機能は解凍され、数百に及ぶ属性が抽出・強化されたうえで、リスクスコアの算出に反映されます。

VSCodeマーケットプレイスに現在または過去に公開されていた拡張機能であれば、どれでも検索でき、算出されたリスクスコア、検出結果、そしてその拡張機能に関連するリスクの内訳を含む包括的なレポートを取得できます。

ここでは、VSCode全体の脆弱性を評価するために私たちが最初に作成した調査用拡張機能である「Darcula」のレポートを見てみましょう。

レポートを開くと、この拡張機能について算出されたリスクスコア(高)と、そのスコアの根拠となった主な検出結果をひと目で確認できます。

ここで、すぐに2つの興味深い検出結果に気づくはずです。1つ目は「拡張機能のなりすまし」です。これは、名前・ドメイン・説明文・コードなどを比較した結果、この拡張機能と極めて類似した、より人気があり歴史の長い拡張機能が見つかったことを意味します。2つ目の危険信号は「コードを実行するテーマ」です。VSCodeにおけるテーマは通常JSONまたはYAMLファイルのみで構成されコードを実行することはありませんが、この拡張機能にはコードのアクティベーションイベントとメインのJSファイルが存在することが判明しました。

それでは、レポートの詳細をさらに見ていきましょう。

このセクションでは、2つの重要な情報を確認できます。1つ目はこの拡張機能が外部と通信しているかどうか、2つ目はどのVSCode APIを呼び出しているかです。ご覧のとおり、ExtensionTotalは「Darcula」がRetoolを使用しているという、テーマにしてはやや不自然な事実を検出しました。さらに、VSCodeで開いているソースコードの読み取りを可能にするworkspace.openTextDocument APIへのアクセスも確認されています。この拡張機能が単なるテーマであることを踏まえると、いずれも警戒すべき点です。

最後に、この拡張機能については、カスタムLLMによるコードの概要解析結果が最終セクションに表示され、潜在的な悪意ある挙動まで浮かび上がらせています。

自組織にどんな拡張機能がインストールされているか把握していますか?

私たちは40種類以上の検出項目と200種類以上の指標を備えたExtensionTotalを構築しました。ExtensionTotalのおかげで、VSCodeマーケットプレイスをより良く、より安全な場所にするために、極めてリスクの高い興味深い拡張機能を発見・報告することができました。

このツールを組織での利用にも役立てられるよう、私たちは各エンドポイントに展開できる簡易なJamfスクリプトを作成しました。このスクリプトはVSCodeにインストールされているすべての拡張機能を一覧化し、ExtensionTotalにかけることで、組織内にあるすべての拡張機能のリスクスコアを把握できるようにします。

さらに私たちは、インストール済みのすべての拡張機能を継続的にスキャンし、危険な挙動を検出した場合にアラートを出すVSCode向け拡張機能も開発しました。こちらからVSCodeマーケットプレイスでご覧いただけます

そして今、私たちはVisual Studio Codeマーケットプレイスでトレンド入りしています。

今後の展望

私たちは今回の調査の成果として、ExtensionTotalを無料のコミュニティツールとして構築しました——

1/6 | 偽のVSCode拡張機能で30分のうちに複数の巨大企業をハッキングした経緯

2/6 | 悪意ある拡張機能を暴く:VS Codeマーケットプレイスの衝撃的な統計データ

3/6 | マイクロソフトへの手紙:Visual Studio Code拡張機能の設計上の欠陥を暴く

この1か月間、ExtensionTotalの開発は非常に有意義な取り組みでした。私たちはこれからも、CISOが夜安心して眠れるよう、サイバーセキュリティ分野に潜む興味深く根深い問題を見つけ出していきます。

もしお話しする機会があれば、ぜひこちらからお電話の予約をお願いします。皆さんが何をきっかけにここへたどり着いたのか、そしてサイバーセキュリティについてどんな考えや夢を抱いているのかをぜひお聞かせください。もしかしたら、いつかその夢を実現するお手伝いができるかもしれません。

このシリーズの次のブログ記事、「5/6 | インターネットを揺るがす:私たちの調査がもたらした余波」もぜひご覧ください。

ExtensionTotalはこちらからご確認いただけます

翻訳元: https://www.koi.ai/blog/4-6-introducing-extensiontotal-how-to-assess-risk-in-vs-code-extensions

ソース: koi.ai