Skip to main content

Lottie Player npm-Paket kompromittiert: Diebstahl von Krypto-Wallets

Artikel von
feature open source

31. Oktober 2024

0 Min. Lesezeit

Am 31. Oktober 2024 kam es bei einem beliebten npm-Paket erneut zu einer Paketkompromittierung und einem Kryptowährungsdiebstahl.

Das Wichtigste zur Kompromittierung des Lottie Player npm-Pakets

Die beliebte npm-Bibliothek @lottiefiles/lottie-player enthielt schädlichen Code, der Nutzer dazu auffordert, ihre Krypto-Wallets zu verbinden.

Der schädliche Code wurde den npm-Versionen 2.0.5, 2.0.6 und 2.0.7 hinzugefügt, nachdem ein Token für ein npm-Registry-Konto, das zum Veröffentlichen von npm-Paketen verwendet wurde, kompromittiert worden war. Diese Versionen wurden von npm entfernt. Anschließend wurde Version 2.0.8 mit dem sicheren Code aus dem GitHub-Code-Repository des Projekts veröffentlicht, inhaltlich identisch mit Version 2.0.4.

Sichere und anfällige Versionsbereiche des Lottie Player npm-Pakets

Je nachdem, wie schnell Sie reagieren können, lässt sich das Problem durch ein Upgrade oder ein Downgrade beheben. Damit können Sie die drei bekannten schädlichen Versionen beseitigen:

  • Bekanntermaßen sicher: @lottiefiles/lottie-player <= 2.0.4 

  • Bekanntermaßen anfällig: @lottiefiles/lottie-player@2.0.5, @lottiefiles/lottie-player@2.0.6, and @lottiefiles/lottie-player@2.0.7

  • Bekanntermaßen sicher: @lottiefiles/lottie-player@2.0.8

So finden Sie mit Snyk heraus, ob Sie betroffen sind

Möglicherweise haben Sie ein Tool zur Automatisierung von Abhängigkeiten verwendet, um Ihren Abhängigkeitsbaum zu verwalten, und dabei ein Upgrade auf eine der schädlichen Versionen durchgeführt, die in der npm-Registry veröffentlicht wurden. Oder Sie haben in CI- oder Entwicklungsumgebungen ohne Prüfung auf die neuesten Versionen aktualisiert und diese Änderungen übernommen.

Mit Snyk können Sie auf verschiedene Weise feststellen, ob Sie die schädlichen Versionen installiert haben.

Snyk-Benutzeroberfläche für Abhängigkeitsberichte

Rufen Sie für Ihre Gruppe oder Organisation den Menüpunkt „Dependencies“ auf, wenden Sie beliebige Filter an, um die Suche einzugrenzen, und öffnen Sie anschließend das Suchfeld „Dependencies“. Geben Sie dort „lottiefiles“ ein, um eine Freitextsuche durchzuführen.

Das folgende Beispiel zeigt, dass keine Ergebnisse gefunden werden. Die durchsuchten Projekte verwenden diese Abhängigkeit also nicht:

Snyk-Dependencies-Dashboard mit einer Suche nach „lottiefiles“, bei der keine Ergebnisse gefunden wurden, und einer Liste von Paketabhängigkeiten.

Wenn ich den Suchtext auf „lottie“ ändere, finde ich andere Abhängigkeiten, deren Name diesen Text enthält:

Snyk-Seite „Dependencies“ mit Suchergebnissen für Lottie-Pakete, darunter die Versionen von lottie-react und lottie-web

Nach der Auswahl kann ich überprüfen, in welchen Projekten sie verwendet werden, welche Sicherheitslücken sie betreffen, ob es Lizenzprobleme gibt und welche weiteren Informationen zur Supply-Chain-Sicherheit vorliegen:

Abhängigkeits-Dashboard mit zwei lottie-web-Versionen, 5.12.2 und 5.9.6; für einen Eintrag wird eine MIT-Lizenz angezeigt.

Snyk CLI

Wenn Sie die Snyk CLI in Ihren Entwicklungs-Workflows oder CI-Build-Prozessen verwenden, zeigt Ihnen ein Snyk-Scan Informationen zu anfälligen Paketen an, zum Beispiel:

$ 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)

Was ist bei @lottiefiles/lottie-player passiert?

Wie bei dem Angriff, bei dem im Juni 2024 die Polyfill-Bibliothek kompromittiert und Nutzer über ein CDN angegriffen wurden – dessen Ursprung bis in den Januar desselben Jahres zurückverfolgt wurde –, zielte auch dieser Vorfall darauf ab, Kryptowährungen über den Zugriff auf Krypto-Wallets zu stehlen.

Nutzer berichteten im lottie-player-Code-Repository, dass beim Laden der Bibliothek über ein CDN, etwa von https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js oder https://cdn.jsdelivr.net/npm/@lottiefiles/lottie-player@2.0.5/dist/lottie-player.min.js, ein Anmeldebildschirm für eine Krypto-Wallet angezeigt wurde, wie in diesem GitHub-Issue zu sehen:

Menü zur Verbindung von Kryptowährungs-Wallets mit WalletConnect, MetaMask, Trust Wallet, Exodus, Uniswap Wallet, Phantom, Ledger Live und Coinbase

Viele Nutzer, die die Abhängigkeit @lottiefiles/lottie-player über CDNs von Drittanbietern nutzten, ohne die Abhängigkeitsversion festzuschreiben, erhielten automatisch die kompromittierte Version als neueste Version. Durch die Veröffentlichung einer neuen Version mit bekanntermaßen sicherem Quellcode – im Grunde eine Rückkehr zu Version 2.0.4 – haben diese Nutzer vermutlich automatisch auch das Update erhalten.

Dennoch scheint das Ausmaß beträchtlich zu sein, angesichts der Anzahl abhängiger Projekte, die die lottie-player-Komponente verwenden, und der Downloads der bereits kompromittierten Versionen:

  • 73 npm-Pakete sind von diesem Paket abhängig

  • Die bekanntermaßen sichere Version 2.0.4 wurde in den letzten 7 Tagen 36.762-mal heruntergeladen

  • Das kürzlich veröffentlichte Update 2.0.8 wurde in den letzten 12 Stunden etwa 890-mal heruntergeladen

Wie lassen sich Supply-Chain-Sicherheitsrisiken durch CDNs mindern?

Um zukünftige Sicherheitsvorfälle wie die Kompromittierung der lottie-player-Webkomponente oder die schädliche Polyfill-Abhängigkeit zu verhindern, sollten Sie einige bewährte Sicherheitsmaßnahmen ergreifen:

  • Setzen Sie eine Content Security Policy ein, um zu verhindern, dass unerwünschte und nicht vertrauenswürdige Quellen Skripte, Bild-Tags und andere Objekte in Ihre Webanwendung einschleusen.

  • Fixieren Sie Ihre Abhängigkeiten immer auf eine bestimmte Version – unabhängig davon, ob Sie sie über CDN-Ressourcen im Netzwerk oder einen Paketmanager beziehen.

  • Befolgen Sie die Empfehlungen zur Risikominderung des offiziellen Lottie Player-Teams in seinem Kommentar hier und in anderen offiziellen Kanälen.

Anwendungen überprüfen

Wenn Sie Ihre Anwendungen und Projekte testen möchten, aber noch kein Snyk-Kunde sind, können Sie sich für eine kostenlose Testversion registrieren und die oben beschriebenen Tests durchführen. Mit der Testversion können Sie Open-Source-Abhängigkeiten und Container-Images über die CLI oder Ihr SCM scannen, um festzustellen, ob Sie eine der anfälligen Versionen von lottie-player verwenden und möglicherweise weitere Sicherheitslücken in Ihren Projekten aufzudecken.

Sichern Sie Ihren Code während der Entwicklung

Snyk scannt Ihren Code auf Qualitäts- und Sicherheitsprobleme und gibt Ihnen direkt in Ihrer IDE Empfehlungen zur Behebung.

Gepostet in: