
Lehrreiche Demo unsicherer Deserialisierung in Node.js (CVE-2017-5941) mit cookie-basierter Payload-Injektion und Reverse-Shell-Exploitation für Sicherheitsschulungen.
Node.js ist eine Open-Source-Laufzeitumgebung, die zur Implementierung von Serverfunktionalitäten in JavaScript verwendet wird.
Ein bestimmtes Softwarepaket innerhalb von Node.js enthält eine anfällige Funktion zur Deserialisierung, die dazu führt, dass unbeabsichtigte Befehle ausgeführt werden, wenn der Client ein speziell präpariertes Cookie bereitstellt.
Diese Schwachstelle wurde nachgestellt und kann potenziell eine Reverse-Shell starten, was durch die nicht bereinigten Eingabedaten möglich ist, die aus einem Cookie in der Anfrage eines Clients gelesen werden. Der Client kann seine Cookies bearbeiten, ein unsicheres Payload mit einem Bash-Befehl injizieren und an den Server senden, wo dieser den Befehl blindlings ausführt. Dies kann dazu führen, dass unbefugte Benutzer auf Datenbanken oder vollständige Maschinen zugreifen.
Die ethischen Implikationen dieser Schwachstelle liegen in den Daten, die in den Datenbanken auf dem Backend-Server abgerufen werden können. Abhängig von den Daten kann dies die Sicherheit eines Benutzers beeinträchtigen und die Zuverlässigkeit und den Ruf eines Unternehmens beeinflussen. Aus diesem Grund ist es wichtig, die Schwachstellen vor anderen Angreifern zu finden. Es gibt eine Vielzahl verschiedener Werkzeuge wie Snyk, Burp Suite und andere kostenpflichtige Optionen, um diese Schwachstellen zu identifizieren.
Der beste Weg, diese Schwachstelle zu mildern, ist eine ordnungsgemäße Eingabebereinigung und die Einstellung jeglicher Nutzung der anfälligen unserialize-Funktion in Node.js. Als Ersatz für diese anfällige Funktion wird JSON.parse empfohlen