Un code malveillant découvert dans le package npm event-stream, téléchargé 8 millions de fois en 2,5 mois
27 novembre 2018
0 minutes de lectureUn package npm très utilisé, event-stream, s’est révélé contenir un package malveillant nommé flatmap-stream. Cette découverte a été signalée dans une issue GitHub ouverte sur le dépôt source.
Le package event-stream facilite la création et l’utilisation de flux. Très populaire, il est téléchargé environ 2 millions de fois par semaine. Depuis son ajout en septembre 2018, le package malveillant dépendant a été téléchargé près de 8 millions de fois.
Nous avons ajouté le package malveillant à notre base de données de vulnérabilités. Si votre projet est surveillé par Snyk et que nous détectons cette dépendance malveillante (event-stream@3.3.6 ou n’importe quelle version de flatmap-stream), vous en serez informé par les alertes habituelles de Snyk.
Si vos projets ne sont pas surveillés par Snyk et que vous souhaitez vérifier s’ils utilisent ce package, cliquez ici pour analyser vos dépôts avec Snyk, ou utilisez notre CLI pour tester vos projets localement.
Voici comment les événements se sont déroulés :
Bien que populaire, le package npm event-stream n’est pas activement maintenu. En réalité, il n’avait pas été mis à jour depuis quelques années, à l’exception de quelques modifications cosmétiques du fichier README — et de l’ajout de la bibliothèque malveillante en question.
Le prétendu attaquant, dont le pseudonyme GitHub est right9ctrl, aurait proposé son aide pour maintenir la bibliothèque. Le mainteneur d’origine, Dominic Tarr, probablement soucieux d’aider les utilisateurs, a accepté et accordé à right9ctrl les droits de publication. Il est important de noter que le transfert de propriété est une pratique assez courante dans le monde de l’open source. Il permet de maintenir des projets lorsque leurs auteurs d’origine ne sont plus en mesure ou ne souhaitent plus s’en charger.
Malheureusement, le nouveau propriétaire a ajouté une bibliothèque malveillante appelée flatmap-stream comme dépendance au package event-stream. Elle a ainsi été téléchargée et exécutée par tous les utilisateurs de event-stream (avec la version malveillante 3.3.6). La bibliothèque malveillante a cumulé près de 8 millions de téléchargements à ce jour.
Comme l’ajout de bibliothèques est une pratique courante, on comprend aisément pourquoi cette nouvelle bibliothèque n’a pas été examinée avec suffisamment d’attention. En outre, elle semble avoir rempli la fonction promise (gérer un flux de flat map). Enfin, le code malveillant qu’elle contenait était obfusqué pour échapper à la détection (il a été décodé par la suite, révélant le code malveillant).
La dépendance malveillante est passée inaperçue pendant 2,5 mois, jusqu’à ce qu’un utilisateur, Ayrton Sparling, remarque une dépendance suspecte et la signale le 20 novembre. Cette dépendance, qui contenait du code obfusqué, a rapidement été identifiée comme malveillante. L’information a été largement diffusée aujourd’hui (26 novembre). Snyk a immédiatement ajouté la vulnérabilité à sa base de données et l’a signalée au groupe de travail sur la sécurité de la Node Foundation, qui l’examine activement. npm a également réagi à l’incident et retiré de son registre la bibliothèque malveillante flatmap-stream, ainsi que la version incriminée 3.3.6 de event-stream.
Quant aux actions malveillantes elles-mêmes, le code semble avoir cherché à voler des bitcoins à l’application en redirigeant les bitcoins minés vers le portefeuille de l’attaquant, plutôt que vers la destination prévue. Pour en savoir plus, consultez la page de l’avis de sécurité de Snyk.
Que devez-vous faire ?
Votre priorité immédiate doit être de vérifier si vous utilisez la bibliothèque malveillante en question. Si c’est le cas, les prochaines compilations de votre application échoueront, mais les applications déjà déployées contiendront probablement le code malveillant, qui pourrait même être en cours d’exécution.
Si votre projet est surveillé par Snyk et que votre application contient ce package malveillant, vous en serez informé par les alertes habituelles de Snyk.
Si vous ne surveillez pas encore vos projets avec Snyk, vous pouvez effectuer une vérification ponctuelle : cliquez ici pour analyser vos dépôts ou utilisez notre CLI pour tester vos projets localement.
Je suis concerné. Que dois-je faire maintenant ?
Commencez par supprimer le package malveillant de votre application. Pour cela, revenez à la version 3.3.4 de event-stream.
Si votre application a utilisé la bibliothèque malveillante et traite des bitcoins, examinez son activité des trois derniers mois pour vérifier si des bitcoins minés ou transférés ne sont pas arrivés dans votre portefeuille.
Si votre application ne traite pas de bitcoins, mais qu’elle est particulièrement sensible, nous vous recommandons d’examiner son activité des trois derniers mois à la recherche d’activités suspectes, notamment de données envoyées sur le réseau vers des destinations non prévues. Nous pensons qu’il est peu probable que le code fasse autre chose que voler des bitcoins, mais l’analyse complète est toujours en cours.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.



