3 von Jedi inspirierte Lektionen für mehr JavaScript-Sicherheit
4. Mai 2022
0 Min. LesezeitSie denken bei Star Wars vielleicht an einen Film für Nerds. Aber was, wenn ich Ihnen sage, dass sich daraus tiefgründige Lebensweisheiten für die Sicherheitspraktiken von Entwicklerinnen und Entwicklern ableiten lassen? Machen Sie Ihr Lichtschwert bereit und tauchen Sie ein in die JavaScript-Sicherheit!
Star Wars ist eine epische Science-Fiction-Filmreihe, die von George Lucas geschrieben und inszeniert wurde und meist keiner Vorstellung bedarf. Ich bin selbst ein Fan und kann mich persönlich mit vielen Zitaten der Jedi-Ritter aus den Filmen identifizieren.
Wie Sie vielleicht schon vermutet haben, bin ich ein großer Fan des legendären Jedi-Meisters Yoda und glaube, dass viele seiner Lehren tiefgründige Lebensweisheiten sind – auch für die Anwendungssicherheit.
„Versuchen Sie es nicht. Tun Sie es oder tun Sie es nicht. Es gibt kein Versuchen.“ —Yoda, Star Wars: Episode V – Das Imperium schlägt zurück
Manchmal wirkt es entmutigend, etwas Neues anzufangen – besonders, wenn es außerhalb Ihrer Komfortzone und Ihres Fachgebiets liegt. Auch Anwendungssicherheit kann sich so anfühlen. Konzentrieren Sie sich darauf, etwas umzusetzen, statt es gleich perfekt zu machen.
Sollten Sie Code-Reviews mit Fokus auf sichere Programmierung durchführen oder einfach dynamische Anwendungssicherheitstests einsetzen? Sollten Sie einen Pre-Hook im Entwickler-Workflow verwenden, um Geheimnisse aufzuspüren, oder das Ganze über eine GitHub-App integrieren? Welche Tools müssen Sie in Ihre CI-Pipeline integrieren, um Sicherheitstests durchzuführen?
So viele Fragen – deshalb gefällt mir Yodas Zitat aus dem Film: „Tun Sie es oder tun Sie es nicht. Es gibt kein Versuchen.“ Was sichere Programmierpraktiken angeht, ist jeder Anfang ein guter Anfang. Es geht um mehrere Sicherheitsebenen (wie beim Prinzip Defense in Depth).
Hier finden Sie praktische JavaScript-Sicherheitstools, die Sie noch heute ganz unkompliziert integrieren können:
Möchten Sie Trojan-Source-Angriffe in JavaScript-Codebasen mit ESLint zuverlässig erkennen und eindämmen? Das GitHub-Repository enthält eine schnelle Installationsanleitung und Anwendungshinweise für eslint-anti-trojan-source. Lesen Sie außerdem unseren Blogartikel, um zu erfahren, warum das wichtig ist.
Sie arbeiten regelmäßig mit npm- und Yarn-Lockfiles. Haben Sie aber schon einmal bedacht, dass npm-Lockfiles einen blinden Fleck für das Einschleusen schädlicher Module darstellen können? Sehen Sie sich das Projekt lockfile-lint an und integrieren Sie es in Ihre Linting-Tools.
Haben Sie schon davon gehört, dass über einen Open-Source-Supply-Chain-Angriff namens Dependency Confusion Daten von Fortune-500-Unternehmen exfiltriert wurden? Integrieren Sie
snyncin Ihre CI, um solche Probleme zu verhindern.Noch nie war es einfacher, Open-Source-Sicherheitslücken mit Snyk zu beheben. Starten Sie einfach die Snyk CLI mit
npm install -g snykund fügen Sie Ihren npm-Run-Skripten einen Schritt mitsnyk testhinzu. Wenn Sie Ihre GitHub-Repositories in die Snyk UI importieren, erhalten Sie rechtzeitig Benachrichtigungen zu neuen Sicherheitslücken, statischer Codeanalyse und Scans von Manifestdateien – etwa für Terraform-, Kubernetes-Projekte und Docker-Container mithilfe derDockerfile.Möchten Sie Informationen zu Sicherheitslücken in Ihrem eigenen Code und in Abhängigkeiten von Drittanbietern erhalten? Mit der Snyk IDE-Erweiterung können Sie Ihren Code während der Entwicklung überprüfen und Sicherheit nahtlos in Ihren Workflow integrieren.

„Ihre Augen können Sie täuschen. Vertrauen Sie ihnen nicht.“ —Obi-Wan Kenobi, Star Wars: Episode IV – Eine neue Hoffnung
Seien wir ehrlich: Programmieren ist schwer. Code zu schreiben ist schwer. Code zu lesen ist noch schwieriger, zahlt sich langfristig aber aus, denn Sie lesen mehr Code, als Sie schreiben.
Als Entwicklerinnen und Entwickler haben wir gelernt, bestimmte Muster in Logik und Codestil zu erkennen. Sie helfen uns, die Bedeutung des Codes zu verstehen und Abweichungen zu bemerken. Doch oft vergessen wir, auch nach Mustern zu suchen, die mit Codesicherheit zu tun haben.
Diese fehlende Sicherheitsanalyse hat dazu geführt, dass manche Sicherheitslücken jahrelang bestanden, bevor sie jemand entdeckte. Ein gutes Beispiel ist die Offenlegung einer schwerwiegenden Sicherheitslücke im Linux-Programm sudo im vergangenen Jahr. Sie wurde als CVE-2021-3156 identifiziert. Über den Befehl sudoedit -s ermöglichte diese Sicherheitslücke eine Rechteausweitung zum Root-Superuser. Sie schlummerte zehn Jahre lang in einem beliebten Open-Source-Projekt, obwohl sie direkt vor aller Augen lag.
Damit Ihnen ähnliche Versäumnisse nicht passieren, finden Sie hier einige Tipps, um die Sicherheit Ihrer JavaScript-Projekte zu verbessern.
Führen Sie Code-Reviews mit Fokus auf sichere Programmierung durch. Tipps dazu, auf welche Bereiche Ihrer Codebasis Sie sich konzentrieren sollten, finden Sie in Trisha Gees und Brian Vermeers 8 Best Practices für Code-Reviews mit Sicherheitsfokus.
Wenn Sie mit Go entwickeln, achten Sie besonders auf Injection-Angriffe und gefährliche Benutzereingaben. Zusätzlich zu diesen allgemeinen Regeln finden Sie weitere Tipps und Tricks in Eric Smallings und Gerred Dillons praktischen Tipps zu Best Practices für Go-Sicherheit.
Erfahren Sie, wie Sie Typosquatting-Angriffe vermeiden, die für viele schädliche Module im npm-Ökosystem verantwortlich sind.
Vermeiden Sie npm-Pakete, die scheinbar sehr beliebt sind, aber einen niedrigen Signal-Health-Wert haben. Der beliebte HTTP-Client
requestfür Node.js wird beispielsweise etwa 20.000.000-mal pro Woche heruntergeladen. Das könnte Sie glauben lassen, dass er eine gute Wahl ist. Doch der Maintainer hat ihn als veraltet gekennzeichnet, und der letzte Commit samt Release liegt zwei Jahre zurück. Mit Snyk Advisor erfahren Sie mehr über Signale zum Zustand von Paketen und bleiben auf dem Laufenden.

„Schwer zu erkennen. Immer in Bewegung ist die Zukunft.“ —Yoda, Das Imperium schlägt zurück
Anwendungssicherheit ist ein bewegliches Ziel. Software entwickelt sich rasant weiter, ebenso die Sicherheitsforschung, und es werden ständig neue Sicherheitslücken entdeckt. Je ausgereifter und verbreiteter ein Software-Ökosystem ist, desto eher wird es auch von Sicherheitsforschenden untersucht. Das npm-Ökosystem der Open-Source-Module für JavaScript ist ein gutes Beispiel.
Warum sollten Sie Snyk in Ihr Git-Repository integrieren? Vielleicht haben Sie alle Sicherheitslücken behoben, die Ihre Codebasis heute betreffen. Doch alle künftigen CVEs und Sicherheitslücken im Blick zu behalten, ist unmöglich. Zum Glück kann Snyk helfen. Sobald Ihr Quellcode-Repository mit Snyk verbunden ist, wird es täglich gescannt. Bei neu auftretenden Sicherheitslücken erhalten Sie eine Benachrichtigung. Gibt es eine empfohlene Lösung, erstellt Snyk automatisch einen Pull Request in Ihrem Repository. Um das Risiko zu mindern, müssen Sie die Codeänderung nur prüfen und mergen.

Prototype Pollution war vor fünf Jahren noch selten. Heute sind JavaScript-Projekte jedoch häufig betroffen – aufgrund der prototypischen Vererbungseigenschaften des ECMAScript-Standards. Weil wir neue Sicherheitslücken nicht vorhersehen können und oft wenig Zeit haben, ist es schwierig, bei Sicherheitsthemen auf dem neuesten Stand zu bleiben. Zum Glück hilft Ihnen der Snyk Learn Resource Hub weiter. Snyk Learn ist völlig kostenlos, erfordert keine Anmeldung und bietet kompakte Lektionen zu Themen der Anwendungssicherheit. Sie können sogar Lektionen passend zu Ihrem bevorzugten Sprach-Ökosystem auswählen, etwa Java, JavaScript, Python oder andere.

Zum Schluss wünsche ich Ihnen einen schönen 4. Mai – und möge die Macht mit Ihnen sein!



