Un paquet malveillant qui s’exécute avant même que vous ayez cligné des yeux, c’est fini par défaut. Avec npm 12, GitHub désactive les scripts d’installation automatiques, ce petit mécanisme discret qui a servi de porte d’entrée à quantité d’attaques visant l’écosystème JavaScript.
Points clés
- npm 12 n’exécute plus automatiquement les scripts d’installation des paquets, une autorisation explicite devient nécessaire.
- GitHub commence à supprimer les jetons permettant de contourner l’authentification à deux facteurs sur les actions sensibles.
- Objectif : réduire la surface d’attaque après une série de compromissions dans l’écosystème JavaScript.
Les install scripts, éteints d’usine
Jusqu’ici, un paquet npm pouvait lancer des scripts (preinstall, postinstall) au moment de son installation, avec les droits de l’utilisateur qui tapait la commande. Pratique pour compiler du natif, catastrophique dès qu’un paquet compromis en profite pour exfiltrer des jetons ou déposer un mineur. Désormais ces scripts ne s’exécutent plus tout seuls. Il faudra les autoriser explicitement, projet par projet.
Le raisonnement est limpide : la majorité des développeurs installent des dépendances sans jamais lire ce que fait leur code d’installation. Fermer le robinet par défaut réduit d’un coup la surface d’attaque, quitte à demander un geste conscient quand une bibliothèque a réellement besoin de compiler quelque chose.
Fin programmée des jetons qui contournent la 2FA
GitHub ne s’arrête pas là et commence à supprimer les jetons capables de contourner l’authentification à deux facteurs sur les actions sensibles de npm. Publier un paquet, modifier des accès ou toucher à la gestion d’un package exigera donc une validation forte, sans échappatoire par un token oublié dans un pipeline d’intégration continue.
Ces jetons de contournement étaient commodes pour automatiser les publications. Ils étaient aussi une cible de choix : un secret dérobé dans un CI mal cloisonné, et l’attaquant publiait sous votre nom en toute quiétude.
Une réponse à une série d’attaques bien réelles
L’écosystème npm collectionne les compromissions de mainteneurs, comptes détournés et paquets piégés diffusés à des millions de téléchargements. Les scripts d’installation et les jetons trop permissifs figuraient en bonne place dans le mode opératoire. En les neutralisant par défaut, GitHub aligne enfin npm sur un principe élémentaire de sécurité : rien ne s’exécute sans consentement explicite.
Reste le prix à payer côté confort. Certains workflows automatisés vont grincer, quelques paquets natifs demanderont une autorisation manuelle. Un léger surcoût d’ergonomie contre une porte dérobée fermée : le marché est vite fait.