npm : l'authentification à deux facteurs rendue obligatoire en bêta
Pour les mainteneurs sur les paquets indiqués comme protégés

Le , par Marco46, Modérateur
Suite à l'infection des paquets eslint-scope et eslint-config-eslint signalée le 12 juillet dernier ici même, npm a publié un rapport d'incident pour faire le point.


L'équipe de sécurité a déterminé que 4500 comptes avaient pu voir leur tokens d'accès ("access token" en anglais, cf. oAuth2) compromis par le pirate.

Par prudence, npm a révoqué tous les tokens créés avant le 12 juillet à 14h30 UTC, c'est à dire pour les Français métropolitains avant le 12 juillet à 16h30 (heure d'été).

En conséquence, tous les utilisateurs connectés sur leur CLI avant cette date doivent se reconnecter, l'exécution de la commande npm publish retournant désormais :

Code : Sélectionner tout
1
2
3
4
5
npm WARN notice Due to a recent security incident, all user tokens have been invalidated. Please see https://status.npmjs.org/incidents/dn7c1fgrr7ng for more details. To generate a new token, visit https://www.npmjs.com/settings/~/tokens or run "npm login".
npm ERR! publish Failed PUT 401
npm ERR! code E401
npm ERR! You must be logged in to publish packages. : <package-name>
Le rapport d'incident précise que l'attaque n'a pas eu lieu à cause d'une brèche du côté du registre ou du CLI mais bien du fait d'une brèche chez un mainteneur des paquets eslint-scope et eslint-config-eslint.

L'attaque détectée en moins d'une heure et réglée dans la journée

ESLint a également publié un billet de blog détaillant précisément l'attaque et s'excuse pour le vecteur fourni par un de ses mainteneurs.

Le billet précise que l'attaque a été détectée et signalée publiquement par un utilisateur du paquet eslint-scope moins d'une heure après que le paquet malicieux a été uploadé sur le registre.

Le problème a été soldé moins de 10 heures plus tard par la révocation des tokens d'accès comme expliqué ci-dessus.

En conséquence de cet incident, npm a décidé de permettre aux responsables de paquets de les protéger via l'authentification à deux facteurs.

L'authentification à 2 facteurs pour les paquets rendue obligatoire

Le lendemain de la publication du rapport d'incident, l'équipe npm a publié un court billet de blog pour promouvoir
la 2FA sur les paquets.

À l'heure actuelle cette fonctionnalité n'est activable que via le CLI en version canary qui correspond à la version taguée @next.

En revanche son exécution est très bien supportée par le CLI actuel et elle peut donc d’ores et déjà être utilisée.

Il est simplement nécessaire d'activer son usage via la version canary via cette commande : npx npmc access 2fa-required <package>

L'usage de la 2FA est documenté largement, mais il est à noter que son usage nécessite l'installation d'une application tierce permettant de recevoir le mot de passe à usage unique.

Finalement, toute action via le CLI entrainant la publication d'une nouvelle version de paquet sur un paquet marqué comme protégé par la 2FA nécessite la saisie d'un mot de passe à usage unique, même si l'utilisateur n'a pas activé la 2FA sur son compte.

Sources : Rapport d'incident du 12 juillet 2018, Protection 2FA pour les paquets sur le blog npm officiel, Billet "postmortem" sur le blog ESLint officiel .

Et vous ?

Que pensez-vous de cet incident ?
Avez-vous activé l'authentification à deux facteurs ?
Êtes-vous inquiets des éventuels problèmes de sécurité posés par l'usage de npm ?

Voir aussi :

Un paquet npm, gestionnaire de paquets pour la bibliothèque populaire JavaScript Node.js, a été infecté par un hacker
Un développeur JavaScript estime que l'écosystème Node.js est « chaotique et peu sûr »


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Contacter le responsable de la rubrique Accueil