Snyk-Forschungsteam entdeckt schwerwiegende Sicherheitslücken durch Prototype Pollution in allen Versionen von lodash
5. Juli 2019
0 Min. LesezeitAm 2. Juli 2019 veröffentlichte Snyk eine Sicherheitslücke mit hohem Schweregrad durch Prototype Pollution (CVE-2019-10744), die alle Versionen von lodash betrifft. Sie wurde im Rahmen einer laufenden Analyse des Snyk-Sicherheitsforschungsteams entdeckt.
UPDATE: lodash veröffentlichte am 9. Juli Version 4.17.12, die die von Snyk bereitgestellten Fehlerbehebungen enthält und die Sicherheitslücke schließt. Wir empfehlen Ihnen dringend, auf die neueste Version von lodash zu aktualisieren.
Zum Zeitpunkt der Veröffentlichung dieses Artikels wurde noch keine offizielle Fehlerbehebung für diese Sicherheitslücke veröffentlicht. Snyk-Nutzer sind geschützt, indem sie einen Sicherheitspatch anwenden, der für etwa 50.000 anfällige Projekte verfügbar ist und die Sicherheitslücke in der neuesten Version 4.7.11 von lodash behebt.

Die beliebte npm-Bibliothek wird allein auf GitHub von 4,35 Millionen Projekten verwendet. Mit knapp 40.000 GitHub-Projektsternen wird die Bibliothek jeden Monat über 80 Millionen Mal heruntergeladen. Eine Sicherheitslücke mit hohem Schweregrad in einer so beliebten Bibliothek wie lodash betrifft daher einen großen Teil der npm-Nutzer.
Snyk hat aktiv Tausende automatische Pull Requests mit Fehlerbehebungen an Nutzer erstellt, um die Sicherheitslücke zu schließen. Im Folgenden erfahren Sie mehr über die Sicherheitslücke und die nächsten Schritte.
Die Nachricht über diese aktuelle Sicherheitslücke in lodash wurde bekannt, nur drei Monate nachdem wir eine ähnliche Sicherheitslücke durch Prototype Pollution in der äußerst beliebten JavaScript-Frontend-Bibliothek jQuery gemeldet hatten.
Wie bei anderen Sicherheitslücken durch Prototype Pollution ([1], [2], [3], [4], [5]) kann eine unsichere rekursive Zusammenführung von JSON dazu führen, dass das JavaScript-Objekt Object manipuliert wird. Dies wirkt sich über die Prototypenkette auf andere Datentypen aus. Je nach Anwendungsfall und Ausnutzbarkeit der Sicherheitslücke können die Folgen von der Einschleusung von Eigenschaften bis hin zu Code-Injektion und Denial-of-Service reichen.
Wir haben die Sicherheitslücke bereits zur Snyk-Datenbank hinzugefügt. Wenn Snyk Ihr Projekt überwacht und feststellt, dass es das anfällige Paket enthält, wurden Sie bereits über unsere regulären Warnmeldungen benachrichtigt. Andernfalls sollten Sie Ihr Anwendungs-Code-Repository überprüfen, um festzustellen, ob es von der anfälligen lodash-Version betroffen ist.
Informationen zur Sicherheitslücke in lodash
Die Funktion defaultsDeep ließ sich mithilfe einer constructor-Nutzlast dazu bringen, Eigenschaften von Object.prototype hinzuzufügen oder zu ändern. Das folgende Beispiel zeigt, wie sich diese Sicherheitslücke auf eine JavaScript-Anwendung auswirkt:
Nachdem wir die Grundlagen von Prototype Pollution behandelt haben, können wir uns die konkrete Sicherheitskorrektur ansehen, die Snyks Engineer Kirill als Pull Request im GitHub-Repository der JavaScript-Bibliothek lodash eingereicht hat: https://github.com/lodash/lodash/pull/4336/files

Die Fehlerbehebung enthält eine Sicherheitsprüfung, die sicherstellt, dass das globale Objekt nicht über einen Schlüssel mit dem Wert constructor manipuliert wird. Außerdem wurde ein Testfall hinzugefügt, um künftige Rückfälle zu verhindern.
Weitere Informationen zu Sicherheitslücken durch Prototype Pollution und ihrer Funktionsweise finden Sie in unserer Beschreibung der lodash-Sicherheitslücke.
Was sollten Sie tun?
Wenn Sie Snyk bereits zur Überwachung Ihrer Anwendungen verwenden, sind Sie durch den oben genannten Sicherheitspatch bereits automatisch geschützt. Dieser wurde Ihnen als Pull Request für Ihre betroffenen Projekte bereitgestellt.
Wenn Sie Snyk nicht verwenden, können Sie ein kostenloses Konto erstellen und Ihre Projekte aus Ihren Code-Repositories in das Snyk-Dashboard importieren. Nachdem Sie die Ergebnisse Ihres Snyk-Tests gesehen haben, können Sie Snyk einen Pull Request erstellen lassen, der die anfällige lodash-Bibliothek mithilfe eines Snyk-Patches absichert.
Derzeit gibt es keine einfache manuelle Fehlerbehebung. Sobald eine neue Version von lodash mit der Korrektur veröffentlicht wird, sollten Sie auf diese Version aktualisieren.
Snyk erstellt Patches für Sicherheitslücken mit erheblichen Auswirkungen, wie im Fall von lodash, das Millionen von Projekten im Node.js- und JavaScript-Ökosystem betrifft. Alle Patches werden sorgfältig getestet, um sicherzustellen, dass sie sich problemlos auf unterstützte Versionen der betroffenen Bibliothek anwenden lassen.
Eine ausführlichere Beschreibung des Patch-Prozesses von Snyk finden Sie in unserer Dokumentation unter Sicherheitslücken beheben sowie in diesem Blogbeitrag von Danny Grander, unserem Chief of Security: Woher kommen Sicherheitslücken?
Hinweis: Sobald eine offizielle Version von lodash mit der Fehlerbehebung für diese Sicherheitslücke veröffentlicht wird, erhalten Snyk-überwachte Projekte (unabhängig davon, ob sie derzeit gepatcht sind) automatisch einen Pull Request mit dem offiziellen Bibliotheks-Upgrade.
Verantwortungsvolle Offenlegung
Im Rahmen der im April 2019 vom Snyk-Team durchgeführten Sicherheitsforschung wurden diese und weitere Sicherheitslücken in lodash verantwortungsvoll an John Dalton, den Maintainer von lodash, gemeldet.
Der Prozess umfasste die Zusammenarbeit mit John in einem privaten Repository, um unsere Erkenntnisse und die von Snyk vorgeschlagenen Fehlerbehebungen für die Sicherheitslücken zu bestätigen. An diesem Prozess war Kirill, einer der Software Engineers von Snyk, beteiligt. Er erstellte Pull Requests ([1],[2]) mit den Fehlerbehebungen für lodash, die beide am 24. Juni zusammengeführt wurden.
Wir möchten John ausdrücklich dafür danken, dass er so schnell reagiert und unsere Unterstützung während der gesamten Behebung dieses Sicherheitsproblems begrüßt hat.
Wenn Sie glauben, eine mögliche Sicherheitslücke in Lodash entdeckt zu haben, können Sie diese im Rahmen unseres Programms zur Offenlegung von Sicherheitslücken mit uns besprechen. Weitere Informationen finden Sie hier: https://snyk.io/vulnerability-disclosure/
Das npm-Paket lodash in Zahlen
Erstveröffentlichung vor 7 JahrenNeueste Version: 4.7.11, veröffentlicht vor 10 Monaten im September 2018Bisher entdeckte Sicherheitslücken insgesamt: 4 (2 mit hohem, 2 mit mittlerem Schweregrad)

Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.