En avril, lquipe de recherche de Phylum a rvl la prolifration de paquets de spam sur npm associs au protocole Tea. Ce protocole dcentralis promet de rcompenser les dveloppeurs de logiciels en cryptomonnaie pour leurs contributions open-source. Fin juillet, dans son rapport trimestriel, Phylum estimait qu’environ un paquet sur quatre publi sur npm au deuxime trimestre tait associ Tea, dont la quasi-totalit servait gonfler artificiellement la contribution d’un dveloppeur de logiciel. Grce de nouvelles recherches menes dans une perspective nouvelle, Phylum assure pouvoir dsormais affirmer que le volume de ces paquets est probablement plus important que ses estimations initiales.
Le protocole Tea
L’un des principes fondamentaux du Protocole Tea est que les logiciels libres doivent tre reconnus pour leur impact rel, et pas seulement pour leur visibilit ou leur utilit immdiate. Ce principe s’applique l’ensemble des logiciels, qu’il s’agisse des interfaces utilisateur lgantes ou des bibliothques souvent invisibles qui rendent tout cela possible. Il est essentiel pour le protocole de dterminer avec prcision la valeur des logiciels libres, afin de remplir sa mission qui consiste rcompenser quitablement ses mainteneurs, et il s’appuie sur l’oracle Proof of Contribution (preuve de contribution).
Contrairement aux mcanismes onchain traditionnels qui reposent sur la puissance de calcul ou les enjeux financiers, Proof of Contribution value l’impact des contributions logicielles au sein de l’open-source en utilisant le teaRank, une mtrique base sur le rseau qui reflte la quantit et la qualit des dpendants d’un projet. Le score s’adapte au fil du temps, encourage les nouveaux projets dfier les projets tablis et garantit que la reconnaissance s’tend l’ensemble de la pile open-source, de la glibc aux dernires bibliothques javascript UI.
Pourquoi une nouvelle approche est-elle ncessaire ?
L’cosystme Open Source qui sous-tend tous les logiciels peut tre reprsent comme une tour de briques o les couches infrieures sont (souvent) oublies depuis longtemps, mais toujours maintenues par des ingnieurs dvous, et sur lesquelles le reste de la pile s’appuie. Seuls les projets situs au sommet de la tour sont gnralement connus et bnficient d’un parrainage. Cette slection biaise fait que les briques essentielles qui soutiennent la tour n’attirent aucun don, tandis que les favoris reoivent plus que ce dont ils ont besoin. Les modles de financement existants permettent aux consommateurs de projets de proposer des paiements aux dveloppeurs pour qu’ils crent des fonctionnalits spcifiques, ce qui ne rmunre les projets que pour les actions qu’ils entreprennent, pas ncessairement dans leur meilleur intrt. Et une fois de plus, ils ne rcompensent que les favoris.
tea change la donne. Inspir par PageRank, l’oracle modlise les logiciels libres comme un graphe orient, o chaque nud reprsente un projet et chaque arte une relation de dpendance. Ces donnes sur les dpendances sont glanes auprs des gestionnaires de paquets individuels et consolides en une seule vue du graphe des logiciels libres. Avec teaRank, les contributeurs, les utilisateurs et le protocole disposent d’une note de 1 100 pour quantifier l’impact d’un paquet individuel par rapport d’autres au sein du logiciel libre.
Un principe dj dtourn
Le protocole Tea incite de manire perverse les dveloppeurs de logiciels exagrer leur contribution au dveloppement de logiciels libres. l’aide d’un PageRank modifi appel teaRank, les dveloppeurs de logiciels sont rcompenss en fonction de leur preuve de contribution . Comme les premiers spammeurs SEO qui ont compris comment jouer avec le PageRank leur avantage, l’histoire se rpte et quelques dveloppeurs de logiciels ont pollu les dpts de logiciels libres avec des quantits absurdes de paquets sans valeur.
C’est npm, le plus grand cosystme open-source, qui a le plus souffert de cette pollution de la part de divers acteurs. Ces paquets de spam se caractrisent notamment par des noms absurdes de paquets, des paquets nomms avec des combinaisons alatoires de mots d’une liste, des listes invraisemblables de paquets dpendants, un nombre douteux de paquets dpendants et, dans ce marasme de dpendances transitives, l’omniprsent fichier tea.yaml qui identifie en fin de compte le propritaire du code.
Lorsque Phylum a commenc enquter sur cette situation en fvrier, le spcialiste de cyberscurit indique avoir nous avons t continuellement surpris par le volume de paquets qui pouvaient tre publis, clairement en raison de l’automatisation . Il a donc cherch comprendre l’tendue de ce problme de spam.
Lampleur du problme
En guise de rfrence, au dbut de l’anne 2024, le nombre total de paquets ingrs quotidiennement dans Phylum partir de npm tait d’environ 1 500 chaque jour ouvrable et d’environ la moiti pendant les week-ends. partir de fvrier 2024, Phylum a commenc remarquer une augmentation rgulire des publications de paquets npm de quelques milliers des dizaines de milliers. Le point culminant de cette augmentation s’est produit le 8 avril 2024, avec plus de 48 000 paquets publis sur npm. Cette explosion de paquets a conduit le spcialiste sa premire dcouverte des incitations perverses du protocole Tea.
Le mois dernier, en prparation de son rapport trimestriel, Phylum a pris un chantillon alatoire de tous les paquets npm publis au deuxime trimestre, et a tri manuellement 1600 paquets. Si un paquet contenait des marqueurs d’abus du protocole Tea, comme indiqu ci-dessus, Phylum l’a marqu comme spam. Phylum a ainsi obtenu un intervalle de confiance 95 % pour l’estimation du pourcentage de paquets de spam dans npm au deuxime trimestre, compris entre 21,25 % et 25,5 %, soit plus de 500 000 paquets de spam.
Aprs rflexion, Phylum a considr que de nombreux projets npm ont des nightly builds ou des versions alpha, beta et canary. Ainsi, ces paquets lgitimes qui bnficient d’un cycle de dveloppement robuste pourraient diluer l’ampleur de l’impact rel du spam. Et si la recherche tait limite aux nouveaux paquets ? Des paquets qui n’ont jamais t vus auparavant dans npm ?
Phylum a largi les recherches dans ses donnes npm jusqu’en fvrier, date laquelle le spcialiste a vu le premier spam du protocole Tea, puis il a supprim tous les paquets dont au moins une version avait t publie auparavant. Cela lui a laiss plus de 890 000 nouveaux paquets, jamais vus auparavant, entre fvrier 2024 et aujourd’hui. partir de cet ensemble, Phylum a prlev un chantillon alatoire de 900 paquets et appliqu les mmes critres que prcdemment. Dans cette nouvelle perspective, son intervalle de confiance 95 % pour l’estimation du spam li au protocole Tea dans les nouveaux paquets au cours des six derniers mois est pass une valeur comprise entre 68,66 % et 74,67 %, soit entre 613 000 et 667 000 paquets.
En d’autres termes, parmi tous les nouveaux paquets publis sur npm au cours des six derniers mois, environ cinq paquets sur sept sont des spams Tea.
Des exploitations potentiellement dangereuses
Tout d’abord, contrairement aux campagnes de typosquattage malveillantes, dans lesquelles un dveloppeur peu mfiant pourrait accidentellement installer reaxt au lieu de react, il est peu probable qu’un dveloppeur fasse la mme erreur avec, par exemple, quasar-fig-0e1t. En revanche, un paquet comme web3-cover est plus plausible, car le dveloppeur obtiendrait galement les 170 dpendances ainsi que l’arbre de dpendance transitif complet pour chacune d’entre elles.
Ensuite, parce que le train de l’intelligence artificielle est plein rgime, le spcialiste tient souligner l’vidence. Les modles d’IA qui sont forms sur ces paquets vont presque certainement fausser les rsultats dans des directions inattendues. En fin de compte, ces paquets sont des dchets, et le mantra « garbage in, garbage out » se vrifie.
Enfin, ces campagnes de spam grande chelle entravent la capacit du registre des paquets open-source raisonner sur la scurit de tous les paquets d’un cosystme, malgr le fait qu’aucune personne raisonnable ne s’efforcerait jamais d’installer l’un de ces paquets de spam. Elles augmentent le niveau de bruit et crent un environnement dans lequel un adversaire pourrait subrepticement dissimuler une relle malveillance.
Pourquoi cette prolifration ?
Plusieurs facteurs contribuent cette invasion de paquets indsirables :
- Automatisation : Les auteurs de spam utilisent des scripts pour publier automatiquement des paquets, inondant lcosystme.
- Faible barrire lentre : La facilit de publication sur npm permet aux spammeurs de crer rapidement de nouveaux paquets.
- Rcompenses financires : Le protocole Tea offre des incitations montaires, ce qui attire les opportunistes malveillants.
Mesures prendre
Pour lutter contre cette pollution, voici quelques actions que la communaut peut entreprendre :
- Filtrage automatique : npm pourrait mettre en place des filtres pour dtecter les paquets suspects et les bloquer avant leur publication.
- Signalement communautaire : Encourager les utilisateurs signaler les paquets de spam afin de les examiner plus attentivement.
- Audit de scurit : Effectuer des audits rguliers pour identifier les paquets problmatiques.
Conclusion
La pollution de l’cosystme des logiciels libres est un problme qui concerne tout le monde. Le projet de protocole Tea prend des mesures pour remdier ce problme. Il serait injuste pour les participants lgitimes au protocole Tea de voir leur rmunration rduite parce que d’autres escroquent le systme. Par ailleurs, npm a commenc supprimer certains de ces spammeurs, mais le taux de suppression ne correspond pas au nouveau taux de publication. Et ce problme ne se limite pas npm. Par exemple, un utilisateur a publi prs de 1800 paquets de spam sur Rubygems la fin du mois de fvrier et au dbut du mois de mars 2024.
Sources : Phylum, protocole Tea, Rubygems
Et vous ?
Quelle est votre exprience avec les paquets npm ? Avez-vous dj rencontr des paquets de spam lors de vos projets ? Si oui, comment avez-vous gr la situation ?
Pensez-vous que la communaut open-source devrait tre plus proactive dans la lutte contre les paquets de spam ? Partagez vos opinions sur la responsabilit collective de maintenir la qualit de lcosystme npm.
Comment pouvons-nous diffrencier les paquets utiles des paquets de spam ? Indiquez les critres que vous utilisez pour valuer la fiabilit dun paquet et partagez vos meilleures pratiques.
Quelles mesures concrtes pouvons-nous prendre pour rduire la prolifration des paquets de spam ? Proposez des solutions, telles que des filtres automatiques, des signalements communautaires ou des audits de scurit.
Quel est limpact des paquets de spam sur la confiance des dveloppeurs envers npm ? Avez-vous dj hsit utiliser un paquet en raison de la prsence de spam ? Comment cela a-t-il influenc votre perception de la plateforme ?