Skip to main content
Blog
Blog

L'attaque event-stream contre Copay illustre les risques liés aux dépendances

L'écosystème JavaScript a subi un choc majeur en novembre 2018 avec une attaque sophistiquée visant Copay, un fournisseur populaire de portefeuilles de cryptomonnaies. Connue sous le nom d'attaque event-stream, cet incident a mis en lumière les vulnérabilités critiques associées à l'utilisation de dépendances tierces dans le développement logiciel. Copay est désormais connu sous le nom de Bitpay Wallet. Comprendre l'attaque Event-stream, un package npm populaire, était largement utilisé par de nombreux projets pour gérer efficacement les flux de données

Jul 29, 2024 7 min read
L'attaque event-stream contre Copay, comment une seule dépendance npm a été détournée

En bref : vol cible de Bitcoin sur Copay via flatmap-stream

  • Le détournement poli : Le hijack supply chain le plus dangereux est le poli. Un mainteneur volontaire a repris event-stream, publie une mise a jour utile et tout le monde a remercie pendant que flatmap-stream attendait la build exacte de Copay.
  • Ciblé sur Copay : Le payload malveillant flatmap-stream ne s'activait que dans l'environnement Copay et cherchait les cles privees Bitcoin et Bitcoin Cash sur les portefeuilles bien garnis. cside deobfusque et analyse le code complet du script avant qu'il ne soit rendu dans le navigateur de l'utilisateur.
  • Méfiez-vous des nouvelles deps : Si vous installez une dependance JavaScript que vous n'avez pas revue vous-meme, traitez toute nouvelle sous-dependance obfusquee comme suspecte aujourd'hui. Sinon, surveillez au runtime ce que fait vraiment votre JS bundlise.

Peu de temps ? Découvrez le blocage de Magecart et de skimmers dans le navigateur par cside. Elle couvre tout ce qui suit en un seul déploiement.

L'écosystème JavaScript a subi un choc majeur en novembre 2018 avec une attaque sophistiquée visant Copay, un fournisseur populaire de portefeuilles de cryptomonnaies. Connue sous le nom de l'attaque event-stream, cet incident a mis en lumière les vulnérabilités critiques associées à l'utilisation de dépendances tierces dans le développement logiciel.

Copay est désormais connu sous le nom de Bitpay Wallet.

Le portefeuille Copay, désormais renommé Bitpay Wallet

Comprendre l'attaque

Event-stream, un package npm populaire, était largement utilisé par de nombreux projets pour gérer efficacement les flux de données au sein des applications Node.js. Sa fonctionnalité était essentielle pour les développeurs qui traitaient des flux de données complexes dans des applications en temps réel.

Dans cet article, nous avons couvert les vecteurs d'attaque cachés les plus courants et les attaques sur la chaîne d'approvisionnement de manière plus détaillée.

Initialement maintenu par un développeur dévoué et de confiance, le module était devenu un incontournable dans de nombreux projets logiciels en raison de sa fiabilité et de ses performances.

Comme cela arrive souvent dans la communauté open source, le mainteneur d'origine d'event-stream ne pouvait plus consacrer du temps à la gestion du projet. Fin 2018, la responsabilité d'event-stream a été transmise à un nouveau mainteneur bénévole. Cette transition, bien que courante dans les écosystèmes open source, ne s'est pas accompagnée des vérifications de sécurité rigoureuses habituelles. Ce nouveau mainteneur, présenté comme un contributeur bien intentionné, s'est révélé par la suite avoir des motivations malveillantes.

Peu après avoir pris le contrôle du projet, cette personne a publié plusieurs mises à jour d'event-stream. Intégrée dans ces mises à jour se trouvait une nouvelle dépendance appelée flatmap-stream. Ce package avait été spécifiquement conçu pour faire partie de la mise à jour d'event-stream. À l'insu des utilisateurs, flatmap-stream contenait du code malveillant obfusqué, une technique utilisée pour dissimuler sa véritable fonctionnalité et échapper aux outils de sécurité et aux revues de code.

Sachez que cside désobfusque le code afin de vous offrir une vue complète et détaillée de ce qui se charge. Nous analysons ensuite l'intégralité du code avant qu'il ne soit rendu par le navigateur de votre utilisateur. Cela aurait très probablement permis de détecter cet incident.

Capture du normaliseur de code de cside désobfusquant le JavaScript chargé

Le code malveillant contenu dans flatmap-stream était conçu pour s'activer uniquement lorsque certaines conditions étaient réunies, et plus précisément dans l'environnement de Copay, une application de portefeuille de cryptomonnaies développée en JavaScript. Cette spécificité illustre le caractère ciblé de l'attaque ; les attaquants avaient une connaissance précise de l'architecture interne et des dépendances de Copay.

Le payload était programmé pour détecter si l'environnement présentait les caractéristiques de la configuration de développement de Copay. Une fois confirmé, il exécutait des routines qui recherchaient et extrayaient les clés privées et les informations de portefeuille des comptes détenant des montants importants de Bitcoin et de Bitcoin Cash. Ces données étaient ensuite transmises à un serveur distant contrôlé par les attaquants.

Conséquences de l'attaque

L'incident event-stream est un exemple typique d'attaque sur la chaîne d'approvisionnement côté client, où la compromission d'un seul composant peut affecter des milliers de projets en aval.

L'insertion et l'activation furtives du code malveillant ont fait qu'il est resté indétecté pendant plusieurs semaines, une autre caractéristique récurrente des attaques sur la chaîne d'approvisionnement.

Durant cette période, toutes les mises à jour de l'application Copay incluaient involontairement le module compromis, mettant ainsi en danger toutes les installations actives et nouvelles du portefeuille. Les utilisateurs ignoraient totalement que leurs portefeuilles Copay nouvellement installés ou mis à jour étaient compromis.

Cette attaque a non seulement entraîné des pertes financières pour ces utilisateurs, mais a également porté un coup sévère à la confiance accordée aux modules open source et à l'écosystème npm dans son ensemble.

Elle a mis en évidence plusieurs enseignements critiques :

  1. Confiance et vérification : La nécessité de vérifier les références et la fiabilité des personnes auxquelles on confie le contrôle de projets open source largement utilisés.
  2. Visibilité et surveillance : L'importance d'avoir une visibilité sur le comportement des dépendances tierces, en particulier celles susceptibles de compromettre l'intégrité de logiciels critiques. C'est précisément ce que couvre cside.
  3. Réponse rapide : La nécessité de disposer de mécanismes de réponse rapide lorsqu'une vulnérabilité est découverte, afin d'éviter des dommages à grande échelle.

Actions immédiates et réponse de la communauté

Une fois l'injection malveillante découverte, l'équipe npm a agi rapidement pour retirer la version compromise d'event-stream du registre afin d'en empêcher la propagation. Cette version a également été dépréciée pour informer les développeurs du risque de sécurité et les dissuader de l'utiliser dans de nouveaux projets.

L'incident event-stream a eu des répercussions durables sur l'écosystème npm, renforçant l'importance de la sécurité dans le développement logiciel et les risques inhérents aux chaînes de dépendances, en particulier dans les projets open source. Il a conduit à une prise de conscience accrue et à une approche plus prudente vis-à-vis de l'intégration de packages tiers, contribuant ainsi à un environnement logiciel open source plus sécurisé.

Lisez ici pourquoi le risque lié à la chaîne d'approvisionnement ne s'arrête pas à npm.

Prévenir une attaque similaire avec cside

L'incident event-stream rappelle les vulnérabilités inhérentes aux dépendances logicielles. Ces vulnérabilités exposent les entreprises à des risques graves, notamment le vol de données et les pertes financières. Chez cside, nous surveillons, sécurisons et optimisons même vos scripts tiers. Nous proposons :

  • Surveillance avancée : Nos systèmes de surveillance gardent un œil sur tous les scripts et dépendances tiers intégrés à vos projets. Nous identifions toute activité inhabituelle ou modification en temps réel et vous en alertons, afin de prévenir les incidents avant qu'ils ne surviennent.
  • Renforcement automatisé de la sécurité : Nous automatisons la sécurisation de votre chaîne d'approvisionnement logicielle du côté des ressources tierces. Avant qu'un script ne soit délivré à un utilisateur sur votre site, nous avons analysé l'intégralité du code à la recherche d'éléments malveillants de notre côté. Si nous détectons quelque chose, cela n'atteindra pas le navigateur de l'utilisateur.
  • Optimisé pour la vitesse : cside fait l'inverse d'ajouter de la latence. Dans la plupart des cas, nous pouvons accélérer ces scripts pour réduire les temps de chargement.
  • Défense proactive : Notre approche proactive va au-delà de la simple surveillance. Nous analysons les tendances et les schémas des menaces en cybersécurité à l'échelle mondiale pour améliorer continuellement nos mécanismes de défense. Cette anticipation nous permet de prévoir et d'atténuer de nouveaux vecteurs d'attaque potentiels.
  • Facilité d'intégration : Intégrer cside à vos systèmes existants est extrêmement simple. Il suffit d'ajouter notre script en premier dans l'ordre de chargement pour que tous les autres soient couverts.

Commencez gratuitement avec cside.

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks, web security is not an enterprise-only problem.

Surveillez et sécurisez vos scripts tiers

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Commencez gratuitement, ou essayez Business avec un essai de 14 jours.

Interface du tableau de bord cside affichant la surveillance des scripts et les analyses de sécurité
Related Articles
Réserver une démonstration

Envie de passer tout ça en revue avec un ingénieur ?

Trente minutes, sur votre propre site. Pas de slides.

Nous vous montrerons :

Quels scripts tiers s'exécutent actuellement sur votre site
Où vous en êtes sur les exigences PCI DSS 6.4.3 et 11.6.1
Quelle part de votre trafic provient de bots et d'agents IA

Vous préférez simplement poser une question ?

Recherche de créneaux…

Humains uniquement. On le saurait.

Un problème pour réserver ? Ouvrir le calendrier dans un nouvel onglet

Quel problème cherchez-vous à résoudre ?

Dites-le-nous en une ligne et nous reviendrons vers vous avec quelque chose d'utile, pas un discours générique.

Nous aidons souvent sur :

Voir quels scripts tiers s'exécutent sur votre site
Les preuves pour PCI DSS 6.4.3 et 11.6.1
Les bots, les agents IA et le vol de comptes

Vous préférez réserver un créneau ? Choisir un créneau