Des chercheurs démontrent qu'une fausse extension VS Code peut être installée plus d'un millier de fois en 48 heures
en faisant passer la fausse extension pour un paquet populaire existant

Alors que les extensions de Visual Studio Code font de lui l'éditeur de code le plus populaire, elles pourraient également représenter une grande menace pour les développeurs et leurs organisations. Les chercheurs d'Aqua Security ont récemment montré à quel point il est facile de distribuer une extension pour VS Code qui se fait passer pour un paquet populaire, mais qui provient en fait d'une source non fiable et potentiellement dangereuse. Cette méthode d'attaque, appelée "attaque par mascarade" ou usurpation d'identité par les chercheurs, pourrait servir de point d'entrée à une attaque contre de nombreuses organisations.

VS Code est l'outil de développement le plus populaire au monde ; une enquête menée par StackOverflow a révélé que 74,48 % des développeurs l'utilisaient. Selon les analystes, cela est en partie dû à l'énorme gamme d'extensions disponibles, et les développeurs s'appuient sur les extensions pour personnaliser l'éditeur selon leurs besoins. Ces extensions proviennent le plus souvent de VS Code Marketplace, qui est intégré à l'éditeur. Les développeurs peuvent trouver et installer des extensions à partir du Web ou de VS Code lui-même. En général, ils peuvent taper un mot de recherche tel que "Rust" ou "Svelte", qui renvoie une liste d'extensions correspondantes.

La recherche renvoie également le nombre de fois où une extension a été téléchargée et l'évaluation des utilisateurs. Certaines extensions permettent simplement de changer la couleur du thème de l'éditeur. Cependant, toutes les extensions s'exécutent avec les privilèges de l'utilisateur qui a ouvert VS Code sans aucune sandbox. Cela signifie qu'une extension peut installer n'importe quel programme sur votre ordinateur, y compris des ransomwares, des wipers, etc. En fait, elle peut accéder et même modifier tout le code que vous avez localement et même utiliser votre clé SSH pour modifier le code dans tous les dépôts distants de votre organisation.

Nom : Aqua-Security-landing-page-Comparison-Image.jpg
Affichages : 6959
Taille : 39,1 Ko

Plusieurs dispositifs permettent de protéger les développeurs contre les extensions malveillantes. Microsoft assure qu'une "analyse antivirus est effectuée pour chaque nouvelle extension et pour chaque mise à jour d'extension. Tant que l'analyse n'est pas claire, l'extension n'est pas publiée sur Marketplace pour un usage public". En outre, des efforts sont déployés pour empêcher le "name squatting", c'est-à-dire le fait qu'un nom d'éditeur soit délibérément similaire à un nom bien connu. Les développeurs peuvent également observer si une extension a une coche bleue, ce qui signifie que l'éditeur a prouvé la propriété d'un domaine Web.

Toutes ces fonctionnalités sont utiles, mais les chercheurs d'Aqua Security affirment que "c'est un défi, même pour les développeurs conscients de la sécurité, de distinguer les extensions malveillantes des extensions bénignes". Ils notent plusieurs points pour étayer cette affirmation :

  • n'importe qui peut s'inscrire en tant qu'éditeur d'extension, même en utilisant une nouvelle adresse électronique jetable ;
  • le nom de l'extension et le nom de l'éditeur d'une extension ne sont pas nécessairement uniques, mais peuvent copier le nom d'une extension existante. Dans l'exemple donné, les chercheurs ont publié une extension appelée Pretier qui s'est affichée sous le nom de Prettier (image ci-dessus), le même nom qu'un module complémentaire populaire de formatage de code ;
  • la coche bleue pour un éditeur prouve uniquement la propriété d'un domaine. « Un éditeur pourrait acheter n'importe quel domaine et l'enregistrer pour obtenir cette coche vérifiée », expliquent les chercheurs ;
  • le nombre de téléchargements et de critiques est utile, mais ces éléments peuvent être scriptés et falsifiés afin d'obtenir des chiffres d'apparence respectable.


L'équipe d'Aqua Security n'a pas réussi à démontrer qu'une extension malveillante pouvait passer outre les contrôleurs de virus de Microsoft, mais elle a réussi à faire installer une fausse version de Prettier plus de 1 000 fois en 48 heures. Le succès de la fausse version est dû à l'utilisation d'une faute d'orthographe courante. Si un développeur effectuait une recherche imprudente en tapant Pretier (au lieu de Prettier pour obtenir la bonne extension), la fausse extension était le seul résultat de la recherche. Selon les chercheurs, si Pretier était une extension malveillante, les dégâts pourraient être considérables pour les développeurs.

Nom : real_yellow_background_with_numbers.jpg
Affichages : 1475
Taille : 22,4 Ko

Si vous regardez de plus près le point 1 qui pointe vers l'URL, vous pouvez voir deux différences à la fois dans le nom de l'éditeur (esbenp vs espenp) et dans le nom de l'extension (prettier-vscode vs pretier-vscode). Lorsque vous recherchez l'extension Prettier, l'extension Pretier apparaît à la 26e place, ce qui présente un risque faible. « Nous pourrions être en mesure d'influer sur le classement en augmentant le taux de téléchargement et d'étoiles, mais cela reste discutable. Toutefois, lorsque l'on tape "pretier", ce que les développeurs pourraient très bien faire par inadvertance, notre extension est le seul résultat », explique l'équipe.

Une petite variation de l'URL, telle que l'omission de la lettre "t" ou la transformation de "b" en "p", est appelée typosquattage. Il s'agit d'une technique populaire utilisée par les attaquants pour tromper les développeurs. D'autres registres ont lutté contre cette technique et n'autorisent généralement pas les utilisateurs à créer de nouveaux paquets présentant de telles similitudes. Selon le site Web des directives de Microsoft, les extensions officielles de Microsoft et de Red Hat sont protégées du typosquattage. Cependant, dans ce cas, VS Code Marketplace a permis de créer un paquet imitant un paquet très populaire.

Cela a amené les chercheurs à se demander si des protections similaires sont déployées sur la place de marché VS Code et dans le cas contraire, s'il est possible de déployer de telles protections, au moins pour empêcher les attaquants de se faire passer pour des extensions populaires. Alors qu'il y a beaucoup d'histoires sur des paquets malveillants identifiés sur des gestionnaires de paquets populaires tels que NPM et PyPI, il existe très peu d'informations sur les extensions malveillantes de VS Code. Selon l'équipe, lorsque recherche sur le Web, on trouve peu de résultats, et ceux qui reviennent concernent des vulnérabilités dans VS Code ou ses extensions.

Nom : fake_yellow_background.jpg
Affichages : 1482
Taille : 25,0 Ko

Selon les chercheurs, le cœur du problème est que, comme dans le cas des grands dépôts de paquets tels que NPM ou PyPi, il est trop coûteux de faire vérifier chaque soumission par un humain, de sorte que les vérifications doivent être automatisées. Microsoft dispose d'une "kill list" afin que la désinstallation soit automatique une fois connue. Il est également important de noter que les extensions VS Code sont écrites en Node, et que les paquets sont téléchargés depuis NPM. Par conséquent, il existe un risque réel qu'un développeur légitime non averti utilise sans le savoir un paquet malveillant de NPM comme dépendance pour son extension.

Ce qui peut conduire à la compromission de l'extension entière et mettant involontairement la communauté en danger. En plus des extensions VS Code, Marketplace propose également des extensions pour Visual Studio et Azure DevOps. À première vue, elles sont également vulnérables à la tromperie visuelle du masquage. Cependant, l'équipe affirme n'avoir pas poursuivi ces pistes dans ce cycle de recherche.

Source : Aqua Security

Et vous ?

Que pensez-vous de l'expérience des chercheurs d'Aqua Security ?
Selon vous, comment les développeurs peuvent éviter ce type d'attaque ?
Selon vous, comment Microsoft pourrait améliorer la sécurité de VS Code Marketplace ?

Voir aussi

25 bibliothèques JavaScript malveillantes distribuées via le référentiel de packages NPM officiel, les chercheurs attribuent ce travail à des « auteurs novices de logiciels malveillants »

Le framework PyTorch ciblé par une attaque de confusion de dépendance, l'individu derrière la dépendance contrefaite "torchtriton" prétend être un hacker éthique malgré le vol de fichiers sensibles

PyPI : des paquets Python volent les clés AWS des utilisateurs et les envoient vers des sites non sécurisés et accessibles au public, selon un rapport

Le paquet PyPI "keep" aurait inclus par erreur un voleur de mots de passe, le mainteneur aurait involontairement introduit une dépendance malveillante par une faute de frappe