Semgrep ist ein schnelles Open-Source-Tool zur statischen Analyse, das Code durchsucht, Fehler findet und sichere Leitplanken und Codierungsstandards durchsetzt. Semgrep unterstützt mehr als 30 Sprachen und kann in einer IDE, als Pre-Commit-Prüfung und als Teil von CI/CD-Workflows ausgeführt werden.
Semgrep ist ein semantisches Grep für Code. Während die Ausführung grep "2"
nur mit der genauen Zeichenfolge 2 übereinstimmt, würde Semgrep mit x = 1; y = x + 1
bei der Suche nach 2 . Semgrep-Regeln sehen aus wie der Code, den Sie bereits geschrieben haben. keine abstrakten Syntaxbäume, Regex-Wrestling oder schmerzhafte DSLs.
Beachten Sie, dass Semgrep OSS in Sicherheitskontexten viele echte Vorteile übersehen wird, da es Code nur innerhalb der Grenzen einer einzelnen Funktion oder Datei analysieren kann. Wenn Sie Semgrep für Sicherheitszwecke ( SAST , SCA oder Secrets-Scanning ) verwenden möchten, wird die Semgrep AppSec-Plattform dringend empfohlen, da sie die folgenden wichtigen Funktionen hinzufügt:
Die Semgrep AppSec-Plattform funktioniert sofort mit über 20.000 proprietären Regeln für SAST, SCA und Geheimnisse. Pro-Regeln werden vom Semgrep-Sicherheitsforschungsteam geschrieben und gepflegt und sind äußerst präzise, sodass AppSec-Teams sicher sein können, Ergebnisse direkt an Entwickler weiterzugeben, ohne sie zu verlangsamen.
Semgrep analysiert Code lokal auf Ihrem Computer oder in Ihrer Build-Umgebung: Standardmäßig wird Code nie hochgeladen . Fangen Sie an →.
Semgrep Code unterstützt über 30 Sprachen, darunter:
Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TypeScript · TSX · YAML · XML · Generic (ERB, Jinja usw.)
Semgrep Supply Chain unterstützt 12 Sprachen in 15 Paketmanagern, darunter:
C# (NuGet) · Dart (Pub) · Go (Go-Module, go mod
) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Komponist) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Swift (SwiftPM)
Weitere Informationen finden Sie unter Unterstützte Sprachen.
Für neue Benutzer empfehlen wir, mit der Semgrep AppSec-Plattform zu beginnen, da sie eine visuelle Benutzeroberfläche, ein Demoprojekt, Ergebnissetriaging- und Explorations-Workflows bietet und die Einrichtung in CI/CD schnell ermöglicht. Die Scans erfolgen immer noch lokal und der Code wird nicht hochgeladen. Alternativ können Sie auch mit der CLI beginnen und durch die Terminalausgabe navigieren, um einmalige Suchvorgänge durchzuführen.
Registrieren Sie sich auf semgrep.dev
Entdecken Sie die Demo-Ergebnisse, um zu erfahren, wie Semgrep funktioniert
Scannen Sie Ihr Projekt, indem Sie zu Projects > Scan New Project > Run scan in CI
Wählen Sie Ihr Versionskontrollsystem aus und befolgen Sie die Onboarding-Schritte, um Ihr Projekt hinzuzufügen. Nach dieser Einrichtung scannt Semgrep Ihr Projekt nach jeder Pull-Anfrage.
[Optional] Wenn Sie Semgrep lokal ausführen möchten, befolgen Sie die Schritte im CLI-Abschnitt.
Wenn es Probleme gibt, bitten Sie bitte im Semgrep Slack um Hilfe.
# For macOS
$ brew install semgrep
# For Ubuntu/WSL/Linux/macOS
$ python3 -m pip install semgrep
# To try Semgrep without installation run via Docker
$ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
$ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
semgrep login
aus, um Ihr Konto zu erstellen und sich bei Semgrep anzumelden.Wenn Sie sich bei Semgrep anmelden, erhalten Sie Zugriff auf:
Gehen Sie zum Stammverzeichnis Ihrer App und führen Sie semgrep ci
aus. Dadurch wird Ihr Projekt gescannt, um nach Schwachstellen in Ihrem Quellcode und seinen Abhängigkeiten zu suchen.
Versuchen Sie, Ihre eigene Abfrage interaktiv mit -e
zu schreiben. Zum Beispiel eine Prüfung für Python ==, bei dem die linke und rechte Seite gleich sind (möglicherweise ein Fehler): $ semgrep -e '$X == $X' --lang=py path/to/src
Das Semgrep-Ökosystem umfasst Folgendes:
Semgrep OSS – Die Open-Source-Programmanalyse-Engine im Herzen von allem. Geeignet für Ad-hoc-Anwendungsfälle mit einer hohen Toleranz gegenüber Fehlalarmen – denken Sie an Berater, Sicherheitsprüfer oder Pentester.
Semgrep AppSec-Plattform – Einfache Orchestrierung und Skalierung von SAST-, SCA- und Secrets-Scans im gesamten Unternehmen, ohne dass das Risiko besteht, Entwickler zu überfordern. Passen Sie an, welche Ergebnisse Entwickler sehen, wo sie sie sehen, und integrieren Sie sie mit CI-Anbietern wie GitHub, GitLab, CircleCI und mehr. Beinhaltet sowohl kostenlose als auch kostenpflichtige Stufen.
Semgrep-Code (SAST) – Erzielen Sie echte Fortschritte bei der Beseitigung Ihrer Schwachstellen mit SAST, das den Lärm minimiert und es Entwicklern ermöglicht, Probleme schnell selbst zu beheben, auch wenn sie keine Sicherheitskenntnisse haben. Einfach zu implementierende sichere Leitplanken und maßgeschneiderte, schrittweise Anleitungen zur Behebung sorgen dafür, dass Entwickler Probleme tatsächlich beheben, da sie nicht das Gefühl haben, ausgebremst zu werden.
Semgrep Supply Chain (SSC) – Ein High-Signal-Abhängigkeitsscanner, der erreichbare Schwachstellen in Open-Source-Bibliotheken und -Funktionen von Drittanbietern erkennt.
Semgrep Secrets (Secrets-Scanning) – Secrets-Erkennung, die semantische Analyse, verbesserte Entropieanalyse und Validierung nutzt, um vertrauliche Anmeldeinformationen im Entwickler-Workflow präzise aufzudecken.
Semgrep Assistant (AI) – Assistant ist ein KI-gestützter AppSec-Ingenieur, der sowohl Entwicklern als auch AppSec-Teams dabei hilft, Semgrep-Ergebnisse in großem Maßstab zu priorisieren, zu selektieren und zu beheben. Menschen stimmen in 97 % der Fälle den automatischen Triage-Entscheidungen des Assistenten zu und bewerten die generierten Abhilfemaßnahmen in 80 % der Fälle als hilfreich. Eine Übersicht über die Funktionsweise des Assistenten finden Sie in dieser Übersicht.
Zusätzliche Ressourcen:
Schließen Sie sich Hunderttausenden anderen Entwicklern und Sicherheitsingenieuren an, die Semgrep bereits bei Unternehmen wie GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake und Trail of Bits verwenden.
Semgrep wird von Semgrep, Inc., einem Software-Sicherheitsunternehmen, entwickelt und kommerziell unterstützt.
Semgrep-Regeln sehen aus wie der Code, den Sie bereits geschrieben haben. keine abstrakten Syntaxbäume, Regex-Wrestling oder schmerzhafte DSLs. Hier ist eine kurze Regel zum Auffinden von Python- print()
-Anweisungen.
Führen Sie es online in Semgrep's Playground aus, indem Sie hier klicken.
Besuchen Sie Dokumente > Regelbeispiele für Anwendungsfälle und Ideen.
Anwendungsfall | Semgrep-Regel |
---|---|
Verbot gefährlicher APIs | Verhindern Sie die Verwendung von exec |
Suchrouten und Authentifizierung | Frühlingsrouten extrahieren |
Erzwingen Sie die Verwendung sicherer Standardeinstellungen | Flask-Cookies sicher setzen |
Verunreinigte Daten fließen in Senken | ExpressJS-Datenfluss in sandbox.run |
Setzen Sie Best Practices für Projekte durch | Verwenden Sie „assuredEqual“ für ==-Prüfungen. Überprüfen Sie immer Unterprozessaufrufe |
Kodifizieren Sie projektspezifisches Wissen | Überprüfen Sie Transaktionen, bevor Sie sie durchführen |
Überprüfen Sie Sicherheits-Hotspots | XSS in Apache Airflow finden, hartcodierte Anmeldeinformationen |
Konfigurationsdateien prüfen | Finden Sie S3-ARN-Verwendungen |
Von veralteten APIs migrieren | DES ist veraltet, veraltete Flask-APIs und veraltete Bokeh-APIs |
Wenden Sie automatische Korrekturen an | Verwenden Sie listenAndServeTLS |
Besuchen Sie „Dokumente“ > „Erweiterungen“, um mehr über die Verwendung von Semgrep in Ihrem Editor oder Pre-Commit zu erfahren. Wenn Semgrep in CI integriert und zum Scannen von Pull-Anfragen konfiguriert ist, meldet es nur Probleme, die durch diese Pull-Anfrage verursacht werden. Dadurch können Sie mit der Verwendung von Semgrep beginnen, ohne bereits bestehende Probleme zu beheben oder zu ignorieren!
Durchsuchen Sie die vollständige Semgrep-Dokumentation auf der Website. Wenn Sie neu bei Semgrep sind, schauen Sie sich Dokumente > Erste Schritte oder das interaktive Tutorial an.
Durch die Verwendung einer Remote-Konfiguration aus der Registry (wie --config=p/ci
) werden pseudonyme Regelmetriken an semgrep.dev gemeldet.
Durch die Verwendung von Konfigurationen aus lokalen Dateien (wie --config=xyz.yml
) werden keine Metriken aktiviert.
Um die Metriken der Registrierungsregeln zu deaktivieren, verwenden Sie --metrics=off
.
Die Semgrep-Datenschutzrichtlinie beschreibt die Grundsätze, die Entscheidungen zur Datenerfassung und die Aufschlüsselung der Daten leiten, die erfasst werden und nicht erfasst werden, wenn die Metriken aktiviert sind.
Führen Sie zum Upgrade den folgenden Befehl aus, der mit der Art und Weise verknüpft ist, wie Sie Semgrep installiert haben:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest