Node.js-Release behebt kritische HTTP-Sicherheitslücke
6. Februar 2020
0 Min. LesezeitHeute, am 6. Februar 2020, wurde ein neues Node.js-Sicherheitsrelease veröffentlicht, das eine kritische und zwei schwerwiegende Sicherheitslücken behebt. Dieses Release umfasst außerdem eine strengere HTTP-Parser-Implementierung. Laut den offiziellen Release Notes, die im folgenden Node.js-Commit enthalten sind:
Außerdem ist das HTTP-Parsing aus Sicherheitsgründen strenger. Da dies zu Interoperabilitätsproblemen mit einigen nicht konformen HTTP-Implementierungen führen kann, lassen sich die strengen Prüfungen mit dem Befehlszeilen-Flag
--insecure-http-parseroder der HTTP-Option insecureHTTPParser deaktivieren. Die Verwendung des unsicheren HTTP-Parsers sollte vermieden werden.
Kurzfassung
Alle aktiv unterstützten Node.js-Versionen 10.x, 12.x und 13.x sind betroffen. Wir empfehlen Ihnen dringend, so bald wie möglich auf eine der folgenden Versionen mit Fehlerkorrektur zu aktualisieren: 10.19.0, 12.15.0 und 13.8.0
2020-02-06, Version 10.19.0, Dubnium (LTS)
2020-02-06, Version 12.15.0, Erbium (LTS)
2020-02-06, Version 13.8.0, aktuell
Bin ich betroffen?
Node.js-Versionen 10.x, 12.x und 13.x sind betroffen, wenn sie HTTP und TLS direkt oder indirekt verwenden, zum Beispiel Projekte, die auf Express-Webanwendungen basieren.
Sie sind ebenfalls betroffen, wenn Sie eine nicht mehr unterstützte Node.js-Version wie 11.x, 9.x oder <= 8.x verwenden.
Die folgenden Node.js-Schwachstellen wurden identifiziert und den jeweiligen CVEs zugeordnet:
CVE-2019-15606: Nachfolgendes OWS wird nicht aus HTTP-Headerwerten entfernt.
CVE-2019-15605: HTTP-Request-Smuggling durch einen fehlerhaften Transfer-Encoding-Header.
CVE-2019-15604: Eine Assertion auf einem TLS-Server lässt sich aus der Ferne mit einer fehlerhaften Zertifikatszeichenfolge auslösen.
Die Node.js-Schwachstelle in HTTP-Headern CVE-2019-15606
Die Schwachstelle betrifft HTTP-Headerwerte, aus denen nachfolgendes OWS nicht entfernt wird, wie in den Kommentaren zu diesem Commit auf GitHub beschrieben:
HTTP-Headerwerte können nachfolgendes OWS enthalten, dieses sollte jedoch entfernt werden. Es ist semantisch kein Bestandteil des Headerwerts. Wird es dennoch als Teil des Werts behandelt, kann dies zu falschen Ungleichheiten zwischen erwarteten und tatsächlichen Headerwerten führen.
Beachten Sie, dass ein einzelnes SPC als vorangestelltes OWS vor dem Feldwert üblich ist und bereits vom HTTP-Parser behandelt wird, indem sämtliches vorangestelltes OWS entfernt wird. Nur das nachfolgende OWS muss vom Parser-Nutzer entfernt werden.
„Wie wurde diese Schwachstelle behoben?
Relevante Commits: 25b6897e8a http: nachfolgendes OWS aus Headerwerten entfernen.
Siehe auch: RFC 7230 Abschnitt 3.2 und Abschnitt 3.2.3
Noch nicht öffentliche Referenzen: der ursprüngliche GitHub-Pull-Request und der HackerOne-Bericht
Die Node.js-Schwachstelle für HTTP-Request-Smuggling CVE-2019-15605
Bei Node.js wurde eine Schwachstelle für HTTP-Request-Smuggling-Angriffe mit einem fehlerhaften Transfer-Encoding-Header entdeckt. Ein Beispiel dafür, wie ein solcher Angriff ablaufen könnte, zeigt der folgende HTTP-Request-Ausschnitt, der jetzt verwendet wird, um auf diese Regression zu testen:
Wie wurde diese Schwachstelle behoben?
Relevante Commits: eea3a7429b test: Requests lassen sich nicht mithilfe von TE einschleusen und 8f41e837bb deps: llhttp auf 2.0.4 aktualisieren
Noch nicht öffentliche Referenzen: der ursprüngliche GitHub-Pull-Request und der HackerOne-Bericht
Die Node.js-Schwachstelle CVE-2019-15604
Bei Node.js wurde eine TLS-Schwachstelle entdeckt, durch die sich eine Assertion auf einem TLS-Server aus der Ferne mit einer fehlerhaften Zertifikatszeichenfolge auslösen lässt. Dies wird in der ursprünglichen Commit-Nachricht näher erläutert:
X509V3_EXT_print kann einen anderen Wert als 1 zurückgeben, wenn die X509-Erweiterung das Drucken in einen Puffer nicht unterstützt. Anstatt mit einer nicht behebbaren Assertion abzubrechen, wird der entsprechende Wert in der Hashmap durch einen JS-null-Wert ersetzt.
Wie wurde diese Schwachstelle behoben?
Relevante Commits: 1156a9e5f8 crypto: Assertion aufgrund einer nicht unterstützten Erweiterung beheben.
Die Details des Sicherheitsberichts finden Sie im HackerOne-Bericht
Wir bei Snyk schätzen die Sicherheits-Community und sind überzeugt, dass die verantwortungsvolle Offenlegung von Sicherheitslücken in Open-Source-Paketen dazu beiträgt, die Sicherheit und Privatsphäre der Nutzer zu gewährleisten. Wenn Sie glauben, eine Schwachstelle in einer Open-Source-Software gefunden zu haben, können Sie uns unter https://snyk.io/vulnerability-disclosure kontaktieren. Unser Programm zur verantwortungsvollen Offenlegung soll sowohl Entwickler als auch meldende Sicherheitsforscher schützen und Entwicklern zugleich ermöglichen, sicher von den durch Forscher entdeckten Schwachstellen zu profitieren.
