Des milliers de paquets npm exposés en raison de noms de domaine expirés

Selon un récent projet de recherche académique, plusieurs milliers de paquets npm seraient mis en danger à cause d'adresses e-mail aux noms de domaine expirés.

L'étude en question, menée l'année dernière (décembre 2021) par une équipe de chercheurs de Microsoft et de l'université d'État de Caroline-du-Nord, porte sur l'analyse des métadonnées de très exactement 1 630 101 bibliothèques JavaScript présentes dans le Node Package Manager (registre npm).

Il en ressort que 2 818 développeurs utilisent une adresse e-mail avec un nom de domaine arrivé à expiration pour les comptes de leurs projets (ah, ces side projects qui nous tiennent tant à cœur !). Une bonne partie de ces noms de domaine seraient par ailleurs libres à l'achat.

L'équipe de chercheurs explique que des personnes mal intentionnées pourraient justement acheter ces noms de domaine, re-enregistrer les adresses e-mail des mainteneurs ainsi renseignées, et prendre la main sur leurs paquets npm en procédant facilement à un reset du mot de passe. Une telle prise en main reste encore possible à ce jour car le portail npm n'impose pas l'usage de l'authentification à deux facteurs (2FA) pour les propriétaires de comptes.

Au total, l'équipe de recherche explique que ces 2 818 propriétaires de comptes portent à eux seuls (et exposent, de fait) 8 494 paquets npm. Il précisent également que chacun de ces paquets dispose en moyenne d'environ 2,43 dépendances directes, ce qui implique qu'une opération malveillante pourrait en réalité impacter des dizaines de milliers de projets en aval.

Bien que les tentatives de récupération puissent être identifiées par les propriétaires de comptes, les chercheurs mettent néanmoins en avant le fait que beaucoup de bibliothèques et projets ne sont plus maintenus (58,7%), ce qui augmente le risque que d'éventuelles attaques passent inaperçues aux yeux des mainteneurs.

Les chercheurs expliquent avoir informé l'équipe de sécurité de npm de leur découverte ainsi que GitHub, qui détient le gestionnaire de paquets depuis 2020. Alors qu'aucune réponse ne leur a été faite, on peut néanmoins noter que les équipes de npm ont annoncé fin 2021 leur souhait de renforcer progressivement la sécurité des comptes de développeurs à l'aide de la double authentification.

Ce process de sécurisation se déroule en plusieurs phases, la première étant la configuration obligatoire d'une authentification 2FA pour le top 100 des comptes mainteneurs de la plateforme, mise en place au cours du mois de janvier.

Parmi les autres points mis en avant par cette étude :

  • 2,2% (33 249) paquets font usage de scripts d'installation, ce qui va à l'encontre des recommandations en sécurité de npm et pourrait permettre l'exécution de commandes malicieuses.
  • Le top 1% des paquets npm (14 941) sont en moyenne maintenus par 32,4 personnes, ce qui augmente le risque d'attaques par le biais de comptes inactifs.
  • 389 paquets ont un ratio de 40 contributeurs pour un seul mainteneur, exposant ces projets à l'apparition de failles de sécurité (volontaires ou non) par le biais de contributions trop nombreuses.
  • Le top 1% des mainteneurs sont propriétaires d'environ 180,3 paquets, disposant chacun d'une moyenne de 4 010 de paquets avec des dépendances directes. Ces développeurs surchargés présentent également un risque de sécurité car ils ne disposent pas du temps nécessaire pour la bonne maintenance et le suivi des paquets sur lesquels ils travaillent.

Consulter l'étude mentionnée dans cet article : What are Weak Links in the npm Supply Chain?

Suivre Les Joies du Code sur Twitter