Les cybercriminels utilisent les extensions VSCode comme nouveau vecteur d’attaque

L’environnement de développement intégré (IDE) Visual Studio Code de Microsoft est utilisé par jusqu’à 75 % des développeurs, de sorte que tout problème de sécurité peut avoir des conséquences considérables. Et les chercheurs d’Aqua Nautilus en ont découvert un important. Ils ont signalé au début du mois que l’éditeur VSCode pouvait être vulnérable à des attaques ciblant ses extensions. Cet IDE gratuit, open source […]

Écrit par
Julien Maury
Julien Maury
Jan 24, 2023
5 minute read
eSecurity Planet Le contenu et les recommandations de produits sont indépendants de la rédaction. Nous pouvons gagner de l'argent lorsque vous cliquez sur des liens vers nos partenaires. En savoir plus

L’environnement de développement intégré (IDE) Visual Studio Code de Microsoft est utilisé par jusqu’à 75 % des développeurs, de sorte que tout problème de sécurité peut avoir des conséquences considérables. Et les chercheurs d’Aqua Nautilus en ont découvert un important.

Les chercheurs ont signalé au début du mois que l’éditeur VSCode pouvait être vulnérable à des attaques ciblant ses extensions. Cet IDE gratuit, open source et multiplateforme est très facile à utiliser, et les développeurs peuvent installer en un clic littéralement des milliers d’extensions gratuites pour accélérer leur travail.

Ces extensions sont généralement écrites avec Node, et les paquets sont téléchargés depuis NPM, ce qui rend possibles les classiques attaques de la chaîne d’approvisionnement contre l’éditeur de code. De plus, ces paquets NPM ont leurs propres dépendances : la compromission peut donc venir de pratiquement n’importe où dans la chaîne.

Les chercheurs ont utilisé des techniques d’usurpation pour démontrer la faisabilité de leur attaque. Ils se sont fait passer pour Prettier, une extension extrêmement populaire utilisée par les développeurs pour formater le code : « En un peu moins de 48 heures, nous avons obtenu plus d’un millier d’installations par des développeurs actifs du monde entier ! »

Même si tous les utilisateurs ne sont pas tombés dans le piège, des milliers d’installations suffisent largement à causer de graves dommages, comme le vol d’identifiants ou l’exfiltration d’informations confidentielles.

Les chercheurs ont utilisé le typosquattage classique

Au lieu de « prettier-vscode », les chercheurs ont utilisé « pretier-vscode », avec un seul « t », dans l’URL de l’extension sur la marketplace. La faute de frappe est facile à commettre, et seuls l’URL et quelques autres détails diffèrent, car les chercheurs ont pu utiliser le même logo, le même nom, la même description et même une copie exacte du fichier readme original.

Si un utilisateur saisissait « pretier » dans la barre de recherche, il n’obtiendrait même pas l’extension légitime dans la liste, car seule la version typosquattée porte ce nom.

Cette approche est largement utilisée par les acteurs malveillants sur d’autres marketplaces comme NPM et PyPI, mais les extensions VSCode malveillantes semblent se multiplier, grâce à sa position dominante sur le marché.

Advertisement

Selon les chercheurs, le danger est élevé pour deux raisons principales :

  • n’importe qui peut publier une extension qui pourrait être répertoriée dans la Marketplace
  • toutes les extensions s’exécutent avec les privilèges de l’utilisateur qui a ouvert VSCode, sans aucun bac à sable

Voir les principaux outils de débogage et de sécurité du code

Identifier les extensions malveillantes

Il n’est pas facile de repérer les extensions malveillantes. Regardez la capture d’écran ci-dessous :

VSCode Extensions as attack vector

Vous remarquerez que le nombre de téléchargements est inhabituellement faible pour une extension aussi connue : 2 k contre 27 M pour l’originale. C’est pareil pour le nombre d’évaluations : 2 contre 370.

Cependant, les chercheurs ont pu reproduire presque tout le reste, car les noms d’affichage et les titres n’ont pas à être uniques sur la plateforme. De plus, le nombre de téléchargements ou d’étoiles peut être augmenté artificiellement pour gagner encore en crédibilité.

Il existe d’autres différences, comme la date de la première publication (2022 contre 2017), mais si vous ne faites pas attention à ces détails, il est facile de tomber dans le piège, surtout lorsque vous manquez de temps pour vérifier complètement la source.

Pire encore, n’importe qui peut obtenir la coche « Verified » à côté de son nom en prouvant simplement qu’il est propriétaire du nom de domaine de son choix. Le terme « Verified » peut être trompeur pour de nombreux utilisateurs, selon les chercheurs.

Tous les registres sont exposés

La preuve de concept est plutôt convaincante, mais ce problème ne concerne pas uniquement la marketplace de VSCode. L’idée même de ces écosystèmes est que n’importe qui peut partager une extension susceptible de devenir très populaire.

Même si les plateformes effectuent des analyses approfondies pour détecter les virus et autres logiciels malveillants connus, rien n’empêche une extension de demander l’accès à des URL autorisées (ou « non blacklistées »), comme un dépôt GitHub apparemment légitime contenant des charges malveillantes. Ces faux dépôts finissent par être signalés et supprimés, mais le mal est fait.

Les chercheurs ont également souligné que des développeurs légitimes pouvaient introduire du code vulnérable sans le vouloir. Il est parfois difficile de distinguer de mauvais choix de programmation d’une intention malveillante.

Comment atténuer la menace liée à VSCode

Advertisement

Il convient de noter que ce nouveau vecteur d’attaque n’a pas encore été observé dans la nature, ce qui pourrait expliquer le peu d’informations disponibles à son sujet.

La recommandation la plus évidente pour les développeurs est de redoubler de vigilance lors de l’installation d’une extension dans leur IDE préféré. N’utilisez que des sources fiables, mais sachez reconnaître les techniques courantes employées par les acteurs malveillants, comme le typosquattage et l’usurpation.

L’excuse du manque de temps n’est finalement pas acceptable. En tant que développeur, vous avez une responsabilité : il vaut donc la peine de consacrer davantage de temps à examiner attentivement vos outils.

Cependant, comme les attaquants peuvent exploiter d’autres techniques, telles que l’ingénierie sociale pour inciter leurs victimes à télécharger des applications malveillantes, des mesures supplémentaires peuvent aider les développeurs à limiter ces menaces :

  • Il est acceptable de tester un nouvel outil pendant votre temps libre (dans une machine virtuelle, par exemple), mais pas dans votre environnement de travail.
  • Examinez toutes les autorisations et fonctionnalités demandées : pourquoi le programme a-t-il besoin d’un accès root ? Est-ce justifié ? Existe-t-il de meilleures solutions ?
  • Si les extensions doivent « s’exécuter en votre nom », recensez vos propres privilèges et n’hésitez pas à supprimer les autorisations inutiles si c’est possible. Avez-vous besoin en permanence d’un compte administrateur ?
  • Privilégiez les environnements sandbox et autres mécanismes d’isolation : activez-les (ils ne le sont pas nécessairement par défaut) ou installez un paquet dédié qui confinera les applications et les processus.
  • Protégez vos comptes avec l’MFA/2FA.

De toute évidence, le principe du moindre privilège et les conteneurs peuvent contribuer à atténuer considérablement la menace. Dans ce cas précis, les utilisateurs peuvent également recourir à « Worskspace trust » et au « Restricted Mode ».

VSCode Extensions restricted mode

Dans ce mode, les extensions peuvent être désactivées automatiquement ou voir leurs fonctionnalités limitées.

Ce n’est toutefois pas magique, car cela dépend des indications de l’auteur. Il est donc peu probable que des acteurs malveillants « évaluent leurs extensions à la recherche d’éventuelles vulnérabilités de sécurité et déclarent qu’elles offrent une prise en charge limitée lorsqu’elles s’exécutent en Restricted Mode », comme le demande VSCode.

Une meilleure approche consisterait, à mon avis, à suivre les recommandations suivantes pour les équipes de développement : partager et examiner les nouveaux outils, ou tenir à jour une liste des extensions courantes à installer pour les nouveaux membres. La bonne nouvelle, c’est que cela peut être automatisé par script et versionné dans .vscode/extensions.json :

{
"recommendations": [ "esbenp.prettier-vscode" ]
}

Ainsi, toute personne qui clone le dépôt du projet peut installer automatiquement les bonnes extensions.

Advertisement

À lire ensuite : Comment prévenir les attaques visant la chaîne d’approvisionnement logicielle

Julien Maury

eSecurity Planet contributor Julien Maury writes about penetration testing, code security, open source security and more. He is a backend developer, a mentor and a technical writer who enjoys sharing his knowledge and learning new concepts.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Propriété de TechnologyAdvice. © 2026 TechnologyAdvice. Tous droits réservés

Divulgation publicitaire : Certains des produits qui apparaissent sur ce site proviennent d'entreprises dont TechnologyAdvice reçoit une compensation. Cette compensation peut influencer la façon dont les produits apparaissent sur ce site, notamment l'ordre dans lequel ils apparaissent. TechnologyAdvice n'inclut pas toutes les entreprises ou tous les types de produits disponibles sur le marché.