1 ポイント 投稿者 GN⁺ 2025-02-27 | 1件のコメント | WhatsAppで共有
  • VS Codeユーザーは、equinusocio.vsc-material-themeproblematic と報告された というメッセージとともに削除され、再インストールのブロックや繰り返し表示されるポップアップまで経験したと共有
  • GitHub Q&Aの質問は、Marketplaceコメントの信頼性を問うところから始まり、選ばれた回答は t3dotggの代替拡張機能 へのリンクにつながる
  • 論争の核心は、拡張機能の クローズドソース化、コード難読化の疑惑、作者のレビュー対応姿勢が重なり、信頼が揺らいだ点
  • 一部のユーザーは、削除されたコミット・ディスカッション履歴と6か月前のReddit投稿を根拠に、過去にも compromisedかどうか が議論されていたと共有
  • 繰り返し表示されるポップアップを消すには、.vscode または .vscode-insiders/extensions の拡張機能フォルダと extensions.json の項目を直接削除するか、VS Codeの再インストールまで必要だったという事例が出ている

VS Codeが表示した問題メッセージ

  • あるユーザーは、VS Codeが We have uninstalled 'equinusocio.vsc-material-theme' which was reported to be problematic. というメッセージを表示したと共有
  • VS Codeを閉じて再度開くたびに拡張機能が再インストールされるように見え、手動で削除した後も同じメッセージが出続けたという
  • 別のユーザーは、VS Codeが拡張機能の 再インストールもブロックした と述べた
  • Settings Syncが原因かもしれないという意見もあったが、問題を経験したユーザーは最近Codeを新規インストールし、最小限の拡張機能だけを設定したとして、確信は持てないとしている

選ばれた回答と代替拡張機能

  • 選ばれた回答は、Visual Studio Marketplaceの t3dotgg.vsc-material-theme-but-i-wont-sue-you を提示
  • 質問者は、その回答リンクが t3dotggのリポジトリ によって裏付けられていると本文に追記
  • あるユーザーは「これで実際の結果が出たし、今日は仕事をしなければならない日だった」という反応を残した

信頼を揺るがしたコードとライセンス論争

  • あるユーザーは、最近の クローズドソース化 と事前警告の欠如を問題視し、懸念するユーザーに作者が無礼に返答しているレビュー返信を見て、もう信頼しないと表明
  • 同じユーザーは、難読化されたコードが obfuscator.io の出力のように見えるとも付け加えた
  • 別のユーザーは、拡張機能の作者が製品でMaterial Themeを使っている人たちを脅しており、もともとはApache License 2.0だったことを忘れているようだと主張
    • このユーザーは、過去のライセンスファイルに見える リンク を添付
    • 同じコメントは、コミット履歴を消して最初から別のライセンスだったかのように見せたと主張

削除された履歴と過去の疑念

  • あるユーザーは、Gitリポジトリから多くのコミットとディスカッション履歴が削除されたようだと述べた
  • 同じユーザーは、6か月前のRedditの has_the_material_theme_extension_been_compromised 投稿を見つけ、その投稿がこのリポジトリの壊れたdiscussionリンクにつながっていると共有
  • 別のユーザーは「VSCodeで好きだった唯一のテーマ」だったと反応し、さらに別のユーザーはすでに多くのフォークがあると述べた

繰り返し表示されるポップアップを消すために試した方法

  • Linuxユーザーは、.vscode ディレクトリから拡張機能フォルダを直接削除したが解決せず、VS Codeを再インストールするとポップアップが消えたという
  • Windowsユーザーは、%USERPROFILE%/.vscode/ 以下で拡張機能フォルダを削除し、extensions.json から該当する拡張機能定義を手動削除してポップアップを消したと共有
  • Visual Code Insidersユーザーは、.vscode-insiders/extensions から equinusocio.vsc-material-theme-34.7.9 フォルダを削除し、extensions.json の該当オブジェクトを取り除いた後、再び動作したと述べた
  • 例示されたコマンドには、cat extensions.json | jq | grep eqequinusocio.vsc-material-theme の項目を探し、rm -rf equinusocio.vsc-material-theme-34.7.9 で拡張機能フォルダを削除する手順が含まれている

1件のコメント

 
GN⁺ 2025-02-27
Hacker News の意見
  • 削除された投稿はこちらで閲覧可能: https://web.archive.org/web/20250226020241/https://github.co...

  • VS Code チームの Isidor です。コミュニティメンバーがこの拡張機能について詳細なセキュリティ分析を行い、悪意を示唆する複数の危険信号を見つけて報告しました
    Microsoft のセキュリティ研究者がその主張を確認し、さらに疑わしいコードも発見しました
    このパブリッシャーを VS Marketplace でブロックし、該当する拡張機能をすべて削除し、この拡張機能が実行中のすべての VS Code インスタンスから削除しました
    はっきりさせておくと、今回の措置は著作権やライセンスとは無関係で、あくまで潜在的な悪意が理由です
    まもなく https://github.com/microsoft/vsmarketplace/ に、より詳しい告知を掲載する予定です
    参考までに、VS Marketplace はセキュリティへの投資を継続しており、拡張機能ランタイムの信頼に関する内容は https://code.visualstudio.com/docs/editor/extension-runtime-... で確認できます

    • VSCode がこの拡張機能を削除できません。削除を求めるプロンプトが表示され、確認するとウィンドウがリロードされますが、拡張機能はそのまま残り、同じ「問題あり」のプロンプトが再び表示されて無限ループになります
      拡張機能パネルから通常の方法で削除しても同じ動作です
      結局、%USERPROFILE%\.vscode\extensions から拡張機能フォルダを直接削除し、%USERPROFILE%\.vscode\extensions\extensions.json からも項目を削除する必要がありました
      VSCode 1.97.2、コミット e54c774e0add60467559eb0d1e229c6452cf8447
    • この矛盾について少し説明してほしいです。Marketplace の問題をコミュニティからの通知に頼っているのだとしたら、Microsoft は人気拡張機能を自ら監査するために十分な投資をしていないのではないでしょうか?
      VSCode の信頼モデルも根本的に壊れていると思います。クライアントマシン上で、任意の第三者コードをサンドボックスなしで実行しています
      Azure にはこのレベルのセキュリティを展開しないはずなのに、なぜ VSCode では「他人のマシン上で任意の第三者コードを実行する」ことが適切なのでしょうか?
      VSCode チームの仕事には感謝しており、実際に使っていますが、サンドボックスの不在はずっと気になっていました
    • 再アップロードも追跡する必要があるかもしれません
      https://marketplace.visualstudio.com/items?itemName=t3dotgg....
    • Open VSX 側でもこの拡張機能を悪性として表示できるか検討したいです。悪性コードが含まれていたバージョン範囲を把握しているのか気になります
      https://open-vsx.org には、この拡張機能が非公開ソースに移行した後のバージョンが上がっていないので質問しています
    • 誤検知は本当に厄介で、実際に起きると大きな打撃になります
      Material Theme と Material Theme Icons のパブリッシャーアカウント Equinusocio が誤ってフラグ付けされ、現在は復旧しています
      安全のために迅速に動きましたが、ミスをしました。これらのテーマが Microsoft 内部の複数のマルウェア検知指標を発火させ、調査の結果、誤った結論に至りました
      VS Code エコシステムのセキュリティを非常に重視しており、ユーザーを保護するため迅速に行動しました
      Equinusocio 拡張機能作者の落胆と強い反応は理解しており、その声も受け止めました。悪いことですが、時にはこうしたことが起こります。最善を尽くしてはいますが、私たちも人間であり、今はこの件を整理して前に進みたいと思います
      難読化コードに関するポリシーを明確化し、スキャナーと調査手順を更新して、このようなことが再び起こる可能性を減らします
      これらの拡張機能は安全であり、VS Code コミュニティが利用できるよう復旧されました
      Material Theme: https://marketplace.visualstudio.com/items?itemName=Equinuso...
      Material Theme Icons: https://marketplace.visualstudio.com/items?itemName=Equinuso...
      作者がこの余波に巻き込まれたことをあらためてお詫びし、今後のテーマや拡張機能にも期待しています。彼とは連絡を取り、補償措置について話し合い、忍耐してくれたことに感謝しました
      Scott Hanselman および Visual Studio Code Marketplace チーム - @shanselman
  • この拡張の最も目立つフォークである「Material Theme (But I Won't Sue You)」を作った
    元メンテナーは昨年、完全に一線を越えた。もともと Apache 2 だったソースをオフラインにし、代替版をホストしたり他の IDE に含めたりする人たちを訴えると脅し始めた
    念には念を入れるため、私のフォークでは次の対応をした。VS Code チームが現在監査中で、悪意あるコードが一つでも見つかれば Marketplace から即時削除し、ユーザーから強制アンインストールしてよいと全面的に許可した
    コードベースも徹底的に監査したが、悪意があるように見える部分はなく、変更履歴・分析・Open Collective・HTML レンダリング関連のコードをすべて削除した
    少し気がかりだったのは変更履歴用の HTML と Sanity ローダーだけだったので、完全に取り除いた。2つの PR で依存関係のほぼすべてと7,000行以上を削除したが、その大半は package-lock
    ほかの人が監査したいなら、リポジトリはここにある: https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you

    • テーマが分析コードや大量の依存関係まで抱え込めること自体、ばかげているように見える。テーマは普通、自己完結した色/スタイルのまとまりであるべきだ
      さらに呆れるのは、誰かが私のマシン上で何かを「強制アンインストール」できるという点だ
      VS Code ユーザーでなくてよかった。Marketplace とプラグインでは、典型的な企業的なノイズが一通り起きているように見える
    • リポジトリにも Marketplace ページにも、見た目を示すスクリーンショットが一つもないのはなぜかわからない。私が見落としているのだろうか?
  • 興味深いことに、Reddit の誰かが7か月前にこの拡張の怪しい変更に気づいていた [1]。オープンソースでの難読化は、たいてい極端な危険信号だ
    Microsoft は VS Code 拡張のセキュリティモデルを真剣に見直すべきだ。今の方式では攻撃対象としてあまりに割に合いすぎる
    開発者を1人ブロックしても、新しい悪性拡張が10個ついてくるだろう
    [1] https://www.reddit.com/r/vscode/comments/1eq40o2/has_the_mat...

    • 何を望むかには気をつけるべきだ
      VS Code は Microsoft が出した製品の中でもほぼ最高のものかもしれず、その大きな理由が拡張 Marketplace
      Microsoft が Marketplace の取り締まりを強めると、VS Code の品質が悪くなる可能性が高い
      根拠はこうだ。Marketplace の審査が厳しくなれば参入障壁が上がり、拡張全体の数が減る。拡張が減ると、Microsoft が機能を VS Code 本体に直接入れる動機が生まれる。Microsoft が機能を増やすほど、VS Code はさらに肥大化するだろう
      結局、拡張 Marketplace のセキュリティ監査を増やすことは、より肥大化した VS Code につながるかもしれない
      もちろん拡張 Marketplace により良いセキュリティ制御があれば望ましいが、Microsoft が実際のユーザーにとって製品を改善する形でそれを実現するとは信じていない
  • 関連する内容を読んでみると、この人は不安定に見える。文字どおり16進カラーコードを自分の所有物だと思っているようだ
    技術的にも大したことはなく、優秀な人たちをみな去らせてしまった
    彼のソフトウェアは使っていないが、この一件から早く抜け出し、自分が Material を発明したわけではないと学んでほしい

    • Pantone が一言言いたがりそうだ
    • 誰かは彼を lunatic と表現していたが、これはセキュリティ問題だ。世界中の開発者の IDE に悪意あるコードをうまく入れる人を、不安定だとか狂っているだけだと決めつけるべきではない
      むしろ巧妙で欺瞞的であるか、情報機関の手先である可能性もあると考えるべきだ
      開発者ツールに悪意あるコードを入れる人について、そう疑うのは被害妄想ではない
  • 誰かが代替拡張の Material Theme (But I Won't Sue You) を公開した
    https://marketplace.visualstudio.com/items?itemName=t3dotgg....

    • 元作者が開発/保守コストについて多く語っていたので、いったい何を保守する必要があるのか気になった
      https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you のリポジトリをクローンして見てみたところ、コード行数の概要はこうだ
      CSS: 2ファイル、142行、コード119行、コメント0行、空行23行
      TypeScript: 32ファイル、2026行、コード1650行、コメント243行、空行133行
      HTML: 2ファイル、59行、コード49行、コメント1行、空行9行
      合計36ファイル、2227行、コード1818行、コメント244行、空行165行
      このうち TypeScript の622行は scripts/generator/settings/specific 内のバリエーション別16進カラー定義
      残りもおおむねボイラープレートに見え、たとえば scripts/generator/color-set.ts の599行がそうだ
      だから疑問は依然として残る。いったい何を保守する必要があって、数分以上かかるというのか?
      もっと実質的なオープンソースプロジェクトを何年も公開・保守してきたが、金銭的な貢献を期待したことはなかった
    • 代替拡張を作った人は技術 YouTuber の theo のようだ(https://m.youtube.com/@t3dotgg
    • ああ、それは私だ。正直、この人が少しおかしくなってしまったのは驚きではない
  • Material テーマにはいったい何があって、人々をこうさせるのだろう? 5年ほど前、IntelliJ 側でも似たようなことがあった
    とはいえ、あれは文字どおり色だけのものではなかった

    • 人気があって収益化の可能性があるものなら、何でもそうなるようだ
  • リポジトリの中で悪意のある部分がどこだったのか、指摘できる人はいる? 見つけられなかった
    難読化されたコードはここで見つけた: https://web.archive.org/web/20250226020241/https://github.co...

  • この人が他の人たちの貢献を受け取った後で非公開ソースに変えたのは本当におかしい。正しいことには思えないけど、著作権の専門家ではない

    • 一般論としては、貢献は通常、その時点のライセンスで提供されたものとみなされる
      メンテナーはライセンスを変更できるが、それが過去の貢献分に影響するわけではない。基本的に、ライセンス変更前までのすべては従来のライセンスが維持される
      人気ソフトウェアがライセンスを変更してもフォーク可能なのはこれが理由
      過去にさかのぼってライセンスを変えるには、貢献者の同意が必要か、そうした権限を付与する文書が必要
      貢献者ライセンス契約(CLA)は、メンテナーに過去分まで自由にライセンス変更できる権限を与えることもあるが、すべてのCLAがそうではない
      ライセンスを変更した有名なソフトウェアには RedisTerraform がある。こうした場合でも、すでに配布されたソフトウェアは引き続き旧ライセンスで利用でき、その旧ライセンスがフォークを許可している
    • そもそもMaterialは彼の成果物だったのか?
    • Red HatやTerraformのように、企業が主に管理している多くのオープンソースプロジェクトが非商用に変わるのと似ている
  • 最近のほとんどのツールには、標準でかなりよく作られたテーマが入っているので良い
    こうしたリスクを減らし、インストールする拡張機能/アドオンを最小限にしたいなら、かなり現実的な選択肢になる
    もちろん、ソフトウェアをここまでテーマ化でき、場合によっては使いやすさやアクセシビリティを改善できる点も良い
    ただし、権限制限に関する機能リクエストは対応されるべき

    • テーマがセキュリティリスクになり得るということ自体が不思議
      明らかに単純なカラーコードと定義だけで構成されているわけではないようだ
      おそらくテーマシステムをもっと厳格に締める必要がありそう