Aller au contenu
Sécurité medium

event-stream (npm)

4 min de lecture
Point de compromission dans la chaîne Rupture · étape Dépendances
Source
amont
Dépendances
Dépendances
Build & CI
ci
Packaging
artefact
Release
provenance
Registres
distribution
Déploiement
admission
Runtime
exécution
Rayon d'explosion — compromission à l'étape Dépendances, propagation possible aux consommateurs. Domaines : Gouvernance, Poste de travail, Source, Intégration, Packaging, Fournisseurs, Vulnérabilités
Gravité élevé
Paquet npm très populaire cédé par son mainteneur à un tiers, qui y ajoute une dépendance malveillante volant des portefeuilles Bitcoin (Copay).
1,5 M/sem
téléchargements
1600+
paquets dépendants
~2 mois
exposition
copay
cible (portefeuille)

En bref

Date
26/11/2018
Gravité
Élevé
Étape de la chaîne
Dépendances
Domaines SOCLE
Gouvernance+ Poste de travail, Source, Intégration, Packaging, Fournisseurs, Vulnérabilités

Que s'est-il passé ?

Contexte

event-stream, paquet npm très populaire (plus de 1,5 M de téléchargements/semaine, 1600+ paquets dépendants), passe sous le contrôle d'un nouveau contributeur, « right9ctrl », à qui la propriété est transférée après des contributions gagnant la confiance.

Mécanisme

Le 4 septembre 2018, une nouvelle version ajoute la dépendance flatmap-stream, conçue pour l'attaque : la version minifiée publiée sur npm diffère du dépôt git et contient une charge chiffrée en AES déchiffrée avec la description du package.json comme clé.

Impact

La charge cible les utilisateurs du portefeuille crypto copay (BitPay) : elle cherche les « hot wallets », mappe les clés publiques et exfiltre les clés privées des comptes à solde significatif vers un serveur distant. La version piégée est restée près de 2 mois.

Parades

Vérifier l'équivalence code publié vs source (provenance), surveiller les transferts de propriété, épingler et revoir les dépendances transitives, et alerter sur toute dépendance nouvellement ajoutée.

Chronologie de l'attaque

4 septembre 2018
Release piégée

right9ctrl publie une version ajoutant la dépendance malveillante flatmap-stream.

27 novembre 2018
Découverte

Un avertissement de dépréciation trahit la charge ; le paquet recevait alors plus de 1,5 M de téléchargements hebdomadaires.

Comment l'attaquant a procédé

Cet incident met en jeu les vecteurs d'attaque suivants du catalogue SOCLE ; chacun renvoie à sa fiche, où l'on trouve les exigences qui le neutralisent :

La leçon à en tirer

Ce qu'il faut retenir

Surveiller les changements de mainteneur ; quarantaine des nouvelles versions ; revue des dépendances transitives.

Les exigences SOCLE qui auraient limité cet incident

Cet incident se rattache à 60 exigences du référentiel, par domaine. Les satisfaire n'aurait pas forcément tout empêché, mais aurait réduit la probabilité de l'attaque, limité son impact ou accéléré sa détection :

Pour aller plus loin

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn