Quand Prettier devient un vecteur dâinfection : attaque supply chain sur npm, câest le genre de titre quâon aimerait croire sorti dâun article satirique. Et pourtant, la compromission rĂ©cente de deux packages npm ultra-populaires (eslint-config-prettier et eslint-plugin-prettier) est bien rĂ©elle. En exploitant un phishing ciblĂ© contre les mainteneurs, des attaquants ont injectĂ© du code malveillant dans ces bibliothĂšques, les transformant en droppers de malware capables de contaminer dĂ©veloppeurs, environnements de build et pipelines CI/CD. Cette attaque supply chain sur npm illustre une nouvelle fois Ă quel point notre Ă©cosystĂšme open source est devenu une cible de choix⊠et un cauchemar latent pour la sĂ©curitĂ© des entreprises.
đ Paquets compromis :
eslint-config-prettiereslint-plugin-prettier
âĄïžÂ Des packages trĂšs populaires, utilisĂ©s dans des millions de projets JavaScript/Node.js.
Bienvenue dans lâĂšre du « npm install && infect ».
đŠ Le point de dĂ©part : la crĂ©dulitĂ© des mainteneurs open source
Tout commence par un scénario désormais bien rodé :
- Un développeur mainteneur reçoit un mail piégé.
- Il clique (parce quâil est humain).
- Ses identifiants npm tombent dans les mains des attaquants.
- Ces derniers publient une nouvelle version piégée des bibliothÚques ESLint.
Et voilà . Vous faites un npm install, vous ne vous méfiez de rien⊠et vous venez de lancer un script postinstall qui télécharge un binaire malveillant sur votre poste ou dans votre pipeline CI/CD.
Si câĂ©tait un film, on appellerait ça « Beautify me softly ».
đ§Ÿ Fiche dâincident â SecuSlice
| ĂlĂ©ment | DĂ©tail |
|---|---|
| Type d’incident | Attaque chaĂźne d’approvisionnement (npm) |
| Origine | Phishing ciblé sur les mainteneurs |
| Impact | Prise de contrĂŽle des packages, propagation de malware |
| Packages compromis | eslint-config-prettier, eslint-plugin-prettier |
| Infection | Injection dâun script malveillant via postinstall |
| Cibles | Développeurs, build pipelines, environnements CI |
| Statut | Paquets désindexés par npm, mais infections possibles |
| Score de sĂ©vĂ©ritĂ© | đŽ Critique â niveau 9.5+ (estimĂ©) |
| Actions recommandées | Audit complet des dépendances, suppression des versions compromises, vérification des logs CI/CD |
đŻ Les victimes : des dĂ©veloppeurs⊠et leur CI/CD
Ce qui rend cette attaque particuliĂšrement redoutable, câest son discret ciblage :
- Ces packages sont des outils de mise en forme de code. On les installe souvent enÂ
devDependencies, sans y penser. - Ils sont appelĂ©s dans des projets open source, mais aussi dans des repositories privĂ©s, des environnements de build, et mĂȘme des images Docker.
Le malware nâa pas Ă©tĂ© dĂ©taillĂ© dans son intĂ©gralitĂ©, mais selon les premiĂšres analyses, il permet :
- De collecter des données systÚme,
- Dâexfiltrer des tokens, des clĂ©s SSH, ou des fichiersÂ
.env, - Et potentiellement d’installer une porte dĂ©robĂ©e persistante.
Moralité : la moindre npm install sur un runner CI peut devenir un acte suicidaire si vous ne maßtrisez pas vos dépendances.
Voir notre article sur la sécurité des pipelines : Sécuriser un pipeline CI/CD : mission (im)possible ?
𧚠Une attaque « low-tech », efficacité « high-impact »
Ce qui est ironique ici, câest que rien nâest innovant :
- Pas de CVE spectaculaire,
- Pas dâexploitation complexe,
- Juste de la confiance exploitĂ©e, et unÂ
package.json piégé.
Comme dans 90 % des attaques modernes, le point dâentrĂ©e est humain, et la cible, câest la chaĂźne dâapprovisionnement logicielle.
Les pirates ne cherchent plus à casser des firewalls. Ils cassent la chaßne de confiance entre développeurs et écosystÚme.
Et vous savez quoi ? Ăa marche.
đ§Ș Comment savoir si vous ĂȘtes touchĂ©
Si vous avez installé ces packages récemment, surtout entre le 17 et le 19 juillet 2025, vous devez :
- VĂ©rifier vos fichiersÂ
package-lock.json ouÂyarn.lock. - Supprimer les versions compromises.
- Regénérer vos environnements (
npm ci,Âdocker build, etc.). - RĂ©voquer tous les secrets potentiellement exposĂ©s (tokens, clĂ©s, variables dâenvironnement).
- Auditer les logs CI/CD pour toute activité suspecte.
Un bon grep dans vos dĂ©pĂŽts vaut mieux quâun long discours.
â Que faire maintenant ?
- đŠ Supprimez immĂ©diatement toute version installĂ©e aprĂšs le 17 juillet 2025.
- đ RĂ©initialisez vos secrets dans les projets ayant ces dĂ©pendances.
- đĄïž Auditez vos pipelines CI/CD pour dĂ©tecter toute activitĂ© anormale.
- đ§Ș Utilisez un scanner de dĂ©pendances type npm audit ou Snyk.
- đĄ Activez lâauthentification 2FA obligatoire pour les mainteneurs npm.
đ§ Commentaires SecuSlice
Encore une attaque chirurgicale sur la supply chain JavaScript, via ce bon vieux phishing ciblĂ©. Le malware nâavait mĂȘme pas besoin de 0-day, juste de la confiance de la communautĂ© npm.
đŠ Quand vos outils de qualitĂ© de code (eslint + prettier) deviennent des vecteurs dâinfection, on touche le fond.
đĄïž Bonnes pratiques (que personne nâapplique jusquâau drame)
Soyons honnĂȘtes :
đž Qui vĂ©rifie les dĂ©pendances dâun plugin ESLint ?
đž Qui active lâoption de vĂ©rification des intĂ©gritĂ©s (package-lock) ?
đž Qui impose la 2FA sur tous ses mainteneurs npm ?
Pas grand monde. Et les attaquants le savent.
Voici donc la checklist de survie du jour :
- â Activez la 2FA obligatoire sur tous les comptes npm.
- â Nâinstallez jamais de paquets sans les verrouiller par version.
- â Utilisez des outils comme Snyk, npm audit, ou socket.dev pour scanner les dĂ©pendances.
- â
Ne faites jamais confiance à un outil de dev « par défaut ».
MĂȘme pas Prettier. Surtout pas Prettier.
đ Conclusion : le ver est dans le linter
Lâhistoire de ce dĂ©tournement est un rappel brutal : la supply chain logicielle est une passoire, et lâopen source nâest pas gratuit â il coĂ»te du temps, de la sĂ©curitĂ©, et de la vigilance. La prochaine fois que vous ferez un npm install, souvenez-vous que mĂȘme les outils qui rendent votre code plus joli peuvent cacher un cauchemar bien laid.
đŻ Et maintenant, tous ensemble : auditons nos dĂ©pendances, sĂ©curisons nos pipelines, et envoyons des cafĂ©s aux mainteneurs Ă©puisĂ©s. Ils en ont besoin.
