Le 18 juillet 2025, une bibliothèque JavaScript de confiance avec plus de 31 millions de téléchargements hebdomadaires, eslint-config-prettier
a été utilisé dans le cadre d'une attaque ciblée de la chaîne d'approvisionnement qui montre à quel point les écosystèmes de logiciels libres peuvent être vulnérables. La violation a commencé par un courriel d'hameçonnage qui a incité le responsable à divulguer son jeton. À l'aide de l'identifiant exposé, l'attaquant a publié des versions non autorisées du paquet, qui contenait un script de post-installation qui exécutait un trojan DLL sur les machines Windows au cours de l'installation.
Voici ce qui s'est passé, comment l'attaque a fonctionné et comment les technologies OPSWAT peuvent aider à se défendre contre des menaces similaires à l'avenir.
Résumé de l'attaque
Le populaire paquet linter de npm, eslint-config-prettier
est utilisé pour désactiver les règles ESLint inutiles ou conflictuelles lors de l'utilisation de Prettier. Il est généralement inclus en tant que dépendance de développement dans les IDE locaux et les pipelines de CI (il n'est pas livré dans le code de production), mais cela ne l'a pas empêché de devenir un véhicule pour les logiciels malveillants.
L'attaque s'est déroulée comme suit :
1. Un courriel d'hameçonnage provenant de support@npmjs.org a incité le responsable à cliquer sur un lien malveillant (typosquatté comme npnjs.com). Après avoir suivi le lien, le responsable a exposé à son insu son jeton d'accès npm, que l'attaquant a utilisé pour publier des versions malveillantes du paquetage.
2. L'attaquant a ensuite utilisé le jeton npm volé pour publier des versions malveillantes de l'application eslint-config-prettier
et de son paquetage. Quatre versions compromises ont été identifiées sur la base des rapports des développeurs : 8.10.1, 9.1.1, 10.1.6, versions 10.1.7.
En outre, comme l'attaquant avait accès au jeton compromis, d'autres paquets gérés par le même auteur ont également été affectés, notamment : eslint-plugin-prettier, synckit, @pkgr/core
et napi-postinstall
3. L'attaquant a ajouté deux fichiers suspects dans le code source : install.js
et node-gyp.dll
.
Lorsqu'un utilisateur télécharge et installe l'une des versions illégitimes d'un paquet, l'application install.js
est exécuté, invoquant un script malveillant node-gyp.dll
sur les systèmes Windows via rundll32
Techniques d'attaque utilisées
Phishing et ingénierie sociale
L'email usurpé a réussi à contourner les protections de base (SPF/DKIM/DMARC) et a usurpé l'identité du support npm.
Typosquatting
Un domaine trompeur(npnjs.com), conçu pour ressembler à npmjs.com, a été utilisé pour voler des informations d'identification. Il s'agit d'une technique classique de typosquattage.
Obfuscation du code par concaténation de chaînes de caractères
La version malveillante du paquet comprenait un script de post-installation (install.js
) qui s'exécute automatiquement après l'installation.
À l'intérieur, une fonction nommée logDiskSpace()
semblait inoffensive, mais elle ne vérifiait pas du tout l'espace disque. Au lieu de cela, il utilisait la concaténation de chaînes de caractères pour créer une commande qui s'exécutait comme suit rundll32.exe
et a chargé un fichier DLL (node-gyp.dll
) inclus dans le paquet.
Secure proactivement le code source et les logiciels libres avec OPSWAT
MetaDefender Software Supply Chain™ aide les organisations à détecter et à bloquer les dépendances open-source malveillantes avant qu'elles n'entrent dans votre pipeline CI/CD.
- Analyse du SBOM: Analyse automatiquement les dépendances et signale les vulnérabilités connues, telles que CVE-2025-54313, liées à cette attaque.
- Détection multi-AV: Détecte les logiciels malveillants obfusqués comme node-gyp.dll à l'aide de plus de 30 moteurs anti-malware intégrés via MetaScan™ Multiscanning.
- Intégration du référentiel de sources: Intégration avec GitHub, GitLab et JFrog Artifactory pour inspecter et vérifier en permanence l'intégrité des paquets.
Le vecteur d'attaque a commencé par le courrier électronique, et c'est là que MetaDefender Email Security ™ intervient.
- Assainissement des fichiers : Deep CDR™ analyse et assainit les pièces jointes aux courriels.
- Extraction des hyperliens: Tous les liens sont affichés en texte clair, ce qui permet de découvrir des domaines similaires comme npnjs.com avant que l'utilisateur ne clique.
Principaux enseignements
- La sécurité des mainteneurs est la sécurité de la chaîne d'approvisionnement. Un simple jeton piraté a permis à des pirates de détourner des bibliothèques largement utilisées.
- Les écosystèmes de logiciels libres reposent sur la confiance, mais une réussite en matière d'ingénierie sociale peut se répercuter sur des millions de projets en aval.
- Les mesures de sécurité proactives, telles que l'analyse des dépendances et le nettoyage des courriels, ne sont plus facultatives ; elles sont essentielles.
Que faire maintenant ?
-
Évitez d'installer les versions affectées :
- eslint-config-prettier : 8.10.1, 9.1.1, 10.1.6, 10.1.7
- eslint-plugin-prettier : 4.2.2, 4.2.3
- synckit : 0.11.9
- @pkgr/core : 0.2.8
- napi-postinstall : 0.3.1
- Rotation des secrets utilisés dans les versions affectées
- Activer le 2FA pour tous les comptes npm
- Organiser une formation de sensibilisation à l'hameçonnage
Les attaques contre la chaîne d'approvisionnement sont de plus en plus intelligentes et personnelles. Grâce aux solutions de confiance zéro d'OPSWATpour les courriels et les pipelines de développement, vous pouvez rester en avance sur la prochaine attaque.
En savoir plus sur MetaDefender Software Supply Chain et MetaDefender Email Security. Contactez l'un de nos experts pour trouver des solutions adaptées à votre organisation.