Lors de la conférence interactive Node.js qui s'est tenue la semaine dernière à Vancouver, npm Inc. a annoncé le lancement de nouvelles fonctionnalités de sécurité visant à rendre le registre npm plus sécurisé contre les attaquants.
Compte tenu de son utilisation répandue et de la manière dont les développeurs JavaScript utilisent des paquets npm même dans des buts mineurs, la sécurité du registre est primordiale. Si un attaquant devait accéder aux informations d'identification d'un paquet largement référencé, les dommages pourraient se répandre.
Le nouvel outil de ligne de commande npm token
offre de nouvelles façons de créer des jetons de manière plus sécurisée. La possibilité de limiter les jetons d'authentification devient particulièrement utile dans les situations où l'un d'eux est accidentellement divulgué. Par exemple :
npm token create —cidr=[10.0.0.1/32]
Cela créera un jeton qui ne peut être utilisé que pour une plage IP donnée. Dans une situation où un jeton est divulgué dans le contrôle des sources ou dans les journaux d'intégration continue, ce jeton ne sera utile que dans cette plage IP. Si un attaquant devait obtenir le jeton, il y aurait des limites à son périmètre d'utilisation.
Les jetons en lecture seule sont maintenant également disponibles :
npm token create —readonly
Un jeton créé de cette façon sera en mesure de lire le paquet, mais pas de le publier.
Une autre nouvelle fonctionnalité est de protéger un profil avec une authentification à deux facteurs (A2F). Les comptes peuvent être intégrés à des applications d'authentification existantes telles que Google Authenticator ; les SMS ne sont pas une option.
Lorsque l'A2F est activée en mode auth-and-writes
, les opérations telles que la publication d'une nouvelle version ou le changement de tag "latest" nécessiteront un mot de passe unique de l'authentificateur. Voici une capture d'écran de ce à quoi ressemble le processus lors de l'activation d'A2F.
Actuellement, l'A2F est activée par profil. Cela signifie que si un paquet a plusieurs mainteneurs, chacun doit activer l'A2F. Dans un avenir proche, npm offrira la possibilité d'exiger l'A2F pour un paquet. En outre, les organisations utilisant des dépôts privés pourront activer l'A2F au niveau organisationnel.
Selon le CTO de npm, CJ Silverio, une partie de leur objectif est de s'assurer que le registre est aussi sécurisé que possible. Silverio indique : "Npm veut être si ennuyeux et fiable que vous pouvez utiliser npm plusieurs fois par jour" sans vous soucier de l'intégrité du registre.
Les développeurs peuvent utiliser les nouveaux outils CLI avec npm install -g npm@next
.