Skip to main content

Le package npm Lottie Player compromis pour voler des cryptomonnaies

Écrit par
feature open source

31 octobre 2024

0 minutes de lecture

Le 31 octobre 2024, un autre package npm populaire a été compromis et utilisé pour détourner des cryptomonnaies.

En bref : compromission du package npm Lottie Player

La bibliothèque npm populaire @lottiefiles/lottie-player contenait du code malveillant invitant les utilisateurs à connecter leurs portefeuilles crypto.

Le code malveillant a été ajouté aux versions 2.0.5, 2.0.6 et 2.0.7 publiées sur npm, après la compromission du jeton d’un compte du registre npm utilisé pour publier des packages. Ces versions ont été retirées de npm, puis la version 2.0.8 a été publiée à partir du code sain du dépôt GitHub du projet. Son contenu est identique à celui de la version 2.0.4.

Versions sûres et vulnérables du package npm Lottie Player

Selon votre capacité à intervenir, une mise à niveau ou un retour à une version antérieure vous permettra de remédier au problème des trois versions malveillantes connues qui ont été publiées :

  • Versions réputées sûres : @lottiefiles/lottie-player <= 2.0.4 

  • Versions réputées vulnérables : @lottiefiles/lottie-player@2.0.5, @lottiefiles/lottie-player@2.0.6, and @lottiefiles/lottie-player@2.0.7

  • Version réputée sûre : @lottiefiles/lottie-player@2.0.8

Comment vérifier si vous êtes vulnérable avec Snyk

Vous avez peut-être utilisé un outil d’automatisation des dépendances pour gérer votre arbre de dépendances, et mis à niveau vers l’une des versions malveillantes publiées sur le registre npm. Vous avez aussi pu effectuer une mise à niveau à l’aveugle vers les dernières versions dans vos environnements CI ou de développement, puis enregistrer ces modifications.

Vous pouvez utiliser Snyk de différentes façons pour vérifier si vous avez installé les versions malveillantes.

Interface des rapports sur les dépendances de Snyk

Accédez à l’élément de menu « Dépendances » de votre groupe ou de votre organisation, appliquez les filtres souhaités pour affiner la recherche, puis ouvrez le champ de recherche « Dépendances » et saisissez « lottiefiles » pour effectuer une recherche en texte libre.

L’exemple ci-dessous montre qu’aucun résultat n’est trouvé : les projets recherchés n’utilisent donc pas du tout cette dépendance.

Tableau de bord Snyk Dependencies affichant une recherche de « lottiefiles » sans résultat et une liste de dépendances de packages.

Si je remplace le texte par « lottie », je trouve d’autres dépendances dont le nom contient ce terme :

Page des dépendances Snyk affichant les résultats de recherche pour les packages Lottie, notamment les versions de lottie-react et de lottie-web

Une fois la dépendance sélectionnée, je peux vérifier dans quels projets elle est utilisée, quelles vulnérabilités la concernent, les problèmes de licence et d’autres informations sur la sécurité de la chaîne d’approvisionnement :

Tableau de bord des dépendances présentant deux versions de lottie-web, 5.12.2 et 5.9.6, avec une licence MIT indiquée pour l’une d’elles.

Snyk CLI

Si vous utilisez Snyk CLI dans vos workflows de développement ou vos processus de build CI, l’analyse Snyk vous indiquera si un package est vulnérable, par exemple :

$ snyk test

Testing /Users/lirantal/projects/repos/your-project-name...

Tested XXX dependencies for known issues, found 1 issue, YYY vulnerable paths.

Issues with no direct upgrade or patch:
  ✗ Embedded Malicious Code [Critical Severity][https://security.snyk.io/vuln/SNYK-JS-LOTTIEFILESLOTTIEPLAYER-8310516] in @lottiefiles/lottie-player@2.0.5
    introduced by [path to the package]
    No upgrade or patch available (Upgrade to versions <2.0.4 || >2.0.8 recommended)

Que s’est-il passé avec @lottiefiles/lottie-player ?

Comme lors de l’attaque similaire qui a touché la bibliothèque Polyfill, utilisée pour compromettre les utilisateurs via un CDN en juin 2024, et dont les origines remontent à janvier de la même année, cet incident visait lui aussi à voler des cryptomonnaies en s’en prenant aux portefeuilles crypto.

Des utilisateurs ont signalé dans le dépôt de code lottie-player qu’en utilisant la bibliothèque via un CDN, à partir de sources telles que https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js ou https://cdn.jsdelivr.net/npm/@lottiefiles/lottie-player@2.0.5/dist/lottie-player.min.js, ils voyaient s’afficher un écran de connexion à un portefeuille crypto, comme celui-ci, dans le fil de discussion de l’issue GitHub :

Menu de connexion à un portefeuille de cryptomonnaie répertoriant WalletConnect, MetaMask, Trust Wallet, Exodus, Uniswap Wallet, Phantom, Ledger Live et Coinbase

De nombreux utilisateurs qui dépendaient de @lottiefiles/lottie-player via des CDN tiers sans verrouiller correctement la version de la dépendance ont automatiquement reçu la version compromise, proposée comme la dernière version. La publication d’une nouvelle version avec du code source réputé sûr (qui rétablit essentiellement le code de la version 2.0.4) leur a probablement aussi permis de recevoir automatiquement le correctif.

Cela dit, l’impact semble considérable, compte tenu du nombre de projets dépendant du composant lottie-player et du nombre de téléchargements des versions malveillantes :

  • 73 packages npm dépendent de ce package

  • 36 762 téléchargements de la version 2.0.4, réputée sûre, ont été enregistrés au cours des 7 derniers jours

  • Environ 890 téléchargements du correctif 2.0.8, publié récemment, ont été enregistrés au cours des 12 dernières heures

Comment atténuer les risques liés à la sécurité de la chaîne d’approvisionnement via les CDN ?

Pour prévenir de futurs incidents de sécurité comme la compromission du composant web lottie-player ou la dépendance malveillante polyfill, nous vous recommandons de suivre quelques bonnes pratiques de sécurité :

  • Mettez en place une politique de sécurité du contenu (CSP) pour empêcher les sources indésirables et non fiables d’injecter des scripts, des balises d’image et d’autres objets dans votre application web.

  • Verrouillez toujours les versions de vos dépendances, qu’elles soient récupérées via des ressources CDN sur le réseau ou par l’intermédiaire d’un gestionnaire de packages.

  • Suivez les recommandations d’atténuation de l’équipe officielle de Lottie Player dans son commentaire ici et sur ses autres canaux officiels.

Vérifier vos applications

Si vous souhaitez tester vos applications et vos projets, mais que vous n’êtes pas client de Snyk, vous pouvez vous inscrire à un essai gratuit pour effectuer les tests ci-dessus. Cet essai vous permet d’analyser vos dépendances open source et vos images de conteneurs dans l’interface de ligne de commande ou votre SCM, afin de vérifier si vous utilisez l’une des versions vulnérables de lottie-player et de détecter d’éventuelles autres vulnérabilités dans vos projets.

Sécurisez votre code pendant le développement

Snyk analyse votre code pour détecter les problèmes de qualité et de sécurité, et vous conseille sur leur correction directement dans votre IDE.

Publié dans: