Les dveloppeurs peuvent-ils faire confiance aux extensions tlcharges pour le populaire diteur de code Visual Studio de Microsoft*? Les chercheurs d’Aqua Nautilus disent avoir dcouvert que les attaquants pouvaient facilement se faire passer pour des dveloppeurs lgitimes d’extensions populaires et inciter les dveloppeurs inconscients les tlcharger.
Et certaines extensions en ont peut-tre dj fait les frais, a not Ilay Goldman, chercheur en scurit pour le compte d’Aqua Nautilus, dans un billet de blog. Il peut tre difficile de faire la distinction entre les extensions malveillantes et bnignes, et le manque de capacits de sandbox signifie que les extensions pourraient installer des ransomwares, des wipers et d’autres codes malveillants, a prcis Goldman. Un code d’utilisateur pourrait galement tre consult.
Les extensions VS Code, qui offrent des fonctionnalits allant de la prise en charge du langage Python l’dition de fichiers JSON, peuvent tre tlcharges partir de Visual Studio Code Marketplace de Microsoft. Aqua Nautilus a mis en ligne une extension se faisant passer pour le formateur de code Prettier et a vu plus de 1 000 installations en moins de 48 heures, dans le monde entier. Nous en parlerons un peu plus par la suite.
Vous vous tes peut-tre demand ce que peut faire une extension VSCode. Certaines changent simplement la couleur du thme de l’EDI. Cependant, toutes les extensions s’excutent avec les privilges de l’utilisateur qui a ouvert le VSCode sans sandbox. Cela signifie que l’extension peut installer n’importe quel programme sur votre ordinateur, y compris les ransomwares, les wipers, etc. En fait, il peut accder et mme modifier tout le code que vous avez localement et mme utiliser votre cl SSH pour modifier le code dans tous les rfrentiels de votre organisation dans GitHub*! L’impact que cela peut avoir pourrait tre norme.
Les diffrences entre l’extension lgitime et son imitation, comment peuvent-elles se prsenter ?
Alors que les mdias regorgent d’histoires sur des packages malveillants qui ont t tlchargs sur des gestionnaires de packages populaires tels que NPM et PyPI, il existe trs peu d’informations sur les extensions VSCode malveillantes. Nous nous sommes demand si c’tait parce que ce vecteur d’attaque tait moins populaire ou si la communaut de la scurit l’avait compltement rat ?
Lors de la recherche sur le Web d’extensions VSCode malveillantes, il y a peu de rsultats, et celles qui renvoient des requtes concernent des vulnrabilits dans VSCode ou ses extensions. ce stade, nous devons souligner qu’une extension vulnrable n’est pas ncessairement malveillante.
Notre objectif ici est de faire la lumire sur les menaces de scurit qui peuvent tre utilises par les attaquants via le VSCode MarketPlace. L’une de ces menaces est l’usurpation. Lorsque quelqu’un cre une extension qui ressemble une autre extension populaire, le seul but est d’inciter les dveloppeurs sans mfiance tlcharger une extension prtendant tre quelque chose qu’elle n’est pas. Par exemple, nous avons choisi l’extension populaire VSCode Prettier et avons cr une nouvelle extension qui se fait passer pour elle. Maintenant, comparons les similitudes et les diffrences entre ces extensions :
Pouvez-vous reprer la diffrence? Regardons de plus prs le haut de la page.
Lgitime
Usurpation
Si nous examinons de plus prs le #1 qui pointe vers l’URL, nous pouvons voir exactement deux diffrences la fois dans le nom de l’diteur (esbenp vs espenp) ainsi que dans le nom de l’extension (prettier-vscode vs pretier-vscode). Lorsque vous recherchez l’extension Prettier, notre extension d’imitation apparat la 26e place, ce qui prsente un faible risque. Nous pourrons peut-tre affecter le classement en augmentant le tlchargement et le nombre d’toiles, mais cela reste discutable. Nanmoins, lorsque vous tapez « pretier » [sans les deux « t »], ce que les dveloppeurs pourraient trs bien faire par inadvertance, notre extension usurpe est le seul rsultat. Nous pouvons supposer que cela reprsenterait un risque lev pour ceux qui ont commis cette erreur.
Une petite variation dans l’URL, telle que l’omission d’une lettre « t » ou la transformation de « b » en « p », est appele typosquatting. Il s’agit d’une technique populaire utilise par les attaquants pour tromper les dveloppeurs. D’autres registres ont combattu cette technique et n’autorisent gnralement pas les utilisateurs crer de nouveaux packages prsentant de telles similitudes. Selon le site Web des directives de Microsoft, les extensions officielles de Microsoft et de Red Hat sont protges contre le typosquattage. Cependant, dans ce cas, le march VSCode nous a permis de crer un package d’emprunt d’identit pour un package trs populaire. Cela nous amne nous demander si le VSCode Marketplace a dploy des protections similaires et, sinon, s’il est possible de dployer de telles protections, au moins afin d’empcher les attaquants de se faire passer pour des extensions populaires.
ce stade, nous souhaitons nous concentrer sur les lments avec le fond jaune dans les captures d’cran ci-dessus. Nous trouvons ces lments plus percutants.
Dans la capture d’cran ci-dessus, #2 identifie le nom de l’diteur de l’extension tandis que #3 identifie le nom de l’extension. tonnamment, nous avons pu crer un nom qui est une rplique exacte d’une extension trs populaire. Ceci est autoris car lors de la cration d’une nouvelle extension, vous la crez sous une proprit appele « displayName » qui est le nom de l’extension et le nom de l’diteur qui est affich dans la page de l’extension. Ces noms n’ont pas besoin d’tre uniques et, par consquent, n’importe qui peut entrer presque n’importe quelle valeur souhaite sous ces noms. Pour cette raison, n’importe qui peut se faire passer pour presque n’importe quelle extension !
De plus, #4 et #5 identifient respectivement le nombre d’installations et le nombre d’toiles. Actuellement, les chiffres sont assez faibles. Cependant, au fil du temps, un nombre croissant d’utilisateurs inconnus auront tlcharg notre fausse extension. Au fur et mesure que ces chiffres augmenteront, l’extension gagnera en crdibilit. De plus, comme sur le dark web, il est possible d’acheter divers services, un attaquant extrmement dtermin pourrait potentiellement manipuler ces chiffres en achetant des services qui gonfleraient le nombre de tlchargements et d’toiles.
Ensuite, zoomons sur le ct infrieur droit de l’extension et faisons une autre comparaison.
Section Plus d’infos de l’extension lgitime face l’imitation
#6 identifie les informations sur l’extension dans le rfrentiel GitHub. tonnamment, n’importe qui peut saisir la valeur de son choix sans validation ni confirmation du fait que cette extension est rellement lie au registre.
#7 identifie la section « Plus d’infos ». Ici, nous pouvons voir la date de sortie et les dernires dates de mise jour. Cette section est plus difficile usurper. Enfin, #8 identifie o vous pouvez voir l’identifiant unique de l’extension qui est similaire ce qui a t montr ci-dessus dans l’URL, #1.
Microsoft a publi des directives sur la faon de dcider si une extension VSCode est digne de confiance*:
Cependant, nous avons dj vu qu’un utilisateur enregistr anonyme peut facilement revendiquer la proprit de n’importe quel projet dans GitHub. Pour leur dfense, presque tous les registres manquent de ces protections.
Ne laissez pas le terme « vrifi » vous tromper
Le march VSCode utilise une coche bleue en forme de √ prs du nom de l’auteur. Dans cette section, nous discuterons de la diffrence entre ce que cela peut reprsenter et ce que cela signifie rellement.
En rgle gnrale, nous nous attendons ce qu’un diteur avec une coche bleue signifie que la plate-forme a vrifi que l’diteur est bien celui qu’il prtend tre.
Cependant, sur MarketPlace, la coche bleue vrifie signifie simplement que l’diteur, quel qu’il soit, a prouv la proprit d’un domaine. Cela signifie n’importe quel domaine. En ralit, un diteur pourrait acheter n’importe quel domaine et l’enregistrer pour obtenir cette coche vrifie.
Jetons un coup d’il un exemple de la faon dont cela est affich dans le Marketplace.
Exemple d’diteur vrifi
Dans ce cas, une icne de vrification s’affiche, mais elle apparat ct de « Sam McLeod » qui est le « displayName » attribu l’diteur. Comme indiqu ci-dessus dans la comparaison entre lgitime et malveillant, le « displayName » « Prettier » peut tre facilement imit.
Que se passe-t-il si un attaquant obtient une coche d’diteur vrifi, met jour son « displayName » sur « Prettier », puis tlcharge une extension malveillante*?
La rponse probable est que mme les dveloppeurs les plus vigilants installeraient cette extension malveillante « Prettier », sans parler du fait que l’diteur original de Prettier, esbenp, n’a pas vrifi un domaine.
Extensions VSCode malveillantes sur MarketPlace
Au cours de nos recherches, nous avons trouv plusieurs extensions VSCode suspectes rsidant sur MarketPlace, bien qu’il ne soit toujours pas clair si ces extensions ont t rellement cres par des attaquants et tlcharges sur le march VSCode, ou si elles ont t cres avec de mauvais choix de codage conduisant un code vulnrable.
Par exemple, avec les extensions API Generator Plugin et code-tester , creusons le code qui compose le code-tester .
Code interne du code-tester
Dans la capture d’cran ci-dessus, vous pouvez voir la fonction d’activation qui s’excute aprs l’installation et chaque dmarrage de VSCode. Dans cette fonction, le code envoie une requte une URL externe avec un sous-domaine ddi (« http://$[hostname].robotnowai.top/vscode ») qui est le nom d’hte de votre serveur. Une fois qu’il reoit la rponse de l’URL, il excute les donnes de rponse l’aide de la fonction eval. Cette demande se produit toutes les 30 secondes.
De plus, puisque la communication utilise HTTP plutt que HTTPS, elle est vulnrable aux attaques Man in the Middle, permettant d’autres acteurs malveillants d’injecter du code malveillant lorsque cette extension est utilise.
Ces extensions ont t signales Microsoft.
Le POC
Aprs avoir trouv les mauvaises extensions ci-dessus qui n’taient ni des tentatives avances ni des tentatives d’usurpation, nous avons vu une surface potentielle d’usurpation sur le Marketplace, nous avons dcid de crer un POC.
Nous avons tlcharg une extension POC, qui est illustre ci-dessus, se faisant passer pour Prettier, l’une des dix extensions les plus installes sur le march. Elle est configur pour nous envoyer un ping chaque installation.
Le nombre d’installations est devant vous*:
En un peu moins de 48 heures, nous avons obtenu plus d’un millier d’installations par des dveloppeurs actifs du monde entier*! Maintenant, imaginez un vritable attaquant (ce qui donnerait l’extension beaucoup plus de temps pour tre active et donc gagnerait en crdibilit), avec une vritable extension malveillante, installe sur de nombreuses machines de dveloppeurs compromettant de nombreuses organisations. L’impact de cette situation est critique.
La raction de Microsoft
Des techniques d’ingnierie sociale ont t utilises pour persuader les victimes de tlcharger une extension malveillante, a dclar Microsoft. Visual Studio Code dispose galement d’une fonctionnalit Workspace Trust pour aider les utilisateurs dcider si le code d’un projet ou d’un dossier peut tre excut par l’diteur ou par des extensions sans l’approbation explicite de l’utilisateur. Les dossiers peuvent tre laisss en mode restreint pour empcher l’excution si le code n’est pas approuv.
Pour aider assurer la scurit et la protection des clients, nous analysons les extensions la recherche de virus et de logiciels malveillants avant qu’elles ne soient tlcharges sur le Marketplace et nous vrifions qu’une extension possde un certificat Marketplace et une signature vrifiable avant d’tre installe. Pour aider prendre des dcisions claires, nous recommandons aux consommateurs de consulter les informations, telles que la vrification du domaine, les valuations et les commentaires, afin d’viter les tlchargements indsirables.
Nanmoins, Goldman a averti que la menace des extensions malveillantes de Visual Studio Code est relle. Les extensions VS Code peuvent galement tre tlcharges partir de NPM, qui fait galement face des menaces de scurit, a not Goldman.
Source : Aqua Nautilus
Et vous ?
Quels outils utilisez-vous pour vos dveloppement ?
O tlchargez-vous vos extensions ?
Accordez-vous une attention particulire la scurit lorsque vous tlchargez vos extensions ?
Que pensez-vous de ce vecteur d’attaques ?