In this article
So sichern Sie Ihre GitHub-Actions-Workflows mit Snyk ab und erhöhen die JavaScript-Sicherheit
Wenn Sie Ihre Quellcode-Repositories auf GitHub verwalten, nutzen Sie wahrscheinlich auch GitHub Actions für CI/CD-Workflows. Das bietet eine gute Gelegenheit, Ihre JavaScript-Anwendungen abzusichern.
Einige zentrale Workflows, für die Softwareentwickler GitHub Actions nutzen, drehen sich um das Erstellen und Testen von Software-Artefakten. Das kann eine Frontend-Anwendung sein, für die Transpilierung und TypeScript-Typkompilierung erforderlich sind, oder eine Backend-Anwendung mit kontinuierlichen Integrationstests, etwa Unit- und Integrationstests.
Sie können auch nützliche zusätzliche GitHub-Actions-Workflows einsetzen, zum Beispiel um Ihre Markdown-Dateien auf korrekte Formatierung zu prüfen oder defekte Links in Ihrer README zu finden.
Wie wäre es, zusätzlich Sicherheitstests einzubauen? Besser, Sie erfahren früh davon und beheben das Problem, als erst nach einer Datenpanne oder anderen Sicherheitsproblemen davon zu erfahren.
Snyk-Sicherheit zu GitHub-Actions-Workflows hinzufügen
Snyk stellt einen vorkonfigurierten, benutzerdefinierten Snyk-GitHub-Actions-Workflow bereit, den Sie zu Ihrer CI hinzufügen können. Damit müssen Sie Vulnerability-Scans nicht direkt mit der Snyk CLI verwalten. Das Code-Repository für die GitHub Action finden Sie auf GitHub unter snyk/actions.
Ihr Snyk-Token abrufen
Zunächst müssen wir Ihr Snyk-Token abrufen, damit wir es der GitHub Action hinzufügen können. In der Dokumentation zu Snyk GitHub Actions erfahren Sie, wie Sie Ihr Snyk-Token abrufen. Sobald Sie das Snyk-Token haben, fügen Sie es über die GitHub-Einstellungen als Repository-Secret hinzu:

Hinweis: Wenn Sie in Ihren CI-Workflows verschiedene Umgebungen verwalten, ist es sicherer, das Snyk-Token als Secret für jede Umgebung festzulegen, statt auf Repository-Ebene.
Den Snyk-GitHub-Actions-Workflow konfigurieren
Als Nächstes erstellen wir die Datei .github/workflows/security.yml, die den grundlegenden Snyk-Sicherheitsscan-Workflow enthält:
name: Security
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}Den Snyk-Sicherheitsscan ausführen
Sobald Sie die Workflow-Datei security.yml hinzugefügt haben, wird sie bei einem Ereignis ausgeführt, das Aktualisierungen im Branch main committet und pusht, oder bei pull request-Ereignissen. Anschließend wird ein Open-Source-Sicherheitsscan durchgeführt, um Schwachstellen in Drittanbieterpaketen zu finden:

Großartig!
In meinem kleinen CLI-Projekt wurden keine Sicherheitslücken gefunden.
Damit werden nur Open-Source-Schwachstellen gescannt, da standardmäßig der Befehl snyk test ausgeführt wird. Sorgen wir auch dafür, dass nach Sicherheitsproblemen im Code gesucht wird, falls ich versehentlich welche hinzufüge.
Einen SAST-Code-Sicherheitsscan mit Snyk hinzufügen
Snyk kann Ihren Quellcode auch auf Schwachstellen scannen. Wenn Sie versehentlich unsicheren Code geschrieben oder sichere Programmierpraktiken nicht befolgt haben, erkennt Snyk den Source-to-Sink-Datenfluss und empfiehlt Ihnen, wie Sie das Problem beheben können, wenn Sie die Snyk-IDE-Erweiterung verwenden.
Fügen wir einen Code-Sicherheitsscan zu unserem GitHub-Actions-Workflow hinzu, indem wir die bestehende Jobdeklaration wie folgt erweitern:
code-security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: code test Sie werden sehen, dass wir der Snyk GitHub Action ausdrücklich den zusätzlichen Parameter command: code test hinzugefügt haben.
Wie lassen sich Sicherheitslücken im Code beheben?
Snyk kann Sicherheitsprobleme in Ihrem Code oder Ihren Abhängigkeiten erkennen. Sehen wir uns an, wie Sie diese beheben können.
Die folgenden GitHub-Actions-Protokolle zeigen, wie die Snyk Action eine Command-Injection-Schwachstelle in meinem Projekt gefunden hat. Snyk stellt die folgenden Informationen bereit:
Dateipfad und Zeilennummer dienen dazu, einen unsicheren Codepfad zu erkennen. Der folgende Screenshot des Sicherheitsworkflows zeigt src/bin/cli.ts in Zeile 8.
Beschreibung der erkannten Sicherheitslücke. Die folgenden Ergebnisse zeigen eine Command-Injection-Schwachstelle, bei der Daten von einem Befehlszeilenargument in das Node.js-Kernmodul child_process fließen.

Wenn Sie wie ich die Snyk-IDE-Erweiterung installieren, zum Beispiel in VS Code, profitieren Sie von Folgendem:
Ein ausführlicherer Bericht darüber, wie sich das Sicherheitsproblem im Code durch Ihre Anwendung zieht
Sicherheitsprobleme früher beim Programmieren finden, statt auf die Ausführung des CI-Workflows warten zu müssen
Sie erhalten Empfehlungen zur Behebung. In einigen Fällen bietet Snyks DCAI Fix auch automatische Korrekturen mithilfe der KI-Engine von Snyk.

Bei diesem JavaScript-Projekt handelt es sich um eine Node.js-Befehlszeilenanwendung, die den auszuführenden Befehl des Benutzers entgegennimmt und ihn dann ausführt. Das Starten von Systembefehlen ist der zentrale Anwendungsfall dieser Node.js-CLI und stellt daher ein akzeptables Risiko, aber keine Sicherheitslücke dar.
Damit Snyk dies nicht als Sicherheitsproblem erkennt, fügen wir über der anfälligen Codezeile (Zeile 8, die Snyk zuvor gemeldet hat) einen Kommentar ein, der Snyk anweist, dieses Problem zu ignorieren:
8: // file deepcode ignore IndirectCommandInjection: <accepted user input for the CLI is part of how this program works>
9: const result = await runCommandAndNotify(commandToRun)Die nächsten Schritte für Anwendungssicherheit in der CI
Als weiterführende Lektüre zu diesem Artikel empfehle ich Ihnen Folgendes:
Wenn Ihr Team mit Java entwickelt, empfehle ich Ihnen, den folgenden Artikel mit ihm zu teilen: Eine sichere CI/CD-Pipeline mit GitHub Actions für Ihre Java-Anwendung erstellen
Wenn Sie npm-Pakete verwalten und in der npm Registry veröffentlichen, empfehle ich Ihnen Folgendes: npm-Pakete sicher mit GitHub Actions veröffentlichen.
Wie können Sie Snyk-Probleme ignorieren, wenn einige davon False Positives sind oder Sie das Risiko akzeptieren möchten?
Machen Sie bei Fetch the Flag 2026 mit!
Stellen Sie Ihre Security-Kenntnisse bei unserem Capture-the-Flag-Event vom 12. bis 13. Februar auf die Probe, von 12 Uhr mittags bis 12 Uhr mittags ET.