1 points par GN⁺ 2025-02-27 | 1 commentaires | Partager sur WhatsApp
  • Des utilisateurs de VS Code ont indiqué que equinusocio.vsc-material-theme avait été supprimé avec le message signalé comme problématique, avec en plus un blocage de réinstallation ou des fenêtres pop-up répétées
  • La question posée dans le Q&A GitHub partait d’un doute sur la fiabilité des commentaires de la Marketplace, et la réponse retenue pointait vers une extension alternative de t3dotgg
  • Au cœur de la polémique : le passage en closed-source de l’extension, des soupçons d’obfuscation du code et la manière dont l’auteur a répondu aux avis, ce qui a érodé la confiance
  • Certains utilisateurs ont indiqué qu’une discussion sur un possible compromis de l’extension avait déjà eu lieu par le passé, en s’appuyant sur des commits supprimés, des discussions effacées et un post Reddit datant de six mois
  • Pour faire disparaître les pop-up répétées, certains ont dû supprimer manuellement le dossier de l’extension et l’entrée extensions.json dans .vscode ou .vscode-insiders/extensions, voire réinstaller complètement VS Code

Message de problème affiché par VS Code

  • Un utilisateur a indiqué que VS Code affichait le message We have uninstalled 'equinusocio.vsc-material-theme' which was reported to be problematic.
  • À chaque fermeture puis réouverture de VS Code, l’extension semblait se réinstaller, et le même message continuait d’apparaître même après une suppression manuelle
  • Un autre utilisateur a affirmé que VS Code bloquait aussi la réinstallation de l’extension
  • Certains ont avancé que Settings Sync pouvait être en cause, mais l’utilisateur concerné n’en était pas sûr, expliquant qu’il venait d’installer Code récemment et n’avait configuré qu’un minimum d’extensions

Réponse retenue et extension alternative

  • La réponse retenue propose t3dotgg.vsc-material-theme-but-i-wont-sue-you sur la Visual Studio Marketplace
  • L’auteur de la question a ajouté dans le texte que ce lien de réponse était étayé par le dépôt de t3dotgg
  • Un utilisateur a réagi en disant : « Maintenant, il y a de vraies conséquences, et c’était justement un jour où je devais travailler »

Polémique sur le code et la licence qui a sapé la confiance

  • Un utilisateur a cité comme problème le récent passage en closed-source sans avertissement préalable, ajoutant qu’après avoir vu les réponses grossières de l’auteur aux avis d’utilisateurs inquiets, il ne lui faisait plus confiance
  • Le même utilisateur a ajouté que le code obfusqué ressemblait à une sortie de obfuscator.io
  • Un autre utilisateur a affirmé que l’auteur de l’extension menaçait les personnes utilisant Material Theme dans leurs produits, en semblant oublier que le projet était à l’origine sous Apache License 2.0
    • Cet utilisateur a joint un lien vers ce qui semble être un ancien fichier de licence
    • Le même commentaire affirme aussi que l’historique des commits a été effacé pour donner l’impression qu’une autre licence s’appliquait depuis le début

Historique supprimé et soupçons plus anciens

  • Un utilisateur a indiqué qu’un grand nombre de commits et de discussions semblaient avoir été supprimés du dépôt Git
  • Le même utilisateur a retrouvé sur Reddit un post vieux de six mois, has_the_material_theme_extension_been_compromised, et a expliqué qu’il menait vers un lien de discussion cassé dans ce dépôt
  • Un autre utilisateur a réagi en disant que c’était « le seul thème de VSCode qu’il aimait », tandis qu’un autre a rappelé qu’il existait déjà de nombreux forks

Méthodes tentées pour faire disparaître les pop-up répétées

  • Un utilisateur Linux a supprimé manuellement le dossier de l’extension dans le répertoire .vscode, sans succès, puis a indiqué que la réinstallation de VS Code avait fait disparaître les pop-up
  • Un utilisateur Windows a expliqué avoir supprimé le dossier de l’extension sous %USERPROFILE%/.vscode/ puis retiré manuellement la définition correspondante dans extensions.json, ce qui a fait disparaître les pop-up
  • Un utilisateur de Visual Code Insiders a indiqué que cela avait refonctionné après avoir supprimé le dossier equinusocio.vsc-material-theme-34.7.9 dans .vscode-insiders/extensions puis retiré l’objet correspondant dans extensions.json
  • Les commandes d’exemple incluent une procédure pour repérer l’entrée equinusocio.vsc-material-theme avec cat extensions.json | jq | grep eq, puis supprimer le dossier de l’extension avec rm -rf equinusocio.vsc-material-theme-34.7.9

1 commentaires

 
GN⁺ 2025-02-27
Commentaires sur Hacker News
  • La publication supprimée est visible ici : https://web.archive.org/web/20250226020241/https://github.co...

  • Ici Isidor de l’équipe VS Code. Un membre de la communauté a effectué une analyse de sécurité approfondie de cette extension, a trouvé plusieurs signaux d’alerte suggérant une intention malveillante et les a signalés
    Les chercheurs en sécurité de Microsoft ont confirmé ces affirmations et ont en plus découvert du code suspect
    Nous avons bloqué cet éditeur sur le VS Marketplace, supprimé toutes les extensions concernées et retiré cette extension de toutes les instances de VS Code où elle était en cours d’exécution
    Pour être clair, cette mesure n’a rien à voir avec le droit d’auteur ou la licence, et est due uniquement à une malveillance potentielle
    Nous publierons bientôt une annonce plus détaillée sur https://github.com/microsoft/vsmarketplace/
    À noter que le VS Marketplace continue d’investir dans la sécurité, et vous pouvez consulter des informations sur la confiance dans l’exécution des extensions sur https://code.visualstudio.com/docs/editor/extension-runtime-...

    • VSCode n’arrive pas à supprimer cette extension. Une invite demandant sa suppression s’affiche ; si je confirme, la fenêtre se rafraîchit mais l’extension reste en place, puis la même invite « problème détecté » réapparaît en boucle infinie
      Même comportement si je la désinstalle normalement depuis le panneau des extensions
      J’ai finalement dû supprimer manuellement le dossier de l’extension dans %USERPROFILE%\.vscode\extensions, puis retirer aussi son entrée de %USERPROFILE%\.vscode\extensions\extensions.json
      VSCode 1.97.2, commit e54c774e0add60467559eb0d1e229c6452cf8447
    • J’aimerais qu’on m’explique un peu cette contradiction. Si l’on dépend de la communauté pour signaler les problèmes du Marketplace, cela ne veut-il pas dire que Microsoft n’investit pas assez dans l’audit direct des extensions populaires ?
      Je pense aussi que le modèle de confiance de VSCode est fondamentalement cassé. Il exécute du code tiers arbitraire sur la machine cliente sans aucun sandbox
      Vous ne déploieriez jamais un tel niveau de sécurité sur Azure, alors pourquoi l’« exécution de code tiers arbitraire sur la machine de quelqu’un d’autre » serait-elle acceptable dans VSCode ?
      J’apprécie le travail de l’équipe VSCode et je l’utilise réellement, mais l’absence de sandbox m’a toujours mis mal à l’aise
    • Il faudra peut-être aussi suivre les réuploads
      https://marketplace.visualstudio.com/items?itemName=t3dotgg....
    • J’aimerais aussi voir si Open VSX peut marquer cette extension comme malveillante. Je me demande si vous connaissez la plage de versions contenant le code malveillant
      Je pose la question parce que https://open-vsx.org ne propose pas les versions publiées après le passage de cette extension en source fermée
    • Les faux positifs, c’est vraiment pénible, et quand ça arrive, l’impact est important
      Le compte éditeur Equinusocio de Material Theme et Material Theme Icons a été signalé par erreur, et il a maintenant été rétabli
      Nous avons agi rapidement par précaution, mais nous avons commis une erreur. Ces thèmes ont déclenché plusieurs indicateurs internes de détection de malware chez Microsoft, et l’enquête a abouti à une mauvaise conclusion
      Nous prenons la sécurité de l’écosystème VS Code très au sérieux et avons agi vite pour protéger les utilisateurs
      Nous comprenons la frustration et la réaction vive de l’auteur des extensions Equinusocio, et nous avons entendu sa voix. C’est regrettable, mais ce genre de chose arrive parfois. Nous faisons de notre mieux, mais nous sommes humains nous aussi, et nous espérons maintenant clore cet épisode et aller de l’avant
      Nous clarifierons notre politique sur le code obfusqué et mettrons à jour nos scanners ainsi que nos procédures d’enquête afin de réduire la probabilité que cela se reproduise
      Ces extensions sont sûres et ont été rétablies pour que la communauté VS Code puisse les utiliser
      Material Theme : https://marketplace.visualstudio.com/items?itemName=Equinuso...
      Material Theme Icons : https://marketplace.visualstudio.com/items?itemName=Equinuso...
      Nous nous excusons à nouveau que l’auteur se soit retrouvé pris dans les conséquences de cette affaire, et attendons avec intérêt ses prochains thèmes et extensions. Nous l’avons contacté pour discuter de mesures de compensation et le remercions pour sa patience
      Scott Hanselman et l’équipe Visual Studio Code Marketplace - @shanselman
  • Il a créé le fork le plus en vue de cette extension, « Material Theme (But I Won't Sue You) »
    Le mainteneur d'origine a complètement dépassé les bornes l'an dernier. Il a retiré hors ligne le code source initialement sous Apache 2 et a commencé à menacer de poursuites ceux qui hébergeraient des versions alternatives ou l'intégreraient dans d'autres IDE
    Par simple précaution, j'ai pris les mesures suivantes sur mon fork. J'ai donné à l'équipe VS Code toute autorisation pour l'auditer immédiatement, et si le moindre malware est découvert, ils peuvent le retirer de la Marketplace sur-le-champ et forcer sa suppression chez les utilisateurs
    J'ai aussi audité en profondeur le codebase, sans rien y trouver qui paraisse malveillant, et j'ai supprimé tout le code lié au changelog, à l'analytics, à Open Collective et au rendu HTML
    Les seules choses qui me semblaient un peu inquiétantes étaient le HTML du changelog et le chargeur Sanity, donc je les ai entièrement retirés. En deux PR, j'ai supprimé la quasi-totalité des dépendances et plus de 7 000 lignes, dont la plupart venaient de package-lock
    Si quelqu'un d'autre veut auditer, le dépôt est ici : https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you

    • Le simple fait qu'un thème puisse embarquer du code d'analytics et autant de dépendances paraît absurde. Un thème devrait normalement être un ensemble autonome de couleurs/styles
      Encore plus délirant, c'est l'idée que quelqu'un puisse « forcer la suppression » de quoi que ce soit sur ma machine
      Heureux de ne pas être utilisateur de VS Code. On dirait qu'on retrouve toute la tambouille d'entreprise habituelle dans la Marketplace et les plugins
    • Je ne comprends pas pourquoi il n'y a pas une seule capture d'écran montrant à quoi ça ressemble, ni dans le dépôt ni sur la page Marketplace. J'ai raté quelque chose ?
  • Fait intéressant, quelqu'un sur Reddit avait remarqué des changements suspects dans cette extension il y a 7 mois [1]. Dans l'open source, l'obfuscation est généralement un signal d'alarme extrême
    Microsoft devrait sérieusement repenser le modèle de sécurité des extensions VS Code. Dans son état actuel, c'est devenu une cible bien trop rentable pour les attaques
    Même si l'on bloque un développeur, 10 nouvelles extensions malveillantes suivront
    [1] https://www.reddit.com/r/vscode/comments/1eq40o2/has_the_mat...

    • Il faut faire attention à ce qu'on souhaite
      VS Code est peut-être l'un des meilleurs produits que Microsoft ait jamais sortis, et l'une des grandes raisons, c'est la Marketplace des extensions
      Si Microsoft serre davantage la vis sur la Marketplace, il y a de fortes chances que la qualité de VS Code se dégrade
      Le raisonnement est le suivant : si l'examen de la Marketplace devient plus strict, la barrière à l'entrée monte et le nombre total d'extensions baisse. S'il y a moins d'extensions, Microsoft sera davantage incité à intégrer directement les fonctionnalités dans le cœur de VS Code. Et plus Microsoft en ajoute, plus VS Code va s'alourdir
      Au final, augmenter les audits de sécurité de la Marketplace des extensions pourrait conduire à un VS Code plus lourd
      Bien sûr, ce serait bien d'avoir de meilleurs contrôles de sécurité sur la Marketplace des extensions, mais je ne crois pas que Microsoft soit capable de le faire d'une manière qui améliore réellement le produit pour les utilisateurs
  • Après avoir lu ce qui s'est passé, cette personne paraît instable. On dirait qu'elle pense littéralement être propriétaire des codes couleur hexadécimaux
    Techniquement, ce n'est pas brillant non plus, et il a fait fuir toutes les personnes compétentes
    Je n'utilise pas son logiciel, mais j'espère qu'il tournera vite la page après cet épisode et qu'il apprendra qu'il n'a pas inventé Material

    • Pantone aurait sans doute son mot à dire
    • Certains l'ont qualifié de lunatic, mais c'est un sujet de sécurité. Il ne faut pas partir du principe qu'une personne qui a réussi à injecter du code malveillant dans les IDE de développeurs du monde entier est juste instable ou folle
      Il faut plutôt envisager qu'elle soit habile et trompeuse, ou même un intermédiaire pour un service de renseignement
      Ce n'est pas de la paranoïa que d'avoir ce genre de soupçons envers quelqu'un qui injecte du malware dans des outils de développement
  • Quelqu'un a mis en ligne l'extension alternative Material Theme (But I Won't Sue You)
    https://marketplace.visualstudio.com/items?itemName=t3dotgg....

    • Comme l'auteur original parlait beaucoup des coûts de développement/maintenance, je me suis demandé ce qu'il pouvait bien y avoir à maintenir
      J'ai cloné et parcouru le dépôt https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you, et voici le résumé en lignes de code
      CSS : 2 fichiers, 142 lignes, 119 lignes de code, 0 ligne de commentaire, 23 lignes vides
      TypeScript : 32 fichiers, 2026 lignes, 1650 lignes de code, 243 lignes de commentaire, 133 lignes vides
      HTML : 2 fichiers, 59 lignes, 49 lignes de code, 1 ligne de commentaire, 9 lignes vides
      Total : 36 fichiers, 2227 lignes, 1818 lignes de code, 244 lignes de commentaire, 165 lignes vides
      Parmi elles, 622 lignes de TypeScript sont des définitions de couleurs hexadécimales par variante dans scripts/generator/settings/specific
      Le reste ressemble aussi surtout à du code passe-partout, comme par exemple les 599 lignes de scripts/generator/color-set.ts
      La question reste donc entière. Qu'y a-t-il exactement à maintenir qui demande plus de quelques minutes ?
      J'ai publié et maintenu pendant des années des projets open source bien plus substantiels sans jamais attendre de contribution financière
    • La personne qui a créé l'extension alternative semble être le YouTuber tech theo (https://m.youtube.com/@t3dotgg)
    • Oh, c'est moi. Honnêtement, ça ne m'étonne pas que ce type ait un peu vrillé
  • Qu'est-ce que les thèmes Material ont donc pour rendre les gens comme ça ? Il y a environ 5 ans, il y avait déjà eu quelque chose de similaire du côté d'IntelliJ
    Cela dit, là-bas, ce n'était pas littéralement juste des couleurs

    • On dirait que tout ce qui est populaire et monétisable finit comme ça
  • Quelqu’un peut-il indiquer où se trouvait la partie malveillante dans le dépôt ? Je ne la trouve pas.
    J’ai trouvé le code obfusqué ici : https://web.archive.org/web/20250226020241/https://github.co...

  • C’est vraiment étrange que cette personne soit passée en source fermée après avoir reçu les contributions d’autres personnes. Ça ne me paraît pas correct, mais je ne suis pas spécialiste du droit d’auteur.

    • En règle générale, on considère que les contributions sont fournies sous la licence en vigueur à ce moment-là.
      Le mainteneur peut changer la licence, mais cela n’affecte pas les contributions passées. En pratique, tout ce qui précède le changement de licence reste sous l’ancienne licence.
      C’est pour cela que, même quand un logiciel populaire change de licence, un fork reste possible.
      Pour changer rétroactivement la licence, il faut l’accord des contributeurs, ou un document accordant ce pouvoir.
      Un contrat de licence contributeur (CLA) peut donner au mainteneur le droit de changer librement la licence, y compris pour les versions passées, mais tous les CLA ne le permettent pas.
      Parmi les logiciels connus ayant changé de licence, on peut citer Redis et Terraform. Même dans ces cas, les versions déjà distribuées restent utilisables sous l’ancienne licence, et cette ancienne licence autorise le fork.
    • D’ailleurs, est-ce que Material était vraiment son œuvre à lui au départ ?
    • C’est similaire à de nombreux projets open source principalement maintenus par des entreprises, comme Red Hat ou Terraform, qui passent à du non commercial.
  • C’est bien qu’aujourd’hui la plupart des outils incluent par défaut des thèmes plutôt bien conçus.
    Si l’on veut réduire ce type de risque et minimiser le nombre d’extensions/add-ons installés, c’est une option tout à fait réaliste.
    Bien sûr, c’est aussi appréciable de pouvoir personnaliser un logiciel à ce point, et dans certains cas cela peut améliorer l’ergonomie et l’accessibilité.
    En revanche, les demandes de fonctionnalités liées à la limitation des permissions devraient être traitées.

    • Le simple fait qu’un thème puisse représenter un risque de sécurité est surprenant.
      Manifestement, il ne s’agit pas uniquement de simples codes couleur et définitions.
      Il faudrait sans doute rendre le système de thèmes beaucoup plus strict.