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.

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.

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 :
- 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.
- 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.
- 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 dans notre proxy. Si nous détectons quelque chose, cela n'atteindra pas le navigateur de l'utilisateur.
- Optimisé pour la vitesse : Notre proxy 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.




