Trouver les dépendances NPM qui sont vulnérables au piratage de compte • Registre

Suite à la récente divulgation de la technique de détournement de certains paquets NPM, l’ingénieur en sécurité danois Tariq a proposé une stratégie de protection pour ceux qui souhaitent évaluer si leurs applications Web contiennent des dépendances liées à des domaines de messagerie destructeurs.

Le NPM, acquis par GitHub de Microsoft en mars 2020, gère le registre NPM, un référentiel Web de bibliothèques de codes inclus par les développeurs Web dans leurs applications. Il héberge actuellement près de deux millions de packages et gère plus de 174 milliards de téléchargements par mois.

L’attaque, décrite plus tôt ce mois-ci par le consultant en sécurité Lance Vick, consiste à détecter les paquets NPM gérés par des comptes de messagerie associés à des domaines expirés. Lorsqu’un domaine expiré est enregistré, un attaquant pourrait alors contrôler toutes les adresses e-mail associées à ce domaine.

La reprise du package NPM associé à ce domaine changera alors pour réinitialiser le mot de passe du compte NPM associé à l’adresse e-mail que vous utilisez – le message de réinitialisation du mot de passe ira au nouveau titulaire du compte. Il s’agit d’un vecteur d’attaque connu qui n’a pas simplement été corrigé.

Lève-toi et bats-toi

La stratégie de sécurité décrite par l’ingénieur en sécurité danois Tariq offre aux administrateurs et aux développeurs la possibilité de prévenir cette menace. Cela inclut la compilation d’une liste de packages NPM dans vos applications et la récupération de chaque package pour son e-mail de responsable :

npm view package_name_here maintainers.email

La CLI NPM fournit simplement ces informations, bien qu’elle vous avertisse lors du processus de création de compte : “Votre adresse e-mail sera ajoutée aux métadonnées de vos packages publiés afin qu’elle puisse être vue publiquement.”

L’étape suivante consiste à compiler une liste d’adresses e-mail qui peuvent être facilement extraites en copiant l’historique de sortie CLI et en le collant dans un outil tel que Debounce’s Email Extractor pour supprimer le texte superflu.

La liste de diffusion peut ensuite être exécutée via un outil de validation d’e-mails en masse (tel que H-supetools) pour identifier les adresses associées aux domaines expirés. Tous les packages associés peuvent ensuite être marqués pour suppression en fonction des préoccupations que les comptes de maintenance peuvent être repris à tout moment.

De plus, Tariq pense que ce processus serait assez facile à automatiser.

Risque et récompense

Lorsqu’on lui a demandé si une telle approche pouvait aider les assaillants, Tariq a déclaré qu’il ne la considérait pas comme une menace.

“Les utilisateurs malveillants connaissent déjà les moyens ou peuvent trouver des moyens”, a-t-il déclaré. S’inscrire dans le mail. “Mais nous devons dire aux défenseurs comment rester défendus.”

Il compare la situation à la façon dont elle a été largement discutée sur le Web Log4shell, qui a sensibilisé les attaquants mais a encore plus aidé les défenseurs.

Il convient de noter que le nombre de mainteneurs de NPM qui ont créé des comptes à l’aide de domaines personnalisés et ont laissé ces domaines expirer est probablement assez faible.

Heureusement, c’est moins qu’en décembre de l’année dernière, lorsque des chercheurs en sécurité ont scanné le NPM et trouvé 2 818 adresses e-mail de tuteurs associées à des domaines expirés qui leur ont permis de détourner 8 494 packages en prenant le contrôle d’un compte.

Les packages NPM démarrés présentent un risque de sécurité potentiellement sérieux, en particulier si les packages compromis sont devenus dépendants d’applications ou de bibliothèques répandues.

Lance Vick, qui a demandé son avis sur l’approche de Tariq, a déclaré qu’il l’avait plus ou moins fait pour trouver le domaine qu’il avait expiré lors de l’attaque qu’il a décrite.

Chaînes qui nouent

Pour aider les clients à comprendre les risques de la chaîne d’approvisionnement, envoyez un e-mail à Vick à S’inscrire “Je lis par programme le nombre de mainteneurs / e-mails uniques qui vérifient leurs dépendances. Habituellement, les packages ont plusieurs mainteneurs, chacun pouvant prendre le relais.”

“Alors je peux dire quelque chose comme ceci :” Les 2 415 personnes qui ont ces adresses e-mail sont désormais plus fiables que vos propres ingénieurs en logiciel car elles peuvent exécuter efficacement n’importe quel code qu’elles veulent dans votre infrastructure de production sans que personne ne l’examine. “

“De telles allégations ne font pas plaisir aux auditeurs de conformité, mais elles sont vraies et doivent être dites.”

Vick a déclaré que l’autre approche qu’il avait utilisée pour le client consistait à écrire un script pour interroger la propriété du domaine pour tous les domaines de la chaîne d’approvisionnement logicielle du client et être en mesure d’identifier le domaine expiré. Il a également déclaré qu’il essayait souvent de simplement réinitialiser les mots de passe des comptes NPM associés aux dépendances du client afin de donner au client une liste de personnes non autorisées par 2FA et qui courent un plus grand risque de prendre le contrôle du compte.

“Le risque d’hameçonnage affecte environ 90 % des packages que j’ai essayés”, a-t-il déclaré, “mais cela ne peut pas simplement être automatisé”.

Selon Aqua Security, le nombre d’attaques sur la chaîne d’approvisionnement des logiciels a augmenté de 300 % en 2021 par rapport à l’année précédente. Et les rapports WhiteSource Security [PDF] En 2021, découverte de plus de 1 300 packages NPM malveillants.

Vick a déclaré qu’il n’était au courant que de deux des centaines de sociétés de technologie financière qu’il a rencontrées, directement ou indirectement, qui examinent activement le code de dépendance auquel elles font confiance pour contrôler une énorme quantité de richesses.

“Peu de gens réalisent que le code copié par des étrangers sur Internet doit être examiné sous le même contrôle, sinon plus, que le code écrit par les employés”, a-t-il déclaré. “La réalité est que la plupart des entreprises font plus confiance au code écrit par des inconnus au hasard qu’à leurs employés, et cela provoque des gros titres vraiment embarrassants.”

Vick a ajouté: “Je sympathise en quelque sorte avec les historiens qui ont essayé de normaliser leur vie avec du bon sens, comme se laver les mains et les outils entre les patients.”

Un porte-parole de GitHub et NPM n’a pas répondu dans l’immédiat à la demande de commentaire.

Signes de progrès

Entre autres choses, NPM est au courant d’une attaque de prise de contrôle de compte et oblige les titulaires de compte NPM à activer l’authentification à deux facteurs (2FA), ce qui peut aider à prévenir les problèmes liés au compte (bien que cela ne garantisse pas l’intégrité du code, comme le code de signature) .

Le registre de code a commencé à rendre 2FA obligatoire pour les 100 meilleurs mainteneurs de packages en février, alors qu’environ un tiers des 35 packages les plus populaires n’utilisaient pas 2FA, selon Aqua Security.

NPM prévoit que les 500 meilleurs mainteneurs de paquets utilisent 2FA d’ici la fin mai et l’étendent plus tard cette année aux mainteneurs de paquets avec plus d’un million de téléchargements hebdomadaires ou 500 personnes à charge.

Cependant, cela laisse aux responsables des packages moins largement utilisés le soin de décider si la sécurité de 2FA est payante. Pour ce faire, NPM a mis en place une “vérification de connexion avancée” pour ce groupe, ce qui implique de recevoir un code unique pour vérifier la vérification de votre compte par e-mail. Vous devez activer 2FA pour éviter cette étape supplémentaire. ®

Leave a Comment