Skip to main content

Les mainteneurs du plugin ESLint Prettier attaqués par un logiciel malveillant visant la chaîne d’approvisionnement npm

Écrit par
blog feature security alert purple

22 juillet 2025

0 minutes de lecture

Depuis le 19 juillet 2025, un incident de sécurité visant la chaîne d’approvisionnement npm s’attaque aux mainteneurs de packages npm open source populaires sur le registre npm

L’essentiel sur le logiciel malveillant npm

  • Des attaquants ont enregistré le domaine npnjs.com (un domaine ressemblant au registre officiel npmjs.com, dans le cadre d’une attaque par typosquattage)

  • Les mainteneurs ont été victimes d’une campagne d’hameçonnage par e-mail qui a compromis leurs identifiants du registre npm

  • Packages touchés : eslint-config-prettier, eslint-plugin-prettier, synckit, @pkgr/core, napi-postinstall et got-fetch

  • Les mainteneurs ont réinitialisé leurs identifiants de jeton npm, marqué les packages malveillants comme obsolètes, et le registre npm a désormais supprimé les versions malveillantes

Exemple d’avis de la Snyk Vulnerability Database concernant la version malveillante de got-fetch :

Version malveillante du package npm got-fetch, impliqué dans la compromission de la chaîne d’approvisionnement npm d’eslint-config-prettier

Le package eslint-config-prettier totalise 30 000 000 de téléchargements par semaine à ce jour et son adoption ne cesse de progresser, ce qui illustre l’impact de ce logiciel malveillant.

Téléchargements du package npm eslint-config-prettier depuis le site npm.chart.dev

À propos de l’attaque npm visant les plugins Prettier

Pour publier des packages sur le registre officiel npmjs.com, il faut un compte associé à une adresse e-mail valide. Lorsqu’un package npm est publié, ces informations sont accessibles publiquement et largement à toute personne souhaitant les consulter.

Par exemple, voici les informations concernant mon propre package npq, qui montrent à quel point il est facile de récupérer les adresses e-mail des mainteneurs :

Le registre npm affiche l’adresse e-mail du responsable dans les informations du package.

Ce n’est pas nouveau. Les attaquants peuvent désormais exploiter ces informations pour rechercher des failles potentielles, comme :

  • Des domaines d’adresse e-mail expirés, qu’ils peuvent acheter pour lancer une procédure de réinitialisation de mot de passe et accéder à la publication de nouvelles versions

  • Des campagnes d’hameçonnage ciblées par e-mail pour voler les identifiants de jeton npm

C’est précisément la méthode utilisée par les attaquants lors de cette récente attaque : ils ont piégé des mainteneurs en les incitant à suivre une procédure par e-mail qui a récupéré leurs identifiants du registre npm. Les attaquants ont ainsi obtenu ces identifiants et peuvent publier de nouvelles versions de ces packages en leur nom.

C’est exactement ce qui s’est produit avec eslint-config-prettier, l’un des packages concernés : plusieurs versions infectées contenant un logiciel malveillant ciblant Windows ont été publiées.

Le mainteneur a confirmé les faits et fourni des preuves sur la page GitHub du plugin ESLint Config Prettier, notamment l’e-mail qu’il a reçu :

Campagne d’hameçonnage visant le mainteneur d’eslint-config-prettier sur npm

Propagation de l’infection

Que se passe-t-il lorsqu’un logiciel malveillant touche un mainteneur ? Il peut facilement se propager à d’autres mainteneurs si une version malveillante populaire a été publiée et les compromet.

C’est bien ce qui s’est passé : les conséquences du logiciel malveillant présent dans eslint-config-prettier, bien que celui-ci n’ait été publié que pendant une courte période, ont déjà touché d’autres mainteneurs, ceux du package npm is. Ainsi, le package npm is, dans ses versions 3.3.1 et 5.0.0, a été signalé comme contenant un logiciel malveillant. Le problème a depuis été corrigé (le 19 juillet à 21 h 21 UTC+3) et une version corrigée 3.3.2 a été publiée. Selon le mainteneur Jordan Harband, la réinitialisation de ce package a pris 6 heures.

Comment vous protéger des attaques visant la chaîne d’approvisionnement npm

Commencez par mettre en œuvre les mesures suivantes en réponse à l’incident :

  • Vérifiez que vous n’utilisez aucune des versions connues comme malveillantes des packages mentionnés dans cet incident et qu’elles n’ont été installées ni sur vos systèmes CI, ni dans vos déploiements de production, ni dans les environnements de vos équipes de développement.

  • Si vous détectez une infection, procédez à la rotation des secrets, auditez les ressources de registres de packages internes et externes de votre entreprise, puis suivez les consignes de votre équipe de sécurité interne.

À titre préventif, je vous recommande de suivre ces bonnes pratiques de sécurité, que vous soyez mainteneur ou développeur, afin de vous prémunir contre de futurs incidents impliquant des logiciels malveillants :

  • Activez l’authentification à deux facteurs sur votre compte du registre npm, en particulier si vous êtes mainteneur, car l’impact potentiel d’une compromission est considérable

  • Utilisez l’outil CLI open source npq pour effectuer des vérifications heuristiques avant d’installer des packages npm

  • Ajoutez ignore-scripts=true à votre fichier de configuration .npmrc défini pour l’utilisateur afin que les scripts postinstall ne s’exécutent pas automatiquement lors de l’installation

Cette attaque visant la chaîne d’approvisionnement npm souligne l’importance cruciale de mesures de sécurité robustes. Pour mieux comprendre ces menaces et découvrir des stratégies proactives pour protéger vos projets, consultez la leçon de Snyk Learn sur les attaques visant la chaîne d’approvisionnement.

Formations à la sécurité pour les développeurs, par Snyk

Apprenez auprès d’experts, au bon moment et directement dans votre code.