Un incident opérationnel a provoqué la disparition d’une centaine de paquets npm
l’équipe derrière le gestionnaire de paquets de Node.js s’explique

Un gestionnaire de paquets est un système qui permet d'automatiser le processus d'installation, désinstallation, et de mise à jour de logiciels installés sur un système informatique. Il permet d'effectuer différentes opérations, comme l'utilisation de paquets provenant de supports variés (CD d'installation, dépôts sur internet, partage réseau…), la vérification des sommes de contrôle de chaque paquet récupéré pour en vérifier l'intégrité et la vérification des dépendances logicielles afin d'obtenir une version fonctionnelle d'un paquetage.

Il existe de nombreux gestionnaires de paquets en fonction des systèmes d'exploitation et plateformes de développement. NuGet par exemple est un gestionnaire de paquets conçu pour les plateformes de développement de Microsoft, y compris .NET. Pour les utilisateurs de Node.js, c'est le gestionnaire de paquets npm qui, depuis la version 0.6.3 de Node, fait partie de l'environnement et est donc automatiquement installé par défaut.

En parlant de npm, le samedi 6 janvier, des utilisateurs ont remarqué que de nombreux paquets avaient soudainement disparu ; ce qui était certainement dû à un problème avec le registre npm. Étant donné qu'une telle situation est susceptible d'avoir d'importantes conséquences, comme le dysfonctionnement de certains logiciels, certains utilisateurs ont pensé à un hack du registre qui aurait pu compromettre leurs comptes ou l’intégrité des paquets. Après avoir identifié le problème et restauré les paquets en question, l’équipe npm explique qu'il s'agissait plutôt d'un incident opérationnel.

L'équipe npm explique que l'incident opérationnel avec le registre a provoqué l'indisponibilité temporaire de 97 paquets pendant environ 30 minutes, et 9 paquets supplémentaires ont été indisponibles pendant environ trois heures. Une analyse complète et une explication technique de l'incident seront données en ce début de semaine, mais l'équipe npm a voulu communiquer plus tôt avec les développeurs afin de dissiper tout doute. « Aucun acteur malveillant n'était impliqué dans l'incident, et la sécurité des comptes des utilisateurs de npm et l'intégrité de ces 106 paquets n'ont jamais été compromises », a-t-elle assuré.

L'incident a été en fait causé par les systèmes de npm pour détecter les spams et les codes malveillants sur le registre. Donnant un aperçu de ce qui s'est passé, l'équipe npm fait savoir que les systèmes automatisés effectuent une analyse statique de plusieurs façons pour signaler des codes et auteurs suspects. Le personnel de npm passe ensuite en revue les éléments marqués pour savoir s’il faut empêcher la distribution des paquets concernés. Mais dans l’examen des éléments signalés avant l'incident, ils se sont trompés dans leur jugement. Et comme conséquence, cela a empêché la distribution du code légitime d'un éditeur aux développeurs dont les projets en dépendent.

L'erreur a été rapidement identifiée – dans les cinq minutes d'après l'équipe npm – et des procédures ont été suivies pour annuler le blocage. Pendant ce temps, des membres bien intentionnés de la communauté npm ont indépendamment tenté de republier les paquets qui avaient disparu, croyant qu'un acteur malveillant ou une faille de sécurité était à l'origine de ce problème. Mais cela a compliqué le processus entamé par l'équipe npm pour annuler le blocage des paquets. « Assurer l'intégrité des paquets affectés nécessitait des étapes et du temps supplémentaires », dit-elle.

L'équipe npm dit avoir évalué complètement les processus et les technologies impliqués, et déjà fait des changements immédiats pour éviter que ce problème se reproduise à l'avenir. Plus de détails sur l’incident seront fournis cette semaine.

Sources : GitHub, Blog npm

Et vous ?

Que pensez-vous de cet incident ?
Avez-vous remarqué ce problème au cours du weekend ?
Quels sont les problèmes auxquels vous êtes généralement confrontés avec les gestionnaires de paquets ? De quels gestionnaires de paquets s’agit-il ?