VS CodeマーケットプレイスからMaterial Themeが削除!悪意あるコードが発見された理由とは?
引用元:https://news.ycombinator.com/item?id=43178831
こんにちは、VS Code チームの Isidor です。コミュニティのメンバーがこの拡張機能のセキュリティ分析を行ったところ、悪意のある意図を示す複数の赤信号が見つかり、私たちに報告されました。マイクロソフトのセキュリティ研究者たちがこれを確認し、さらに疑わしいコードを見つけました。発行者をVS Marketplaceから禁止し、拡張機能をすべて削除しました。この削除は著作権やライセンスに関するものではなく、潜在的な悪意のある意図に関するものです。詳細についての発表をお待ちください。
ちょっと矛盾してると思うんだけど:>コミュニティのメンバーが深いセキュリティ分析を行い、悪意のある意図を示す赤信号を見つけた。>VS Marketplaceは常にセキュリティに投資している。コミュニティに問題を知らせてもらうのに頼ってるなら、人気の拡張機能を自分たちで監査する投資が足りないんじゃない?VSCode の信頼モデルは根本的に壊れてると思う。クライアントマシンでサンドボックスなしで第三者のコードを実行してるのは、Azureでやるようなセキュリティとは言えない。仕事は評価してるけど、サンドボックスなしって常に気になってた。
注意喚起:ブラウザ拡張や npm/composer などのパッケージマネージャからインストールするすべてのパッケージにはマルウェアのリスクがある。オープンソースコミュニティはすべてのバージョンのパッケージを検証する財源がないから。無料で提供されるソフトにそのレベルのセキュリティを求めるのは不合理。必要ならセキュリティを確保できる企業の IDE を買って、その提供の限界を受け入れな。仮想マシンで実行することなどで開発ワークステーションを保護できるかもしれないが、実稼働コードは守れない。
>無料で提供されるソフトにそのレベルのセキュリティを求めるのは不合理。VS Code は単なる趣味のプロジェクトではなく、世界で最も価値のあるテック企業のフラッグシップ IDE だよ。企業の目標に従って赤字でリリースされてる。そんな企業が無料の IDE を出して、スクリプトなオープンソースプロジェクトを一つずつ駆逐していくなら、テック企業基準でその責任を持つのは当然じゃない?
マーケットプレイスは、有料契約に基づいた検証済みの拡張で運営されてるわけじゃない。使う拡張は自分で精査するが、多くの人はそれをしない。マイクロソフトに責任をシフトしないでほしい。彼らは提供する必要はないんだから。
Mozilla は、いろいろ言われるけど、ユーザーからお金をもらわなくても人気の拡張を検証するリソースを見つけてる。俺が使う拡張は全てチェックされてる。Raymond Hill(uBlock の人)はそのパフォーマンスにあまり感動していなかったが、それでも何もないよりはマシだよ(MSは果たして何をしてるんだか)。VSCodeはIDEの名の下の栄光ではあるが、結局はただのテキストエディタで、あまり良いものとは思えない。IDEといったら「統合」されてるべきだ。JetBrainsの製品とか、あるいはリアルなVisual Studioみたいに。
JetBrainsの製品がIDEで、VSCodeがそうでない理由って何?素朴な質問として、彼らの製品を使ったことがないもので。
>オープンソースコミュニティが全てのパッケージのバージョンを検証する財源がない。比較的セキュリティの高いオープンソースソフトウェアのみで構成されたディストリビューションを数十年発表しているDebian、Red Hat、Canonicalの存在を考えるとこの意見は無意味だ。MSとNPMがこの手の問題で引っかかる理由は、オープンソースが原因ではないだろう。
攻撃面が小さく、脆弱性から価値を引き出すのが難しいはず。動機のある攻撃者ほど防御が難しいことは何度も証明されていて、人気のプラットフォームは攻撃を受けやすい。NPMやMSはずっと大きなプラットフォームを代表しているんだ。
Microsoftが関わってるって分かってる?単なる素人がやってるわけじゃないし、VSCodeのコードには絶対に有料で書かれた部分があるよ。
再アップロードの追跡も必要かもね。https://marketplace.visualstudio.com/items?itemName=t3dotgg….
>”ここで詳細を発表するはずだから期待しておいて”
https://github.com/microsoft/vsmarketplace/
Isidor、楽しみだね!Open VSXで、悪意のある拡張分をフラグ立てたいんだけど、どのバージョンに悪意のあるコードが含まれてたか分かる?https://open-vsx.orgでは公開されたバージョンがないんだ。
ライセンス変更についての議論から、悪意のあるコードが見つかるのが偶然だとは思えないけど、これって関係あるの?
よくある流れだよね:
- オープンソースを作る
- みんなが使い出したら
- ライセンス変更&ソースを閉じる
- 悪意のあるコードを実装
- アップデートを出す
- 利益!詐欺的なソフトが何百万台も動くようになる!
悪意のある部分は大抵、元の開発者が人手不足で管理できなくなったオープンソースを奪った第三者によって行われることが多い。多くのChrome拡張は数百ドルで売られることがある。オンラインで無料のものを維持するのは大変だよね。
著作権侵害やYouTube広告の話が出ると、HNでは誰もクリエイターにお金を払わないって話になるけど、VSCodeのテーマに対して金を求められるのはどうなんだろうね。
広告をブロックしつつ、好きなクリエイターに直接送金するのが誇りだよ。少数派かもしれないけど、メメティック衛生のために広告を避けてる。
YouTubeはプレミアムを購入すれば、広告がなくなるから楽だよね。ただし、Youtuberが自分で付けた広告は見なきゃいけないけど。
私はYouTube Premiumに加え、広告ブロックやショートを排除する拡張、スポンサーシップをスキップする拡張も使ってる。2025年にはAI関連を排除する拡張も必要になるかも。YouTubeを使うのが大変だ。
フォークは同じセキュリティ問題を抱えてるのか、フォークのオーナーと連携して確認してくれないかな。https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you
フォークのオーナーです。フォークした時にコードをしっかり確認したし、再度監査したけど怪しいところは見当たらないよ。オープンコレクティブとチェンジログのコードも全部削除して確認するから、安心して。 Microsoftは拡張機能に対する権限モデルを考えてくれるのかな? これはこのフィーチャーリクエストで追跡されてるよ。https://github.com/microsoft/vscode/issues/52116 > 今後6ヶ月の間には権限モデルを追加する予定はないよ。 最近のVSCodeのリリースノート、面白い新機能のリストじゃなくて、全部“Copilot”関連になっちゃってるよね。 正直、開発者を批判するつもりはないけど、VSCodeのリリースノートは何年も自分の使い方には関係ない内容になってるよ。ターミナルクライアントを追加した後、ずっとその内容ばかりで全然新鮮さがなくなった。AI機能は最近のエディタの大きな革新だけど、その前にGithubやAzureとの統合をもっと推すと思ってたのに。 だからEmacsを使ってるし、Sublime Text IIやAtom、VSCodeが流行ってもEmacsをやめることはなかったんだ。MicrosoftがVSCodeに飽きたら、AIばかりの”雰囲気コーディング”に強制させるかもしれないけど、Emacsはずっとここにあるよ。新しいバージョンが出たばかりで、リリースノートにはいい内容がたくさんあった。 Emacsを15〜20年使ってきたけど、問題もあって、基本的に古い編集方法に縛られてる。効果的に使おうとすると、複雑な設定ファイルを維持する必要があるし。今は一部だけで使ってるけど、基本アーキテクチャを持ちつつ、1980年代からの古臭さを解消した新しいEmacsが必要だと思うんだ。 リンク先の問題が今は404エラーになってるけど、どういうこと? 毎日使ってる感染したパッケージの数考えると恐ろしいよな。おそらく20以上の政府が俺たちの行動を見てるんじゃないか。 政府をそんなに心配する必要ある?お前が知らないだけで、いろんな企業が見てるぜ?その中に信用できる企業がどれほどあるの?>”https://www.wired.com/story/gravy-location-data-app-leak-rtb…” 企業は意図的に自分たちの顧客を1億人も殺したわけじゃないからな。 今は拡張機能を「Fanny Theme」って名前にリブランドしてバンを回避してるみたいだな。>”https://marketplace.visualstudio.com/items?itemName=fanny.vs…” これ、もしかしてトロール名なの?Fannyって結構有名なスラングだし。>”https://en.wikipedia.org/wiki/Fanny#In_slang” 確かイギリスだけだったはず。 多くの英語圏の国では、アメリカが例外的なんじゃないかな。もちろん、「git」も侮辱的な意味があるし。 Gitはかなり軽い侮辱だと思うよ、誰かを煩わしいって言う感じ。俺たちの中にはGit(そのツール)に名前がピッタリだと思った人も少なくないはず。 “fanny”ってそもそも侮辱なのか? 35年以上前、友達がそれがイギリスの意味だって主張して、それ以来その言葉を聞くたびにその友達のこと思い出してた。彼は言葉の基本的で最も無害なスラングすら知らなかったんだよ。 サンキュー。今日この拡張のセキュリティ監査をするから、必要だったら対処するよ。 やあ、みんな、僕がこの拡張の主要なフォーク『Material Theme (But I Won’t Sue You)』を作ったんだ。メンテナーは昨年おかしくなって、(元々Apache 2だった)ソースをオフラインにしたり、他のIDEに含める人を脅したりしてる。本当におかしいよ。リスク回避のため、僕のフォークでは以下のことをしたよ。 テーマが分析や依存関係を積み重ねるなんてバカみたいだと思う。テーマって普通は自己完結してるもんだし、ユーザーの機械から何でも強制アンインストールできるなんてもっとおかしい。VS Codeユーザーじゃなくて良かったよ。マーケットプレイスやプラグイン周りでひどいことが起きてるみたい。 Qtテーマを試してみて。あれはC++コードからコンパイルされたバイナリだよ。 安全のために強制アンインストールができるなら、ユーザーの同意なしに拡張を自動アップグレードするのが危険ってことにならない? そうだね、でもこれが現実なんだ。自動更新や”エバーグリーン”リリースは、Chromeが広めたし、多くの頭痛を解消したと思う。これ以前は、Microsoftのような企業が古いバージョンを数年間サポートしたり、セキュリティ問題に対処する必要があったからね。 それは頭痛を解消するんじゃなくて、ユーザーにサプライズでワークフローを壊すリスクを押し付けるだけだよ。 VS Codeには権限モデルがないから、すべての拡張が何でもできちゃうのが問題なんじゃない? それはそうなんだけど、SublimeやVim、Emacs、Gedit、pico/nano、IntelliJ、Android Studio、Eclipse、そして全てのエディタにも同じ問題があるよ。 EmacsやVimはVS Codeよりも狙われる確率が低いと思うけどね。 リポジトリやマーケットページにスクリーンショットが全くないのはどういうこと?見逃してたのかな。 見た目は悪いから心配しなくて大丈夫。 7ヶ月前にRedditで誰かがこの拡張機能の怪しい変更に気づいてたな。オープンソースの難読化は通常極めて危険なサインだよ。MicrosoftはVS Codeの拡張のセキュリティモデルを見直すべきだね。 願い事には気をつけた方がいいよ。VS CodeはMicrosoftが出した最高の製品の一つだけど、拡張マーケットがあるからなんだ。もしMicrosoftがマーケットをもっと厳しく管理したら、VS Codeの品質が落ちる可能性がある。全体的に使える拡張の数が減るから、逆にMicrosoftはVS Codeの機能を増やすインセンティブを得るかもしれない。でも機能が増えすぎると、VS Codeが膨れ上がるんだよね。だから、監査が進むと逆効果になるかも。 全部を監視する必要はないと思う。Mozillaのやり方を真似して、トップのX個の拡張を手動で監査して信頼できるとマークすればいいんじゃないかな? MicrosoftはWindows Defenderでかなり良くなったからこれは期待できる。すべての他のアクティブスキャナーを黙って排除したんだ。無償の製品にどれだけ努力をかける気があるかの問題だね。 この人、まるで自分が色のhexコードを所有してるみたいに思ってる。技術がダメで、優れた人たちが去っていった。彼のソフトは使ってないけど、早くこの騒動から抜け出してほしいし、Materialを発明したなんて思わないでほしい。 >「彼は色のhexコードを所有してると思ってる」 Pantoneはhexコード以上のもので、色の物質科学の全体的なシステムなんだ。 Pantoneは正当な仕事をしてるが、色のhexコードを所有してるかのように思ってるところがある。 そうだね。Pantoneの色とMaterialを教えてあげれば、その色の材料をどのように取得するか教えてくれる。 そうは思わないな。透明なアルミニウムのネオンブラウンのPantoneを聞いたら、連絡が来なくなった。 他の人が彼のことを狂人だと表現してた。でも、これはセキュリティの問題で、悪意のあるコードを開発者のIDEに入れている人を狂気だとは思わず、むしろ巧妙で欺瞞的だと思うべきだ。 >「狂気や狂人ではなく、巧妙で欺瞞的だ」 誰かが代わりのやつ、Material Theme(でも訴えないから)をアップロードしたね。 元の作者は開発・メンテナンスの資金についてよく話してたから、どれだけのものをメンテナンスする必要があるのか気になった。GitHubのリポジトリを見てみたけど、ほとんどがボイラープレートな内容だった。じゃあ、そのメンテナンスに何がそんなにかかるのか。 数千行のコードからなるプロプライエタリソフトを作る事自体は問題ないし、労働の対価を求めるのは当然。ただ、人気のあるFOSSプロジェクトをプロプライエタリ化するのは問題がある。 彼は約7.6kドルの資金をOpenCollectiveで集めたみたいだね。特にVScodeテーマにしてはいい金額だ。 素材デザインテーマにしては悪くはないね。でも最も退屈で使い古された、果ては醜くてスタイル重視のデザインだ。 >数千行のコードからなるプロプライエタリソフトを作る事自体は問題ないし、労働の対価を求めるのは当然。問題なのは、実際には色の設定にお金が必要だと言うことが問題なんだ。これをグリフターが金を取る手段にしてるってことをはっきり言おう。 >バイトアンドスイッチは道徳的には悪いが、法的にはそうでもない。元々MITライセンスだし、プロプライエタリバージョンにすることも可能。許可されたコードの使用権は減らないしね。 >バイトアンドスイッチは道徳的には悪いが、法的にはそうでもない。法的な事は無関係だが、自由市場は消費者が選択の自由を持つから機能する。多くのプロジェクトがFOSSな理由で広まるのもそのせいだ。 >自由市場は消費者が選択の自由を持つから機能する。それは消費者が完全に情報を得られた場合のみ成り立つ。バイトアンドスイッチの場合、しばしば消費者が情報を得る前に切り替えが行われることが問題だ。 この条項どう思う?>”上記の著作権表示とこの許可表示はソフトウェアの全てのコピーまたは重要な部分に含まれなければならない” 元の著作権者ならできるってこと?旧Apacheライセンスのやつは消えないけど。 もし全ての著作権を持ってるなら可能だけど、他の人のオープンソースの貢献から著作権表示を消したら著作権侵害だよ。 Apache2だったんだよ、これ見て。>”https://github.com/Dramaga11/vsc-material-theme/blob/main/LI…” 歴史的合意を変更するのは詐欺だね。リポジトリの履歴を編集してライセンスを変えてしまったら。 問題だよね。PatreonとかGithubスポンサーで簡単にお金を要求できるようになったら、たくさんの人たちが少ない努力でお金を得ようとする。これが実際のところ。 お金を要求することが問題なわけじゃない。ただ、この人は他の人が正当に使ってるオープンソースのApache2版からお金を抽出しようとしたんだよね。市場での拡張機能を閉じたコードに切り替えた上に、悪意があるかもしれないし、もともと7600ドル集めた後にこれだから。 テーマ作りは簡単なことじゃないから、99.9999%の人が自分で作らずに既存のテーマを使うってこと。行数は関係ないよ。何千人もの人が彼の行数をローカル開発環境に依存させることにしたわけだし、これは大事なポイントだよ。もっとコメントを表示(1)
今後6ヶ月の間には権限モデルを追加する予定はないよ。
”Copilotの機能がセキュリティの優先事項を超えてしまったようだね。https://blogs.microsoft.com/blog/2024/05/03/prioritizing-sec…もっとコメントを表示(2)
1. VS Codeチームが今監査中で、もしマルウェアが見つかったらすぐにマーケットプレイスから削除して強制アンインストールする許可を出した。
2. コードベースを徹底的に監査したが、特に問題は見当たらなかった。
3. チェンジログ、分析、Open Collective、HTMLレンダリング関連のコードを全部削除したよ。少し気になる点は、チェンジログのためのHTML + サニティローダーくらいだったから、それを完全に取り除いた。2つのPRでほとんどの依存関係や7000行以上を削除したよ。
誰か監査してみたい人はここを見てね。
https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you
ウェブ開発者は新しい機能を取り入れたくても、ユーザーの一定%が古いバージョンを使ってるから、トランスパイラを使ったり複雑なシステムが生まれたりしてたんだよね。
Xcodeは例外かもしれないけど、Xcodeプラグインもあまりできることがない。
でも、悪意のある作者のサイトからこれを見つけたよ:
>”https://framerusercontent.com/images/G17CYe9tTL2GP1Rw4mUI8YC…”
悪意のある拡張が多すぎるんだから。
それ以外のものには”この拡張はあなたのデータを盗む可能性があります”って警告をでかく表示してもいいかも。
Pantoneが何か言いたそうだ。もっとコメントを表示(3)
これは相互排他的ではないね。
著作権表示を消したのは間違ってるのかな?
実はこれ結構影響あるんだよね…