Tools/Sicherheit & Compliance

Semgrep: statische Analyse, die in einen Pull Request passt

Semgrep parst über 30 Sprachen und gleicht YAML-Muster in Sekunden ab, die Engine steht unter LGPL-2.1. Cross-file-Analyse, Regelsätze und KI-Triage liegen hinter den bezahlten Stufen.

Art
Static analysis with AI rules
Preis
Free · from $30 per seat

··10 Min. Lesezeit

  • SAST
  • Static analysis
  • CI security
  • Rule authoring
  • AppSec
Diagramm der Semgrep-Scan-Pipeline, von Quelldateien über Parsing und Regelabgleich bis zu gemeldeten Findings

Das Wichtigste in Kürze

  • Die Semgrep-Engine steht unter LGPL-2.1 und analysiert über 30 Sprachen offline; Cross-file-Analyse braucht eine proprietäre Binary und ein Konto.
  • Die kostenlose Stufe umfasst 10 Mitwirkende und 10 private Repositories und zählt Mitwirkende über einen rollierenden 90-Tage-Zeitraum im git log.
  • Seit dem 13. Dezember 2024 tragen die von Semgrep gepflegten Regeln die Semgrep Rules License v1.0, die Weitergabe und Dienstnutzung verbietet; OpenGrep ist der LGPL-Fork, der darauf antwortet.
  • Die Cross-file-Analyse fällt nach 5 GB Speicher oder drei Stunden still auf Einzeldatei-Analyse zurück, ein großes Repository verliert Tiefe, ohne zu fallen.
  • KI-Autofix kostet 20 Credits pro Finding bei 20 monatlichen Credits pro Teams-Mitwirkendem, damit ist Autofix die teuerste Aktion des Tarifs.

Semgrep ist ein statischer Analysierer, der auf Mustererkennung aufbaut: Er parst Quellcode in einen Syntaxbaum und meldet jede Stelle, an der das Muster einer YAML-Regel auf diesen Baum trifft. Die Engine steht unter LGPL-2.1, läuft ohne Netzwerkverbindung auf einem Laptop und ist bei einem typischen Repository in Sekunden fertig. Die Position hier ist: das günstigste glaubwürdige erste SAST-Tool, das ein kleines Team in CI stellen kann, und die kostenlose Stufe ist ein gut gebauter Aufweg statt ein fertiges Produkt, denn die Analyse, die den meisten Lärm beseitigt, die mitgelieferten Regelsätze und die KI-Triage liegen allesamt hinter einem Login.

Es steht zwischen den Lintern, die ein Team ohnehin fährt, und den schweren Scannern, die einen Security-Ingenieur brauchen. In der Praxis konkurriert es mit CodeQL um Tiefe, mit SonarQube um das Pull-Request-Gate und mit Snyk Code um Ergonomie; der Open-Source-Fork OpenGrep konkurriert um die Lizenz. Ersetzt wird meistens ein Ordner halb gepflegter Grep-Muster.

Was es ist

Ein Kommandozeilen-Scanner plus eine gehostete Plattform. Die Kommandozeilen-Version leistet die Arbeit: Zielverzeichnis und einen oder mehrere Regelsätze angeben, zurück kommen Findings mit Regel-Id, Schweregrad, Meldung und dem gefundenen Bereich. Die Plattform, Semgrep AppSec Platform genannt, ergänzt Dashboard, Policy, Pull-Request-Kommentare, Supply Chain, Secret-Erkennung und die KI-Funktionen. Alles unterhalb der Plattform ist die Community Edition.

  • Engine-Lizenz LGPL-2.1; neueste Version 1.179.0, veröffentlicht am 1. Oktober 2026
  • Über 30 Sprachen in der Community Edition, über 35 für Semgrep Code
  • Über 3.000 Community-Regeln, dazu Regelsätze nach Präfix wie p/python
  • Kostenlose Stufe: 10 Mitwirkende, 10 private Repositories, 60 KI-Credits pro Monat
  • Teams ab 30 Dollar pro Mitwirkendem und Monat, Secrets kostet 15 Dollar
  • Mitwirkende werden über einen rollierenden 90-Tage-Zeitraum aus dem git log gezählt
  • Cross-file-Analyse braucht eine proprietäre Binary von semgrep install-semgrep-pro

Wie es funktioniert

Für jede Sprache gibt es einen Parser, überwiegend auf tree-sitter-Basis, der die Datei in einen Syntaxbaum übersetzt. Eine Regel ist ein Muster über diesen Baum, geschrieben mit Metavariablen wie $X und $F, dazu Bedingungen in patterns, pattern-not, metavariable-regex und im taint mode. Gematcht wird strukturell statt textuell: Leerraum, umbenannte Variablen und umgeschriebene Anweisungen verbergen keinen Treffer, deshalb bleibt die Falsch-Positiv-Rate niedrig genug für ein Pull-Request-Gate.

Semgrep: how a scan turns source into findingsSource files are parsed into a syntax tree, matched against rule patterns, and reported as findings. Rulesets from the registry and the optional Pro engine feed the matching step, and findings leave as terminal output, JSON or SARIF.Semgrep: source in, findings outsemgrep.devEVERY SCANSource filessrc, gitParsertree-sitter ASTRule matchpatterns, taintFindingsid, severityReportjson, SARIFWHAT FEEDS THE MATCHRegistry rulesetsauto, p/pythonPro enginecross-file, login
Die Regel entscheidet, was als Finding zählt; die Engine entscheidet nur, wo ein Muster trifft.

Findings tragen Regel-Id, Schweregrad und Meldung und lassen sich zeilenweise mit einem nosemgrep-Kommentar oder regelweise über einen Ignore-Eintrag unterdrücken. Die Ausgabe geht ins Terminal, nach JSON oder SARIF, und das ist es, was die meisten Dashboards einlesen.

Die entscheidende Grenze ist der Umfang. Die Analyse der Community Edition ist intraprozedural: Sie denkt innerhalb einer einzelnen Funktion. Analyse über Funktionen und über Dateien hinweg läuft auf der Pro-Engine, einer eigenen Binary, die erst nach semgrep login und semgrep install-semgrep-pro aktiv wird.

Erste Schritte

Die CLI lässt sich mit pip, pipx, uv oder brew installieren; für Scans mit Community-Regeln braucht es kein Konto. Eine Regeldatei ist klein genug, um neben dem Code zu liegen, den sie schützt.

# rules/no-pickle.yaml
rules:
  - id: avoid-pickle-load
    languages: [python]
    severity: WARNING
    message: |
      pickle.load executes whatever is in the stream. Only feed it
      bytes that never left this machine; use json.loads otherwise.
    pattern: pickle.load($STREAM)

Dann semgrep scan --config rules/no-pickle.yaml src/ für einen Regelsatz, semgrep scan --config p/python src/ für ein Registry-Präfix oder semgrep --config auto, damit das Werkzeug Regelsätze zu den erkannten Sprachen lädt. Dazu --json oder --sarif für maschinenlesbare Ausgabe und semgrep ci, sobald ein Repository mit einem Deployment verbunden ist.

Preis und Regellizenz

Die Engine ist kostenlos, das interessante Geld liegt drumherum. Die Preisseite listet Stand Oktober 2026 drei Stufen, und die kostenlose ist so gedeckelt, dass man die Grenze erst beim elften Mitwirkenden sieht.

TarifPreisGrenzenWas es freischaltet
Free$010 Mitwirkende, 10 private RepositoriesCode und Supply Chain, 60 KI-Credits pro Monat
TeamsAb 30 Dollar pro Mitwirkendem und Monat500 private RepositoriesSSO, rollenbasieter Zugriff, Secrets für 15 Dollar, je 20 KI-Credits
EnterpriseIndividuellKeine Grenze bei Repositories oder MitwirkendenOn-prem-Quellverwaltung, eigene CI, 50 KI-Credits, Ansprechpartner

Die Lizenz ist eine andere Frage als der Preis. Die Engine bleibt LGPL-2.1, seit dem 13. Dezember 2024 werden die von Semgrep gepflegten Regeln unter der Semgrep Rules License v1.0 ausgeliefert: interne, nicht wettbewerbswidrige Nutzung ist erlaubt, Weitergabe und das Anbieten der Regeln als Dienst sind es nicht. Berater und Unternehmen, die die Regeln intern nutzen, liegen darin; ein Anbieter, der daraus ein konkurrierendes SAST-Produkt baut, nicht. Diese Änderung ist der Grund für OpenGrep, einen LGPL-2.1-Fork, den ein Konsortium aus Aikido, Endor Labs, Jit und Orca Security pflegt.

KI-Funktionen werden separat in Credits abgerechnet, und die Kosten stehen öffentlich. Kommentare auf einem Pull Request kosten nichts, Triage kostet einen Credit pro Finding, und Autofix, der einen behebenden Pull Request öffnet, kostet zwanzig.

KI-AktionCreditsWas sie tut
KI-Kommentare auf einem Pull Request0Hinweise, die auf dem PR erscheinen
KI-Analyse eines Findings1 pro FindingTriage, Behebungshinweise, Zuordnung der Komponente
KI-Autofix20 pro FindingÖffnet einen Pull Request, der das Finding behebt
KI-gestützter Detection-ScanVariabelHängt von Größe und Komplexität des Scans ab
Agentic-Workflows-LaufVariabelMehrschrittige Analyse, mehr Tokens als ein Detection-Scan

Im CI betrieben

Semgrep ist ungewöhnlich schnell, und das ändert, worauf sich ein Gate lohnt. Die Fehlerfälle in großen Repositories drehen sich um Tiefe und Speicher, nicht um den Scan selbst.

  • Diff-aware Scans analysieren nur die Stellen, die ein Pull Request berührt hat; die Cross-file-Analyse läuft bei vollen Scans und nie auf Pull-Request-Scans.
  • Die Cross-file-Analyse fällt auf Einzeldatei-Analyse zurück, sobald ein Scan 5 GB Speicher oder drei Stunden überschreitet, ein großes Repository verliert also leise an Tiefe, statt zu fallen.
  • Monorepo-Unterstützung teilt ein Repository auf jedem Tarif in Teile; verteilte Scans über mehrere Maschinen beginnen bei Teams.
  • Join mode, die einzige Einrichtung der offenen Engine zum Verknüpfen von Treffern über Regeln hinweg, ist laut Dokumentation experimentell und wird nicht aktiv gepflegt.
  • Regeln lassen sich über die Registry teilen; private Regeln, die sensible Regellogik in der Organisation behalten, brauchen mindestens Teams.

Wo es quietscht

Die Decke kommt früher, als die Preisseite nahelegt. Die Community Edition denkt nur innerhalb einer Funktion, ein kontaminierter Wert, der eine Hilfsfunktion überquert, bleibt unsichtbar, bis jemand für die Pro-Engine bezahlt, und Typhinferenz sowie Konstantenpropagation sind dieselbe Geschichte. Die zweite Grenze ist die Regelqualität: generische Muster ohne Metavariablen-Bedingung erzeugen genug Lärm, bis ein Team das Werkzeug ignoriert, und enge Regeln zu schreiben, ist eine Fähigkeit, die ein Team erst erwerben muss. Die dritte ist Rechnung: 30 Dollar pro Mitwirkendem und Monat auf einem rollierenden 90-Tage-Zähler aus dem git log, gezählt wird jede Person, die in diesem Fenster einen privaten Commit hatte, ob sie noch am Projekt ist oder nicht.

WerkzeugAnalysentiefeRegeln schreibenWas es kostet
Semgrep CEIntraprozedural, eine Funktion nach der anderenYAML-Muster, die ein Prüfer lesen kannKostenlose Engine, Semgrep-Regeln nur für interne Nutzung
CodeQLDatenfluss über die ganze DatenbankQL, eine Abfragesprache mit echter EinarbeitungFür öffentliche Repositories frei, sonst GitHub Code Security
SonarQubeQualität plus Basis-Security, taint erst in bezahlten StufenEigene Regeln brauchen ein Java-PluginCommunity Build kostenlos, bezahlte Stufen je Instanz
Snyk CodeDatenfluss in einer gehosteten EngineVom Anbieter gepflegte Regeln, wenig EigenesKäuflich, pro Entwickler abgerechnet

Die pointierte Variante: für ein Team von acht zählt Tiefe weniger als Gelesenwerden. Ein Regelsatz, den eine Entwicklerin versteht und in YAML erweitern kann, wird umgesetzt; eine Abfragesprache über die ganze Datenbank, für die niemand Zeit hat, nicht. Sobald Datenfluss über eine Servicegrenze hinweg das eigentliche Bedrohungsmodell ist, kann Semgrep CE die Frage nicht beantworten, und die 30-Dollar-Stufe ist im Vergleich zum Umzug der Regeln nach QL die günstige Option.

Fazit

Als Standard-Scanner nehmen, mit offenen Augen dafür, wo die bezahlte Decke sitzt.

  1. Die kostenlose Community Edition nehmen, wenn das Ziel eine funktionierende Security-Gate in CI innerhalb einer Woche ist und niemand im Team Abfragesprachen schreibt.
  2. Für Teams bezahlen, wenn Analyse auf einer Funktion Findings erzeugt, über die Entwickler streiten, und wenn SSO, Dashboard und private Regeln zu Anforderungen statt Wünschen geworden sind.
  3. Nicht 30 Dollar als Preis behandeln: Es sind 30 Dollar pro Mitwirkendem und Monat auf einem rollierenden 90-Tage-Zähler, und unbegrenzte Repositories, on-prem-Quellverwaltung und eigene CI-Integrationen liegen in Enterprise.
  4. Stattdessen CodeQL wählen, wenn die Frage ist, wie Daten über einen kompilierten Codeblock einen Sink erreichen, und SonarQube, wenn das Gate genauso um Wartbarkeit geht wie um Sicherheit.
  5. Wenn die Regeln weitergegeben oder als Dienst angeboten werden müssen, ist nur die Engine ohne die von Semgrep gepflegten Regelsätze oder OpenGrep eine Lösung, die kein Gespräch mit dem Anbieter braucht.

Quellen

  1. Semgrep pricing: Free, Teams and Enterprise
  2. Semgrep Community Edition
  3. Semgrep documentation: cross-file analysis
  4. Semgrep documentation: usage and billing
  5. Semgrep releases: v1.179.0
  6. Semgrep Rules License v1.0
  7. Important updates to Semgrep OSS, 13 December 2024
  8. OpenGrep repository

Häufige Fragen

Ist Semgrep in Produktion kostenlos nutzbar?

Die Engine steht unter LGPL-2.1 und die CLI läuft ohne Konto. Die gehostete kostenlose Stufe umfasst bis zu 10 Mitwirkende und 10 private Repositories, darüber beginnt Teams bei 30 Dollar pro Mitwirkendem und Monat. Die von Semgrep gepflegten Regeln sind nur für interne, nicht wettbewerbswidrige Nutzung kostenlos.

Was unterscheidet Community Edition und Pro-Engine?

Die Analyse der Community Edition ist intraprozedural, sie denkt also innerhalb einer einzelnen Funktion. Die Pro-Engine ergänzt die Analyse über Funktionen, die Semgrep Code standardmäßig nutzt, und die optionale Analyse über Dateien hinweg. Es ist eine eigene Binary, die nach semgrep login mit semgrep install-semgrep-pro installiert wird.

Wie genau ist Semgrep?

Es gibt keine veröffentlichte Präzisionszahl, deshalb ist die ehrliche Antwort strukturell: Gematcht wird gegen einen Syntaxbaum, ein Finding ist also entweder ein exakter Mustertrreff oder eine zu lasch geschriebene Regel. Der meiste Lärm in der Praxis kommt aus Regeln ohne Metavariablen-Bedingungen, nicht aus der Engine.

Sendet Semgrep meinen Quellcode in die Cloud?

Lokal oder vollständig in der eigenen CI ausgeführt bleibt der Quellcode liegen; an den Dienst gehen nur Scan-Metadaten. KI-Funktionen übergeben die Datei mit dem Finding an ein Modell, und Managed Scans klonen das Repository für den Scan und vernichten den Klon danach.

Klingt nach dem, was du suchst?

Erzähl mir von deinem Projekt oder deiner Stelle – ich freue mich, von dir zu hören.