Sicherheit der Node.js Plattform – Sicherheitsanalyse des Event-Loops anhand einer REST-API

Bachelor-Studiengang IT Security

Gianluca Raberger, BSc

Betreuer: FH-Prof. Dipl.-Ing. Dr. Sebastian Schrittwieser, Bakk.

Ausgangslage

Mobilebanking, Musik- beziehungsweise Videostreaming sowie Social-Media-Plattformen setzen für ihre Webapplikationen die Technologie JavaScript ein. JavaScript ist von seiner früheren Funktionalität als „Click Handler“ oder „Inhalte nachladen“ weggewachsen. Mittlerweile werden mit JavaScript Serverapplikationen und Bezahldienste betrieben. Die Laufzeitumgebung, die das möglich macht, nennt sich Node.js, ein Projekt, welches 2009 erstmals von Ryan Dhal vorgestellt wurde. Durch diese Laufzeitumgebung ist JavaScript eine der populärsten Programmiersprachen der Welt geworden. Sicherheitsforschung, welche sich mit Node.js beschäftigt, fokussiert sich kaum auf die unterliegenden Technologien der Laufzeitumgebung. Dazu kommt, dass diese Technologien von sicherheitskritischen Bezahlplattformen wie PayPal oder Videostreaming-Anbieter wie Netflix mit großem Erfolg eingesetzt werden, ohne der Existenz eines Beleges, dass diese Laufzeitumgebung sicher ist.

Ziel

Ziel dieser Arbeit ist, herauszufinden, ob mittels Überladung des Event-Loops von Node.js sicherheitskritische Authentifizierungen umgangen werden können, womit die Integrität eines Systems nicht mehr gewährleistet ist. Dazu wurde die Sicherheit des Event-Loops in einer realitätsgetreuen Umgebung mittels Überlastungstests auf die Probe gestellt, um einen Grundstein für die Sicherheitsforschung dieser tieferliegenden Technologien zu legen. Die Durchführung der Tests besteht darin, mehrere gleichzeitige Aufrufe an die Testumgebung zu schicken, das Verhalten zu beobachten und Zeiten zu messen.

Ergebnis

Im Zuge der Arbeit wurde ein Gesamtüberblick über die Laufzeitumgebung Node.js gegeben, sowie die Unterschiede zwischen synchronem und asynchronem Code erklärt. Außerdem wurden Grundlagen zu HTTP sowie REST vermittelt, um in weiterer Folge eine Testumgebung mit einer eigens erstellten REST-API aufzubauen. Mit der genannten Testumgebung wurden Last- sowie Datentests durchgeführt, um die Integrität der Node.js Plattform zu testen. Aufgrund der gewonnen Ergebnisse konnte die Schlussfolgerung getroffen werden, dass mit den durchgeführten Tests keine Sicherheitslücke provoziert werden konnte.