Skip to main content

GitHub-Sicherheit: Code-Scanning für sichere Open-Source-Abhängigkeiten

Artikel von

4. Mai 2021

0 Min. Lesezeit

Wir freuen uns, die Unterstützung von GitHub Security Code Scanning durch Snyk Open Source bekannt zu geben. Damit können Sie Ihre Open-Source-Abhängigkeiten automatisch auf Sicherheitslücken und Lizenzprobleme prüfen und die Ergebnisse direkt im Sicherheits-Tab von GitHub anzeigen.

Ein wesentlicher Bestandteil des Developer-First-Ansatzes von Snyk ist es, die Sicherheitsdaten von Snyk in genau die Prozesse einzubinden, die Entwicklerinnen und Entwickler nutzen – sei es in der IDE oder in einem Git-basierten Workflow.

Im Oktober 2020 haben wir die Möglichkeit eingeführt, auf GitHub gehostete Container-Images, Kubernetes-Konfigurationsdateien und Terraform-Code zu scannen und die Ergebnisse anschließend im Sicherheits-Tab von GitHub anzuzeigen. Diese Funktion unterstützt jetzt Snyk Container, Snyk IaC und Snyk Open Source und nutzt die GitHub-Actions von Snyk, um Snyk nativ in GitHub Security Code Scanning zu integrieren.

Sicherheitsseite eines GitHub-Repositorys mit Code-Scanning-Warnungen und einer Liste von Sicherheitslücken mit hohem Schweregrad

Wenn Sie bereits die GitHub-Actions von Snyk verwenden, können Sie die Ergebnisse sofort in GitHub Security Code Scanning sehen. Falls nicht oder wenn Sie Snyk noch nicht kennen, erfahren Sie hier, wie Sie loslegen.

Die GitHub-Actions von Snyk

GitHub hat GitHub Actions eingeführt, damit Entwicklerinnen und Entwickler ihre Workflows rund um Continuous Integration automatisieren können. Die GitHub-Actions von Snyk bieten Ihnen eine einfache Möglichkeit, Snyk in diese Workflows zu integrieren und Ihre GitHub-Projekte auf Sicherheitslücken und Lizenzprobleme zu prüfen – als Teil Ihres automatisierten CI/CD-Workflows und direkt in GitHub.

Snyk bietet jeweils eine Action für die verwendeten Programmiersprachen und Build-Tools. Hier finden Sie eine Auswahl (eine vollständige Liste der verfügbaren Actions finden Sie in der Dokumentation auf GitHub):

Probieren wir es gleich selbst aus!

Hinweis:Die folgenden Anweisungen können uneingeschränkt zum Scannen öffentlicher Repositories verwendet werden. Um private Registries zu scannen, benötigen Sie jedoch ein kostenpflichtiges GitHub Advanced Security-Abonnement.

Authentifizierung mit Snyk einrichten

Die Snyk-Action verwendet eine Umgebungsvariable namens SNYK_TOKEN. Dies ist Ihr Snyk-API-Token, das Sie abrufen müssen, bevor Sie die GitHub-Action konfigurieren.

Falls Sie noch kein Konto haben, erstellen Sie ein Snyk-Konto. Anschließend können Sie das Token auf eine von zwei Arten abrufen:

  1. Wenn Sie die Snyk-CLI verwenden, rufen Sie das Token mit diesem Befehl ab: snyk config get api

  2. Öffnen Sie in der Benutzeroberfläche die Einstellungsseite Ihres Snyk-Kontos und rufen Sie das API-Token ab.

Snyk-Kontoeinstellungen mit einem API-Token, einer Schaltfläche „Widerrufen und neu generieren“ sowie Einstellungen für die bevorzugte Organisation.

Sobald Sie das Token haben, hinterlegen Sie es in den Repository-Einstellungen unter Settings | Secrets als Secret:

GitHub-Actions-Secrets-Formular mit dem Namen SNYK_TOKEN, einem unkenntlich gemachten Wertfeld und einer Schaltfläche „Secret hinzufügen“.

Die Snyk-GitHub-Action konfigurieren

Jetzt können Sie die Snyk-Action konfigurieren. Öffnen Sie in Ihrem GitHub-Repository den Tab Actions und klicken Sie oben links auf die Schaltfläche New workflow.

GitHub stellt Ihnen einige Workflow-Vorlagen passend zur Programmiersprache des Repositorys bereit. Um die Snyk-GitHub-Action zu konfigurieren, klicken Sie oben auf der Seite auf set up a workflow yourself:

GitHub-Actions-Workflow-Vorlagenseite für ein JavaScript-Repository, auf der der Link „Workflow selbst einrichten“ hervorgehoben ist.

Ersetzen Sie den Beispielcode durch diesen Code:

name: "Upload package.json SARIF"
# Run workflow each time code is pushed to your repository.
on: push
jobs: 
  build:   
    runs-on: ubuntu-latest   
    steps:     
      - uses: actions/checkout@v2     
      - uses: snyk/actions/setup@master     
      - name: Snyk Test       
      run: snyk test --sarif-file-output=snyk-sarif.json       
      continue-on-error: true              
      env:          
        SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}         
      - name: Upload SARIF file       
      uses: github/codeql-action/upload-sarif@v1       
      with:         
        sarif_file: snyk-sarif.json +++ CODE_WP_BLOCK_END +++

GitHub-Workflow-Editor mit einer YAML-Datei, die Snyk-Sicherheitstests ausführt und einen SARIF-Bericht hochlädt.

Wie in diesem Beispiel zu sehen ist, wird die Snyk-Action so konfiguriert, dass der Workflow bei jedem Push von neuem Code in das Repository ausgeführt wird. Der Workflow verwendet snyk test, um Ihre Open-Source-Abhängigkeiten auf Sicherheitslücken und Lizenzprobleme zu prüfen, und lädt anschließend eine SARIF-Datei mit den Ergebnissen in GitHub Security Code Scanning hoch.

Das Flag continue-on-error ist auf true gesetzt. Sie können den Wert jedoch ändern, damit Builds bei gefundenen Problemen fehlschlagen.

Klicken Sie auf Start commit, um die Workflow-Datei in Ihr Repository zu übernehmen und die erste automatisierte Snyk-Action auszulösen. Ein vollständiger GitHub-CI-Workflow beginnt damit, dass die GitHub-Action-Datei im Stammverzeichnis des Repositorys erstellt wird: .github/workflows/main.yml

Die Action wird einige Sekunden lang ausgeführt. Sie können den Fortschritt dabei verfolgen.

Öffnen Sie nach Abschluss den Sicherheits-Tab von GitHub. Die Scan-Ergebnisse von Snyk werden unter Code scanning alerts angezeigt:

GitHub-Seite für Code-Scanning mit einer Liste offener Sicherheitslücken mit hohem Schweregrad im Repository goof

Ab jetzt wird jedes Mal, wenn Sie neue Commits in Ihr GitHub-Repository pushen, ein neuer Job im Tab Actions des Repositorys angelegt, um nach Problemen zu suchen.

Scan-Ergebnisse in Code Scanning anzeigen

Snyk Open Source scannt die direkten und transitiven Open-Source-Abhängigkeiten in Ihrem Repository auf Sicherheitslücken und Lizenzprobleme. Erkannte Probleme werden mit umfassendem Kontext angezeigt, damit sie schnell behoben werden können. Je mehr Kontext zu Sicherheitslücken vorliegt, desto einfacher lassen sich Korrekturen priorisieren.

In unserem Beispiel hat Snyk Open Source die Manifestdatei unseres Projekts (package.json) mit der Snyk-Intel-Sicherheitslücken-Datenbank abgeglichen und 281 Sicherheitslücken gefunden.

Sehen wir uns eine davon genauer an: eine schwerwiegende Sicherheitslücke, durch die sich der Schutz vor Prototype Override in der Abhängigkeit qs umgehen lässt.

Im Kopfbereich der Sicherheitslücke finden Sie ihren Schweregrad sowie die zugehörigen CVE- und CWE-Informationen. Der Schweregrad wird wie folgt zugeordnet:

CVSS

SARIF

Niedrig

Hinweis

Mittel

Warnung

Hoch / Kritisch

Fehler

Liste der Schwachstellen für qs@2.2.4 mit einer schwerwiegenden Umgehung des Schutzes vor Prototype-Überschreibungen, als offen gekennzeichnet und mit CVE-2017-1000048, npm und „Security“ getaggt.

Darüber hinaus liefert Snyk eine ausführliche Beschreibung der Sicherheitslücke, Informationen dazu, wie sie eingeführt wurde, Beispiele für die Ausnutzbarkeit, einen Zeitstrahl zur Offenlegung und vor allem Empfehlungen zur Behebung.

Snyk Open Source-Schwachstellenbericht zum npm-Paket qs mit Details zur Prototype-Override-Schwachstelle, zum Offenlegungszeitplan, zur Behebung und zu Referenzen.

In Sicherheit mit nativer GitHub-Integration investieren

Developer-First-Sicherheitstools müssen sich möglichst einfach in Entwicklungs-Workflows integrieren lassen. So werden viele der Reibungspunkte vermieden, die bei der Integration von Sicherheit häufig entstehen, und Entwicklerinnen und Entwickler können mehr Verantwortung für die Sicherheit übernehmen.

Weltweit nutzen mehr als 2,2 Millionen Entwicklerinnen und Entwickler Snyk, um ihre Anwendungen zu schützen. Viele davon verwenden die GitHub-Integration von Snyk. Deshalb investieren wir weiterhin in deren Verbesserung. Probieren Sie die GitHub-Actions von Snyk und die neue Unterstützung von Snyk Open Source in GitHub Security Code Scanning aus und teilen Sie uns Ihre Meinung mit!

Starten Sie mit Capture-the-Flag

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