Das Fastify-Node.js-Framework verbessert die JSON-Sicherheit dank eines Sicherheitsberichts
10. März 2020
0 Min. LesezeitAm 9. April meldete Francesco Soncina – auf der Bug-Bounty-Plattform HackerOne auch als phra bekannt – der Node.js Security Working Group eine serverseitige JavaScript-Code-Injection-Schwachstelle. Als betroffenes Ziel dieser Sicherheitslücke wurde zunächst Fastify identifiziert, ein Webanwendungs-Framework für Node.js.
Matteo Collina, einer der Maintainer des Open-Source-Projekts Fastify, wurde eingeladen, den Bericht zeitnah zu bewerten und den Proof-of-Concept-Exploit-Code zu prüfen. Bei dem Proof-of-Concept-Angriff kam eine JavaScript-Code-Injection zum Einsatz, die eine Reverse Shell startete. Diese war in das vom Framework eingelesene JSON-Schema eingebettet.
Letztendlich wurde dieser Sicherheitsbericht als relativ harmlos eingestuft, da er Fastify selbst nicht betrifft. Der Grund dafür war, dass das JSON-Schema vom Nutzer als Konfigurationselement der Anwendung bereitgestellt wird und daher als vertrauenswürdige Eingabe gilt.
Dennoch ist es interessant und zugleich wichtig, die Bedeutung solcher Sicherheitsberichte hervorzuheben – unabhängig davon, ob daraus eine bestätigte Sicherheitslücke mit CVE wird oder nicht.
In diesem Fall dreht sich die Sicherheitsdiskussion im Bericht insbesondere um eine anhaltende Debatte zwischen dem Fastify-Maintainer und dem Sicherheitsforscher, der die Schwachstelle offengelegt hat. Die Zusammenarbeit und Entschlossenheit von Collina und Soncina sind bemerkenswert. Ihr gemeinsames Ziel ist es, alle möglichen Sicherheits-Sinks in der JSON-Rendering-Logik aufzudecken, damit sie möglichst widerstandsfähig gegen Sicherheitsprobleme ist, die auftreten könnten.
Besonders interessant ist, dass dieser Sicherheitsbericht Folgendes bewirkte:
Ein robusteres und sichereres JSON-Parsing in
fast-json-stringify, umgesetzt durch diesen Pull Request auf GitHub und die anschließende offizielle Veröffentlichung in Version 1.15.3.Ein Sicherheitshinweis in der Dokumentation, der die Bedenken und Risikobereiche klar benennt, damit Nutzer der Bibliothek gut darüber informiert sind, wie sie mit Daten umgehen sollten. Er wurde mit diesem Pull Request eingeführt.
Als ich diesen Bericht fertigstellte und für die Offenlegung vorbereitete, wurde mir klar, dass wir mehr tun sollten, um den Wert von Sicherheitsmeldungen anzuerkennen. Obwohl das gemeldete Problem weder Fastify noch fast-json-stringify, direkt beeinträchtigte, löste es eine wichtige Diskussion aus. Vor allem schärfte es bei den Maintainern das Bewusstsein für Sicherheitsbedenken in ihrem Code.
Abschließende Anmerkungen
Wenn Sie Sicherheitsforscher oder Maintainer eines Moduls sind, möchte ich Ihnen zum Abschluss diesen Hinweis aus dem ursprünglichen Bericht mitgeben. Und noch einmal: Vielen Dank für Ihre Arbeit und Ihren Einsatz, mit denen Sie dazu beitragen, das Node.js-, JavaScript- und Open-Source-Ökosystem zu schützen.




