Visual Studio Code拡張機能の設計欠陥の解明

前のブログ記事「2/6 | 悪質な拡張機能を露出:VS Codeマーケットプレイスからの衝撃的な統計」では、Visual Studio Codeマーケットプレイスについての衝撃的な統計を共有しながら、悪質でリスクの高いVSCode拡張機能の世界を露出しました。

マーケットプレイスに関する研究中に、脅威アクターが信頼性とアクセスを得るための素晴らしい方法を提供するマイクロソフトによって実装されたセキュリティ設計欠陥の信じられない数を発見しました。それらの設計欠陥が何であるかについて話しましょう。マイクロソフト、もしあなたがこれを読んでいるなら、これを上場企業のすべてのCISOのために、このポストで概説されているこれらの問題にできるだけ早く対処するためのあなたへの手紙と考えてください。

では、マイクロソフト、チャットをしましょう。

VSCode拡張機能の裏側

拡張機能がどのように機能するかを探索することから始めましょう。VSCode拡張機能の最初の最大のセキュリティ設計欠陥は、ずっと以前からのことですが、許可モデルの欠如です。

マイクロソフトは、インストール済み拡張機能に対して何らかの許可管理またはビジビリティを実装していません。これは、あらゆる拡張機能がアクティビティを実行できることを意味します。例えば、私のIDEの色を変更するだけであるべきテーマ拡張機能は、ユーザーのビジビリティまたは明示的な認可なしにコードを実行し、ファイルを読み書きする可能性があります。驚いたことに、2018年からの許可モデルをリクエストするオープンGithubフィーチャーリクエストが存在しており、マイクロソフトはまだそれに対応していません

もう1つの懸念事項は、拡張機能がデフォルトで舞台裏で静かに最新バージョンに自動的に更新される、つまり、誰もが最初は正当な拡張機能を公開し、牽引力を得てから、悪意のあるコードを導入できることを意味します。Chrome Webストアでは脅威アクターが個々のパブリッシャーから正当なChrome拡張機能を購入して、後で悪意のある脅威を導入する場合があります。実際に、我々の研究中にこの方法を活用して、VSCode拡張機能の内部を学ぶための拡張機能を開発したときにデータ収集を改善しました。初期ブログ投稿「偽のVSCode拡張機能を使用して30分以内に数十億ドル企業をハッキングする方法」でその話を読んでください。

別の設計欠陥は、VSCode拡張機能の制限の欠如です。VSCode拡張機能は、実質的にホストマシンで実行されている別のアプリケーションまたは実行ファイルです。Chrome拡張機能またはGmail Addinsのような同様のケースとは異なり、VSCode拡張機能にはホスト上で何ができるかについてゼロの制限があります。彼らは子プロセスを生成でき、システムコールを実行でき、希望するNodeJSパッケージをインポートできるため、非常にリスクがあります。拡張機能開発者として、あなたはOS レベルのAPIと特定の方法で通信することを強要されないため、さまざまな異なる方法でコマンドを実行またはプロセスを生成できるため、VSCodeがこの動作を規制できなくなります。残念なことに、従来のエンドポイント セキュリティ ツール(EDR)はこのアクティビティを検出しません(責任を持った開示プロセス中に選択された組織のRCEの例を実証しました)。VSCodeは多くのファイルを読み込み、多くのコマンドを実行し、子プロセスを作成するために構築されているため、EDRはVSCodeからのアクティビティが正当な開発者アクティビティなのか悪意のある拡張機能なのかを理解できません。VSCode拡張機能に制限やスコープの制限はなく、彼らは好きなことを、好きなときにします。

怖いです。

VSCodeマーケットプレイスのコントロール、またはより正確には、その欠如

大丈夫です。拡張機能はホスト上で何でも実行できますが、多分Visual Studio Code マーケットプレイスには最初から悪意のある拡張機能がインストールされるのを防ぐためのコントロールがあります。TLDR:そうではありません。そしてそれはあなたが思っているより悪いです。

パブリッシャーアカウントを作成するときに始めましょう。研究中に、マーケットプレイスに登録されている約45K のパブリッシャーを見つけたところ、そのうち1,800人だけが検証済みパブリッシャーです。検証済みパブリッシャーであることは、拡張機能の名前の横にきらめく青いバッジを取得することを意味します。しかし、それは大きな「しかし」です。検証済みパブリッシャーになるために(パブリッシャーの上位4%の中で)、あなたがする必要があるのは、あなたのパブリッシャーアカウントにDNS検証済みドメインを追加することだけです。これは、5ドルのドメインを購入する人なら誰でも検証済みパブリッシャーになり、すぐに信頼性を獲得できることを意味します。当社の実験拡張機能を見てください —

次に、リスティングページについて話しましょう。VSCodeは、マーケットプレイスのリスティングページに表示されるすべての情報を、拡張機能コードと一緒にパッケージされているpackage.jsonファイルから取得します。最も注目すべきことに、それはリスティングページに表示されているGithubリポジトリから取得されます。そう、あなたが推測したように、あなたが実際にGithubリポジトリを所有していることを確認する検証メカニズムがなく、アップロードされたコードが実際にGithubリポジトリ上にあるコードであることを確認する検証もありません。つまり、拡張機能がオープンソースのように見えても、実際にパッケージされたコードは100%異なる可能性があります。それだけでは不十分な場合、重複チェックがなく、実は、オープンソース拡張機能をコピーして、それのGithubを公式Githubリポジトリとしてリストできます(!)

我々が調査拡張機能に対するトラクションを得ることができた1つの方法は、拡張機能を公開した1日以内にVisual Studio Code マーケットプレイスのフロントページでトレンド化されたことです。マイクロソフトがトレンド拡張機能を選ぶ方法については確実ではありませんが、マイクロソフトがサーフェスする拡張機能のほとんどはダウンロード数が非常に少なく、通常は1,000未満です。我々はまた、拡張機能をインストールするDockerファイルを作成して、ループで実行することで拡張機能のインストール数が増加することを確認しました。これは、あなたがインストール爆弾で前ページに非常に簡単に進むことができることを意味します(このフロントページは月に450万ヒットを取得します)。

マイクロソフト、これらの問題を修正してください。脅威アクターが信頼性を得るための信じられないほど簡単なベクトルを提供し、開発者への露出を得ます。

親愛なるマイクロソフトへ

あなたは素晴らしい製品を作成しました。それは何百万もの開発者に使用され、愛されていますが、それらの開発者はあなたを安全な製品を設計するために信頼を置いています。このブログ投稿で言及されているセキュリティ設計欠陥が今後数ヶ月で修正されることを願うしかありません。Visual Studio Codeで作業しているマイクロソフトの誰かにアクセス権がある場合は、彼らと共有してください。

我々は研究中に見つけた主要な設計問題のみに触れました。さらに多くの小さい問題があり、そしておそらく大きな包括的な問題があります。VSCodeが非管理化されているという事実です。現在、ほとんどのIDEは非管理化されているため、これはマイクロソフトに対して言うことではありませんが、単純なソリューションを強調しています。組織がIDEの可視性を獲得し、評価し、管理する機能を持っていた場合、この攻撃の垂直線のリスクと影響は最小化されていたはずです。

しかし、これが起こるまで、我々はそれを自分の手に取り、組織がこの脅威を軽減するのを支援することにしました。疑わしいVisual Studio Code拡張機能を分析し、拡張機能のジャングルをナビゲートして有害なコード、リスクのあるアクセス、および他のセキュリティ脆弱性を検出するための無料コミュニティツールを作成することで支援します。

次のブログ投稿では、4/6 | ExtensionTotalの紹介:VS Code拡張機能のリスク評価方法” (公開済み!) このニッチだがリスクのある問題に対する我々のソリューションを導入します。いつものように、ご期待ください。

編集:この問題を解決するための無料コミュニティツールをリリースしました。チェックExtensionTotal

メインポストから除外された楽しいセキュリティ設計欠陥

マイクロソフトが開発したvsce と呼ばれるユーティリティパッケージがあり、開発が完了したら拡張機能コードをパッケージするために使用されます。マイクロソフトが言及しない楽しい事実は、ユーティリティを使用する場合、“build”または“dist”フォルダだけをパックするのではなく、現在いるフォルダ全体をパックするということです。我々の研究中に、ソースコードとシークレットで誤ってパッケージされた何千もの拡張機能を発見しました。そのうちのいくつかには、AWSキー、Githubシークレット認証情報、Google認証情報、個人アクセストークン、SMTP、およびOpenAI キーが含まれていました。

翻訳元: https://www.koi.ai/blog/3-6-a-letter-to-microsoft-uncovering-design-flaws-of-visual-studio-code-extensions

ソース: koi.ai