Skip to main content

3 von Jedi inspirierte Lektionen für mehr JavaScript-Sicherheit

Artikel von
feature may patch wing

4. Mai 2022

0 Min. Lesezeit

Sie 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:

  1. 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.

  2. 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.

  3. 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 snync in Ihre CI, um solche Probleme zu verhindern.

  4. Noch nie war es einfacher, Open-Source-Sicherheitslücken mit Snyk zu beheben. Starten Sie einfach die Snyk CLI mit npm install -g snyk und fügen Sie Ihren npm-Run-Skripten einen Schritt mit snyk test hinzu. 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 der Dockerfile.

  5. 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.

Visual Studio Code zeigt eine JavaScript-Pfad-Traversal-Schwachstelle mit betroffenem Code, Sicherheitsproblemen und Beispielen für Korrekturen.

„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 request fü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.

Snyk Advisor-Seite für das npm-Paket request mit einem Health Score von 69/100, einem Popularitätsdiagramm und dem Status „nicht aktiv gewartet“.

„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.

GitHub-Pull-Request-Prüfungen zeigen einen Pfad mit einer anfälligen Abhängigkeit, einen verifizierten Pull Request und keine Merge-Konflikte

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.

Snyk Learn-Webseite mit Lektionen zur JavaScript-Sicherheit, darunter Open Redirect, Code-Injection und Server-Side Request Forgery

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

Weiterlesen

blog feature snyk container custom base recommendations
Blog

Evo Agentic AppSec: Sicherheit, die mit der KI-Entwicklung Schritt hält

KI-gestützte Entwicklung überholt herkömmliche Security-Workflows. Snyk Agentic AppSec setzt Security-Agenten ein, die Schwachstellen kontinuierlich finden, beheben und überprüfen – während Menschen die Maßstäbe festlegen.

blog feature ai violet
Blog

VulnBump: Können KI-Agenten anfällige Abhängigkeiten beheben, ohne den Build zu beschädigen?

VulnBump testet KI-Agenten anhand von 307 realen Dependency-Upgrades. Eine Lösung zählt nur, wenn die Sicherheitslücke behoben ist und Build sowie Tests weiterhin erfolgreich sind.

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.