Skip to main content

Snyk Code CLI-Unterstützung jetzt in der öffentlichen Beta

Artikel von

Frank Fischer

21. September 2021

0 Min. Lesezeit

Snyk hat es sich zur Aufgabe gemacht, Static-Application-Security-Testing-Tools (SAST) für Entwickler entlang der gesamten DevOps-Pipeline nutzbar zu machen. Snyk Code scannt in Echtzeit und mit hoher Genauigkeit – direkt in den Tools und Workflows, die Entwickler bereits verwenden. So erleichtern beispielsweise IDE-Plugins für IntelliJ, PyCharm, WebStorm und Visual Studio Code das Programmieren, Scannen und Beheben von Problemen, noch bevor der Code in die Versionsverwaltung gelangt. Und mit der webbasierten Benutzeroberfläche können Entwickler Legacy-Code scannen oder Code-Reviews durchführen.

Darüber hinaus freuen wir uns, bekannt geben zu können, dass Snyk Code jetzt als öffentliche Beta Teil der Snyk-Befehlszeilenschnittstelle (Snyk CLI) ist. Sie können Snyk Code jetzt ganz einfach in Ihren CI/CD-Prozess integrieren und Scans flexibel auslösen sowie die Ergebnisse automatisch verarbeiten.

Snyk bietet eine CLI für die Interaktion mit allen Elementen der Snyk-Plattform. Snyk Code erweitert die Funktionen der bestehenden CLI. Dieser Artikel bietet Ihnen einen Einstieg. Für einen tieferen Einblick empfehlen wir Ihnen unsere Dokumentation zur Snyk Code CLI.

Zur Erinnerung: Die CLI-Unterstützung befindet sich derzeit in der Beta. Probieren Sie sie aus und geben Sie uns Feedback, damit wir sie noch besser machen können.

Installation und Konfiguration der Snyk CLI

Die Snyk CLI ist eine Node.js-Anwendung und kann daher auf jedem System ausgeführt werden, das Node.js unterstützt. Die Installation und Konfiguration sind ebenfalls ganz einfach.

Sie können sie mit npm installieren. Führen Sie dazu Folgendes aus: npm install -g snyk

Weitere Installationsmöglichkeiten und mehr Informationen zur Installation mit npm finden Sie in unserer vollständigen Dokumentation zur Snyk Code CLI.

Nach der Installation müssen Sie sich authentifizieren. Rufen Sie dazu Folgendes auf: snyk auth.

Dadurch wird ein Authentifizierungsprozess gestartet. Anschließend wird ein Identifikationstoken für Sie gespeichert, das Sie ab jetzt mit der CLI verwenden können.

Profi-Tipp: Die CLI sucht bei jedem Start nach Updates. Wenn ein Update verfügbar ist, werden Sie mit dem erforderlichen Befehl darüber informiert. Sie können auch manuell aktualisieren, um sicherzustellen, dass Sie die neueste Version verwenden. Rufen Sie dazu npm update -g snyk auf.

Ein Projekt oder einen Ordner testen

So führen Sie mit der CLI einen Snyk-Code-Scan aus: snyk code test [my-folder-path]

Wenn Sie keinen Pfad angeben, scannt die CLI den aktuellen Ordner. Ja, sie durchläuft den Verzeichnisbaum und scannt dessen Inhalte. Es gibt noch viele weitere Befehle und Parameter. Diese finden Sie in unserer Dokumentation.

Wenn Sie die CLI bereits verwenden, beachten Sie bitte, dass diese Beta den Befehl monitor für Snyk Code nicht unterstützt.

Hinweis: Die CLI bündelt unterstützte Quellcodedateien und lädt sie zum Scannen zu Snyk hoch. Beachten Sie daher bitte, dass der Quellcode Ihr Unternehmen verlässt, auch wenn sowohl Daten während der Übertragung als auch ruhende Daten verschlüsselt sind. Vergewissern Sie sich, dass Sie damit einverstanden sind, bevor Sie die CLI für ein Repository ausführen.

Optionen für das Ergebnisformat

Die CLI kann Ergebnisse auf drei Arten ausgeben. Die einfachste Möglichkeit und ein guter Einstieg ist, sie einfach aufzurufen. Dann erhalten Sie einen für Menschen lesbaren Bericht.

Testing . ...

 ✗ [Medium] Cross-Site Request Forgery (CSRF) 
     Path: app.js, line 16 
     Info: Consider using csurf middleware for your Express app to protect against CSRF attacks.

 ✗ [Medium] Use of Hard-coded Credentials 
     Path: index.js, line 10 
     Info: Do not hardcode credentials in code. Found hardcoded credential used in mysql.createConnection.

 ✗ [Medium] Allocation of Resources Without Limits or Throttling 
     Path: app.js, line 46 
     Info: This endpoint handler performs a file system operation and does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit.

 ✗ [Medium] Allocation of Resources Without Limits or Throttling 
     Path: index.js, line 15 
     Info: This endpoint handler performs a file system operation and does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit.

 ✗ [Medium] Allocation of Resources Without Limits or Throttling 
     Path: index.js, line 21 
     Info: This endpoint handler performs a file system operation and does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit.

 ✗ [Medium] Allocation of Resources Without Limits or Throttling 
     Path: createDummyData.js, line 16 
     Info: This endpoint handler performs a file system operation and does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit.

 ✗ [Medium] Use of Hard-coded Credentials 
     Path: index.js, line 11 
     Info: Do not hardcode passwords in code. Found hardcoded password used in mysql.createConnection.

 ✗ [High] Path Traversal 
     Path: index.js, line 25 
     Info: Unsanitized input from an HTTP parameter flows into fs.readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files.

 ✗ [High] SQL Injection 
     Path: index.js, line 39 
     Info: Unsanitized input from an HTTP parameter flows into get, where it is used in an SQL query. This may result in an SQL Injection vulnerability.

✔ Test completed

Organization:      undefined
Test type:         Static code analysis
Project path:      .

9 Code issues found
2 [High]  7 [Medium] 

Der Schweregrad ist farblich gekennzeichnet. Außerdem enthält das Ergebnis eine Erläuterung der Sicherheitslücke sowie eine empfohlene Behebung.

Profi-Tipp: Snyk Code ist extrem schnell. Nehmen Sie ein beliebiges Projekt (oder ein geklontes Open-Source-Repository) und führen Sie einfach den Scan aus, um zu prüfen, ob das System funktioniert.

Außerdem bietet die CLI ein Datenformat namens SARIF. Rufen Sie dazu snyk code test --sarif auf:

{
  "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
  "version": "2.1.0",
  "runs": [
    {
      "tool": {
        "driver": {
          "name": "SnykCode",
          "semanticVersion": "1.0.0",
          "version": "1.0.0",
          "rules": [
            {
              "id": "javascript/UseCsurfForExpress",
              "name": "UseCsurfForExpress",
              "shortDescription": {
                "text": "Cross-Site Request Forgery (CSRF)"
              },
              "defaultConfiguration": {
                "level": "warning"
              },
              "help": {
                "markdown": "\n## Details\nCross-site request forgery is an attack in which a malicious third party takes advantage of a user's authenticated credentials (such as a browser cookie) to impersonate that trusted user and perform unauthorized actions. The web application server cannot tell the difference between legitimate and malicious requests. This type of attack generally begins by tricking the user with a social engineering attack, such as a link or popup that the user inadvertently clicks, causing an unauthorized request to be sent to the web server. Consequences vary: At a standard user level, hackers can change passwords, transfer funds, make purchases, or connect with contacts; from an administrator account, hackers can then make changes to or even take down the app itself.\n\n### Best practices for prevention\n* Use development frameworks that defend against CSRF, using a nonce, hash, or some other security device to the URL and/or to forms.\n* Implement secure, unique, hidden tokens that are checked by the server each time to validate state-change requests.\n* Never assume that authentication tokens and session identifiers mean a request is legitimate.\n* Understand and implement other safe-cookie techniques, such as double submit cookies.\n* Terminate user sessions when not in use, including automatic timeout.\n* Ensure rigorous coding practices and defenses against other commonly exploited CWEs, since cross-site scripting (XSS), for example, can be used to bypass defenses against CSRF.\n\n## References\n\n* [Express Documentation - Implement CSRF Protection](https://expressjs.com/en/resources/middleware/csurf.html)\n* [Node Security Checklist - CSRF](https://blog.risingstack.com/node-js-security-checklist/#csrf)",
                "text": ""
              },
              "properties": {
                "tags": [
                  "javascript",
                  "maintenance",
                  "express",
                  "server",
                  "CSRF"
                ],
                "categories": [
                  "Security"
                ],
                "exampleCommitFixes": [
                  {
                    "commitURL": "https://github.com/eclipse/orion.client/commit/ad8f3bce33a1ea9d1e2144e6c42f075ad25829d6?diff=split#diff-16594450dc1f06f7d9cf4a47859cfa52L175",
                    "lines": [
                      {
                        "line": "}",
                        "lineNumber": 172,
                        "lineChange": "none"
                      },
...

Diese Ausgabe ist umfangreich und enthält alles – und sogar noch etwas mehr –, was Sie auch im Snyk-Code-Frontend sehen. Sie enthält sogar Beispielkorrekturen und den Prioritätswert.

Profi-Tipp: Holen Sie sich einen Kaffee und sehen Sie sich die SARIF-Datei in Ruhe an. Da es sich um JSON handelt, ist sie eigentlich nicht schwer zu verstehen. Sie enthält eine Fülle von Informationen. Ich verspreche Ihnen: Sie werden viele Ideen dazu bekommen, wie Sie sie in Ihren Prozessen nutzen oder Statistiken erheben können.

Schließlich gibt die CLI einen Exit-Code aus, mit dem Sie beispielsweise einen CI/CD-Prozess steuern können. Hier sind die zu erwartenden Exit-Codes:

  • 3: Fehler, keine unterstützten Projekte gefunden

  • 2: Fehler, versuchen Sie, den Befehl erneut auszuführen

  • 1: Aktion erforderlich, Sicherheitslücken gefunden

  • 0: Erfolg, keine Sicherheitslücken gefunden

Mit dem Parameter --severity-threshold=<low|medium|high> in Ihrem Aufruf können Sie nach Schweregrad filtern.

Snyk Code CLI in der Beta ausprobieren

Die CLI ist ein leistungsstarkes Tool, und wir möchten alle einladen, an der öffentlichen Beta teilzunehmen. Stellen Sie einfach sicher, dass Sie die neueste Version der Snyk CLI installiert haben, Snyk Code für Ihre Organisation aktiviert ist und probieren Sie sie aus. Da es sich um eine Beta handelt, würden wir uns freuen, wenn Sie sie nutzen und uns Feedback geben.

Wenn Sie Snyk noch nicht kennen, benötigen Sie zunächst ein Snyk-Konto, für das Snyk Code aktiviert ist! Kostenlos registrieren – noch heute.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.

Gepostet in:

Weiterlesen

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

illustration hero ai
Blog

Der KI-Hurrikan ist da

KI beschleunigt gleichermaßen die Softwareentwicklung und Cyberangriffe. Führungskräfte müssen Agents und Code von Anfang an absichern, zur Laufzeit Kontrollen durchsetzen und Abwehrmaßnahmen unabhängig validieren.

feature insights context
Blog

Ist Prävention im Grunde ein gelöstes Problem?

Die Prävention in von Agenten generiertem Code ist architektonisch gelöst – die Herausforderung besteht jedoch weiterhin darin, Kontrollen zu wählen, die die Sicherheit schützen, ohne die Entwicklung zu verlangsamen.