JA_NPM

Étude de cas sur les inondations du NPM : « Au fond du terrier du lapin à la recherche d'un thé »

At Xygéni, nous avons été occupés au cours de l'année écoulée à mettre en œuvre un système complet qui surveille les registres publics de packages open source à la recherche d'activités suspectes ou de codes intrinsèquement malveillants.

Cette infrastructure nous permet d'analyser en temps réel tous les packages publiés quotidiennement. Cela nous permet également de surveiller les comportements anormaux des utilisateurs.

Si la présence de codes malveillants dans les registres de packages est bien connue, il existe d'autres comportements étranges ou inhabituels qui passent complètement inaperçus auprès des utilisateurs réguliers de ces registres. Même pour ceux d’entre nous qui les surveillent de près, il n’est pas facile de trouver une raison ou une explication à un tel comportement.

Ce qui caractérise l'équipe Xygeni, c'est notre persévérance face à un problème, c'est pourquoi nous avons approfondi cela.

Tout a commencé avec un pic de statistiques

Comme je l'ai mentionné plus tôt, dans le cadre de notre infrastructure, nous surveillons de nombreuses mesures d'activité dans les registres publics de packages open source.

Fin mars, ma collègue Carmen a tiré la sonnette d'alarme. Nous avons commencé à observer un écart important dans le nombre de packages publiés sur NPM. Après un premier examen, nous avons constaté que cet écart était principalement dû à un nombre relativement faible d’utilisateurs dont le taux de publication de packages avait soudainement grimpé en flèche.

Cela nous a incité à revoir notre processus et ses données associées au sein de la plateforme. Heureusement, notre examen a déterminé que les données semblaient correctes, mais cela était aussi quelque peu déroutant !

Après une inspection plus approfondie, nous avons constaté que ces packages partageaient plusieurs caractéristiques communes :

  • Les éditeurs étaient des utilisateurs nouvellement créés, âgés d'au plus un ou deux mois.
  • Les packages portaient des noms apparemment aléatoires, probablement générés à l'aide d'un dictionnaire. Nous pouvons trouver des noms de packages portant des noms étranges comme énorme_mite-smiletea, erick-mangut94-sukiwir, exotique_reptile-appteadev or évident_tuna-appteadev. Nous inclurons une annexe avec quelques exemples des atouts que nous avons trouvés.
  • Le contenu de ces packages était très similaire, souvent le même.

Dans ce contexte, nous avons observé qu'un des packages incluait un script Python, peut-être par accident, qui semble être utilisé pour publier automatiquement les packages.

NPM

Démêler le net

L'activité de publication de certains de ces éditeurs au cours du dernier mois a été réalisée selon le calendrier suivant :

 

attaque npm

Voici les statistiques complètes liées à cet événement que nous pouvons partager :

vérification npm

Rien de pertinent n’est ressorti de l’examen individuel de certains des packages associés à ces utilisateurs. Cela nous a amené à analyser l’image globale de chacun d’eux, à la recherche de modèles qui pourraient fournir des indices sur ce succès.

Après tout, nous avons une bonne poignée de packages à analyser :

attaque npm 2

Voici les points clés que nous pouvons souligner de l’analyse :

  • De nombreux packages NPM sont interdépendants. Certains sont référencés comme dépendances des autres.
  • Bien qu'il s'agisse de packages étranges et que personne ne connaisse probablement leur existence, certains ont de nombreux téléchargements hebdomadaires. Il est difficile d'accepter qu'un utilisateur normal veuille télécharger des packages comme 0mc03esisd
  • Certains ont des référentiels associés. Parfois, les propriétaires de ces référentiels semblent être des comptes factices, similaires à ceux de npm.

Remarque : Les utilisateurs téléchargent des packages supplémentaires par vagues, les données fournies peuvent donc varier légèrement.

attaque npm 2

Ceci est un exemple de l'un des référentiels associés. Il contient le code de certains des packages publiés. Aussi quelques autres fichiers, comme un thé.yaml fichier.

Rencontre avec le(s) acteur(s)

Il est difficile de déterminer s’il s’agit de l’œuvre d’un seul auteur ou de plusieurs collaborateurs. Cependant, nous disposons de certaines preuves qui permettent de préciser l'origine de cette activité :

  • Langue : Certains commentaires dans le code sont en indonésien.
attaque npm 3
  • Localisation : Certains propriétaires des référentiels associés indiquent leur localisation en Indonésie.
  • L'emplacement que nous pouvons identifier grâce aux métadonnées d'activité sur GitHub pointe également vers l'Indonésie.
NPM_JA

Thé à cinq heures

Étant donné que l’Indonésie était une colonie britannique, il conviendrait parfaitement de prendre le thé ici. Cependant, dans ce cas-ci, il s’agit d’une sorte de thé assez particulière.

Vous souvenez-vous du thé.yaml les fichiers que nous avons vus au début ? À l’époque, nous ne montrions pas leur contenu, mais il ressemblait à ceci :

attaque npm 4

Ces fichiers semblent être liés au Protocole de thé. mais qu'est ce que c'est exactement? Nous avons atteint https://tea.xyz/blog/250k-grant-for-open-source-developers, qui parle du but :

Tea bouleverse le monde numérique en abordant le problème de longue date de la rémunération inadéquate des développeurs open source. Résoudre ce problème est plus urgent que jamais, c'est pourquoi nous avons décidé de déployer 250 30 $ de subventions avant le lancement du protocole. Cette étape initiale vise à soutenir les responsables de projets open source qui ont un impact matériel sur l’écosystème logiciel open source et un teaRank supérieur à XNUMX devant le tea Protocol Incentivized Testnet.

Selon les documents du protocole du thé : 

"Pour qu'un projet soit enregistré sur le protocole tea, il nécessite un fichier tea.yaml qui sert de constitution au projet pour régir son nombre de contributeurs et le nombre de votes requis pour mener à bien certaines actions."

 

Après avoir accédé au réseau de thé, nous avons essayé de trouver l'un des packages dont nous soupçonnons que sa réputation est gonflée. Nous l'avons trouvé:

Cela semble expliquer ce qui se passe ici : certains utilisateurs gonflent leurs projets open source avec une popularité fictive afin de détourner le teaRank et bénéficier des avantages offerts par l'association du thé. Après tout, l’argent est la force motrice la plus ancienne, avec le sexe. 

Conclusion et réflexions finales

Bien qu'aucune preuve de code malveillant n'ait été trouvée dans ces packages NPM, et qu'ils n'avaient probablement pas l'intention que quiconque les utilise, ils peuvent potentiellement violer plusieurs conditions d'utilisation (TOS) de NPM, GitHub ou de l'association tea. Cependant, cela sort du cadre de notre travail (ils ont cependant été informés et les actions qu'ils jugent appropriées seront prises). L’utilisation abusive de ces plateformes nous affectera, nous et nos organisations, d’une manière ou d’une autre.

Ce qui est clair, c'est que tout package open source apparemment inoffensif peut abriter des comportements difficiles à comprendre sans informations contextuelles complètes.

En tant que développeur, je trouve difficile de contrôler manuellement tous les packages open source utilisés dans les applications que nous développons et maintenons avec un certain niveau d'assurance. Sans l’aide d’un outil automatisant ce contrôle, la tâche pourrait consommer d’innombrables heures à nos équipes.

Il est toujours possible de détourner le regard, convaincu que les domaines open source sont des endroits sûrs. Heureusement, je pense que cet état d’esprit n’est pas très répandu aujourd’hui ; cette affaire est pratiquement inoffensive, mais nous avons récemment vécu un incident beaucoup plus grave avec le Porte dérobée XZ, et cela n'a pas été le seul.

Si vous avez lu jusqu'ici, j'espère que vous avez apprécié toutes les subtilités de ce curieux événement. N'oubliez pas de consacrer quelques minutes à examiner ce que Xygeni peut apporter à la sécurité de votre organisation.

Annexe : Liste des actifs connexes à inclure dans l'article final

NPM utilisateurs plus pertinents en fonction du nombre de packages publiés : vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Un petit échantillon de leurs packages associés : mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Certains des référentiels GitHub associés contenant des fichiers tea.yml :

sca-tools-logiciel-outils-d'analyse-de-composition
Priorisez, corrigez et sécurisez vos risques logiciels
Essai gratuit 7 jours
Pas de carte bleue requise

Sécurisez le développement et la livraison de vos logiciels

avec la suite de produits Xygeni