VSCode

マイクロソフトは、Visual Studio Marketplaceから、「Material Theme – Free」と「Material Theme Icons – Free」という2つの人気のVSCode拡張機能を、悪意のあるコードが含まれているとして削除した。

この2つの拡張機能は非常に人気があり、合計で900万回近くダウンロードされており、現在ユーザーはVSCodeで拡張機能が自動的に無効化された旨のアラートを受け取っている。

パブリッシャーのMattia Astorino(別名equinusocio)は、VSCodeマーケットプレイスで複数のエクステンションを持っており、合計1300万回以上インストールされている。

この拡張機能が悪質であるというニュースは、VSCodeの悪質な拡張機能のスキャンに精通しているサイバーセキュリティ研究者のAmit Assaraf氏とItay Kruk氏からもたらされた。

今日発表されたレポートの中で、研究者たちは拡張機能の中に不審なコードを発見し、その結果をマイクロソフトに報告したと述べている。

「マイクロソフトは両方の拡張機能をVS Codeマーケットプレイスから削除し、開発者を追放した。

「コミュニティのメンバーがこの拡張機能を深くセキュリティ分析したところ、悪意を示す複数のレッドフラグを発見し、私たちに報告しました。マイクロソフトのセキュリティ研究者がこの主張を確認し、さらに不審なコードを発見しました。”

“私たちはVS Marketplaceからこのパブリッシャーを追放し、そのエクステンションをすべて削除し、このエクステンションが動作しているすべてのVS Codeインスタンスからアンインストールしました。明確にするために – 削除は著作権/ライセンスとは何の関係もなく、潜在的な悪意についてのみです。”

VSCode automatically removing Material Theme extensions
VSCode が Material Theme 拡張機能を自動的に削除
Source:bsdahl

研究者たちは、彼らの専門スキャナーが拡張機能のコードに悪意のある活動を検出したと語った。研究者の一人である Amit Assaraf 氏は、悪意のあるコードは拡張機能のアップデートで導入されたと考えており、依存関係を介したサプライチェーン攻撃か、開発者のアカウントが侵害されたことを示していると述べています。

Scanner's risk score evaluation
スキャナによる「Material Theme」のリスク評価
出典:app.extensiontotal.com

さらに、彼らは、テーマは静的なJSONファイルであるべきであり、いかなるコードも実行すべきではないと説明しているため、彼らの評価では、この動作は疑わしいとマークされました。

によって検証されたように、テーマ内の “release-notes.js “ファイルには、オープンソースソフトウェアでは常に赤信号となる、高度に難読化されたJavaScriptが含まれています。

Obfuscated code in the extension
release-notes.jsファイル内の高度に難読化されたJavaScript
Source

コードの部分的な難読化解除により、ユーザー名とパスワードへの多数の参照が示された。しかし、ファイルはまだ高度に難読化されていたため、それらがどのような方法で参照されているのかは特定できなかった。

マイクロソフト社によると、この拡張機能と検出された悪質な行為に関する詳細は、近日中にVSMarketplaceのGitHubリポジトリに公開されるとのことだ。

エクステンションの開発者であるMattia Astorino(別名equinusocio)は、エクステンションが悪意のあるものであるという懸念に対して、この問題は “危険に見える “古いSanity.ioの依存関係が原因であると述べている。

「マイクロソフトのVSMarketplaceリポジトリにあるAstorinoからの投稿を読むと、”@gegtor様、Material Themeに有害なものは出荷されていません。

“我々は、sanityヘッドレスCMSからのリリースノートを表示するために2016年から使用されている時代遅れのsanity.io依存関係を持っていただけであり、それは彼らが見つけた唯一の問題でした。”

“その依存関係は2016年以来そこにあり、それ以来あらゆるチェックをパスしてきました、今それは危険に見えますが、マイクロソフトの誰もそれを削除するために私たちに連絡しませんでした。彼らはただ、何百万人ものユーザーに問題を引き起こし、vscodeのループを引き起こした。

「彼らは私たちに明確な説明を求めることもなく、すべてを壊してしまった。古い依存関係を削除するのは30秒で直りましたが、それがマイクロソフトのやり方のようです。私たちはまた、難読化されたindex.jsファイルを同梱しています。このファイルにはすべてのテーマ・コマンドとロジックが含まれています。難読化されているのは、拡張機能が現在クローズドソースであるためです。しかし、これを削除しても、拡張機能はプレーンなJSONファイルで機能します。

状況がはっきりし、拡張機能が悪意あるものかどうか判断されるまでは、すべてのプロジェクトから以下を削除することが推奨される:

  • equinusocio.moxer-theme
  • equinusocio.vsc-material-theme。
  • equinusocio.vsc-material-theme-アイコン
  • equinusocio.vsc-community-material-themeテーマ
  • equinusocio.moxer-アイコン

開発者であるAstorinoはその後、「Fanny Themes」という名前の依存関係のない「完全に書き直された拡張機能」であると主張するものをVSCode Marketplaceに公開し、Microsoftはその後これを削除しました。

難読化されたrelease-notes.jsファイルに関する私たちの質問に対して、Astorino氏はGitHubに投稿した内容を繰り返し、@sanity依存性が侵害されたため、通知があればすぐに削除できたと述べた。

“リリースノートファイルは、2016年にヘッドレスcmsであるsanity.ioからの変更点を表示するためのウェブビューを生成するために作成され、使用されました” Astorinoは、.NETに語った。

「それ以来、私は拡張機能の新しいバージョンに集中していたので、それに触れたことはありません。唯一有害だったのは、古い(そして唯一の)@sanityの依存関係が危うくなったことです。しかし、私はそれを知らなかった。”