Zum Inhalt springen

Leitfaden

SAST-Tools im Vergleich: was sie finden und was sie übersehen

Was SAST-Tools leisten, wie sich acht verbreitete Tools in Ansatz, Sprachen und Lizenz unterscheiden und was statische Analyse in KI-generiertem Code übersieht.

· 9 Min. Lesezeit · Vom vetkit-Team

Ein Entwickler schiebt einen Scanner über eine lange, ausgerollte Code-Schriftrolle, dessen Strahl Warnmarkierungen aufleuchten lässt, während ein Roboter das Ende der Rolle hält.Ein Entwickler schiebt einen Scanner über eine lange, ausgerollte Code-Schriftrolle, dessen Strahl Warnmarkierungen aufleuchten lässt, während ein Roboter das Ende der Rolle hält.

Was ein SAST-Tool ist

Ein SAST-Tool (Static Application Security Testing) liest Ihren Quellcode, ohne ihn auszuführen, und meldet Code, der verwundbar aussieht: Request-Daten, die in eine SQL-Abfrage gelangen, ein aus Nutzereingaben zusammengesetzter Shell-Befehl, eine deaktivierte Zertifikatsprüfung, ein schwacher Hash für Passwörter. Weil es nur den Quellcode braucht, kann es bei jedem Commit laufen, lange bevor die Anwendung deployt wird.

SAST ist eine von mehreren Arten von Sicherheitstests. SCA (Software Composition Analysis) prüft Ihre Abhängigkeiten auf bekannte Schwachstellen, Secret Scanning sucht nach committeten Zugangsdaten, und DAST (dynamisches Testen) prüft eine laufende Anwendung. Ein SAST-Tool tut nichts davon, deshalb kombinieren es die meisten Teams zumindest mit Abhängigkeits- und Secret-Scanning.

Wie sich SAST-Tools unterscheiden

Vier Unterschiede erklären das meiste von dem, was Ihnen auffällt, wenn Sie zwei Tools auf denselben Code ansetzen.

  • Wie tief die Analyse geht. Pattern Matching findet Code, der einer bekannten schlechten Form ähnelt. Taint- oder Datenflussanalyse verfolgt einen Wert von seinem Eintrittspunkt (einem Request) bis zu seiner Verwendung (einer Abfrage). Werte über Funktionen und Dateien hinweg zu verfolgen, findet mehr echte Probleme, und meist unterscheiden sich genau hier kommerzielle von kostenlosen Editionen.
  • Eine Sprache oder viele. Tools für eine Sprache kennen ihr Ökosystem gut. Mehrsprachige Tools liefern einen einzigen Bericht für eine gemischte Codebasis.
  • Wo es läuft. Manche sind ein Befehl, den Sie lokal oder in der CI ausführen. Andere sind gehostete Plattformen, die sich mit Ihrer Versionsverwaltung verbinden und Dashboards, Kommentare in Pull Requests und Richtlinien hinzufügen.
  • Ob Sie eigene Regeln schreiben können. Gut lesbare Regelformate machen es praktikabel, die eigenen Konventionen Ihres Teams abzubilden.

Acht SAST-Tools im direkten Vergleich

Das sind verbreitete Tools, innerhalb jeder Gruppe alphabetisch sortiert. Die Tabelle gibt wieder, was die eigene Dokumentation des jeweiligen Projekts sagt; sie ist kein Ranking, und wir haben keine Benchmarks zwischen ihnen durchgeführt.

SAST-Tools im Vergleich
ToolAnsatz laut DokumentationSprachenLizenzSARIF-Ausgabe
CodeQL (GitHub Code Scanning)Erstellt aus dem Code eine Datenbank und führt semantische Abfragen darauf ausC/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift und GitHub-Actions-WorkflowsCLI für öffentliche Repositorys kostenlos nutzbar; private Repositorys benötigen eine Lizenz für GitHub Code SecurityJa
Checkmarx One SASTErstellt einen Graphen aus Code-Elementen und Datenflüssen und führt Abfragen aus; eigene Abfragen werden unterstütztMehrsprachig, darunter Java, C#, C/C++, PHP, JavaScript/TypeScript, Python und GoKommerziellJa
OpengrepMusterregeln mit Taint-Analyse; kompatibel mit Semgrep-RegelnÜber 30 SprachenOpen Source, LGPL 2.1Ja
SemgrepMusterregeln, die wie der Code aussehen, auf den sie passen. Die Community Edition analysiert innerhalb einer einzelnen Funktion oder Datei; das kommerzielle Semgrep Code ergänzt Analysen über Dateien und Funktionen hinwegÜber 30 SprachenEngine Open Source, LGPL 2.1; die AppSec Platform ist proprietärJa
Snyk CodeSemantische Analyse-Engine mit Datenfluss- und Taint-AnalyseMehrsprachig, darunter Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby und SwiftKommerzieller gehosteter Dienst mit kostenlosem TarifJa
SonarQubeRegeln für Codequalität und Sicherheit; Taint-Analyse für Injection-Regeln ist in SonarQube Server und Cloud verfügbarÜber 40 Sprachen und Frameworks, verteilt auf die EditionenCommunity Build ist Open Source, LGPL 3.0; Server und Cloud sind kommerziellImportiert SARIF aus anderen Tools
BanditErstellt für jede Datei einen Syntaxbaum und führt Plugins darauf ausNur PythonOpen Source, Apache 2.0Ja, mit einem optionalen Extra
gosecRegeln auf dem Syntaxbaum, SSA-basierte Analyzer und Taint-AnalyseNur GoOpen Source, Apache 2.0Ja

Brakeman ist ein weiteres bekanntes Tool für ein einzelnes Framework, Ruby on Rails. Sein Repository beschreibt es als kostenlos für die nicht kommerzielle Nutzung unter einer eigenen Public-Use-Lizenz, prüfen Sie also die Bedingungen, bevor Sie es in einen kommerziellen Dienst einbauen.

Mehrere dieser Tools bieten inzwischen KI-gestützte Fixes oder Triage unter eigenen Namen an, zum Beispiel Copilot Autofix für CodeQL-Warnungen, Semgrep Multimodal, Snyk Agent Fix und SonarQube AI CodeFix. Namen, Editionen und Preise ändern sich in diesem Bereich häufig, lesen Sie also die aktuelle Seite jedes Herstellers, bevor Sie sich entscheiden.

Wie Sie wählen

  • Eine Sprache, kleines Team. Beginnen Sie mit dem Tool für Ihren Stack (Bandit für Python, gosec für Go). Sie sind kostenlos, laufen schnell und lassen sich leicht in die CI einbinden.
  • Gemischte Codebasis, Open Source gewünscht. Eine regelbasierte mehrsprachige Engine wie Opengrep oder die Semgrep Community Edition deckt viele Sprachen mit Regeln ab, die Sie lesen und erweitern können.
  • Alles liegt auf GitHub. CodeQL über GitHub Code Scanning bringt Warnungen ohne zusätzlichen Dienst in Pull Requests. Siehe GitHub Advanced Security vs. vetkit.
  • Sie brauchen tiefere dateiübergreifende Analyse, Dashboards und Richtlinien. Genau das verkaufen die kommerziellen Plattformen. Vergleichen Sie sie an Ihrem eigenen Code, nicht anhand von Funktionslisten. Siehe Semgrep vs. vetkit und Snyk vs. vetkit.

Egal wofür Sie sich entscheiden: Bevorzugen Sie ein Tool, das SARIF schreibt. Das ist das gemeinsame Format, mit dem Sie Befunde an GitHub Code Scanning oder ein anderes Dashboard senden und später das Tool wechseln können. Der SARIF-Leitfaden erklärt, wie das geht.

Was SAST übersieht

SAST findet unsichere Codemuster. Vieles, was in Software schiefgeht, besonders in Software, die schnell mit einem KI-Assistenten geschrieben wurde, ist kein Muster in einer einzelnen Datei.

ProblemWarum SAST allein es nicht erkenntWas hilft
Ein Paket, das nicht existiert oder letzte Woche registriert wurdeDie Import-Anweisung ist gültiger CodeAbhängigkeitsprüfungen gegen die öffentlichen Registrys
Committete ZugangsdatenDie meisten SAST-Regeln betrachten das Verhalten des Codes, nicht Secret-FormateSecret Scanning
Bekannte Schwachstellen in AbhängigkeitenDer verwundbare Code liegt nicht in Ihrem RepositorySoftware Composition Analysis
Fehlende Autorisierung zwischen NutzernDer Code ist syntaktisch in Ordnung; die fehlende Regel steckt im Design Ihres ProduktsReview und ein Test mit zwei Konten
Unfertige Implementierungen oder PlatzhalterKein SicherheitsmusterChecks für Codequalität und KI-Risiken sowie Review
Keine Timeouts, Abfragen in Schleifen, keine FehlerberichteZuverlässigkeitsprobleme, außerhalb der meisten SicherheitsregelsätzeChecks auf Produktionsreife
Falsch konfiguriertes Hosting oder falsche DatenbankberechtigungenDie Einstellung steckt in einer Konsole, nicht im QuellcodePrüfen der deployten Umgebung

Deshalb ist ein sauberer SAST-Bericht nicht dasselbe wie Code, der bereit zur Auslieferung ist. Der Leitfaden dazu, was beim Vibe Coding schiefgeht und der Leitfaden zu erfundenen Paketen gehen die Fälle durch, die für KI-gestützten Code am wichtigsten sind.

Wo vetkit ins Spiel kommt

vetkit ist keine eigene SAST-Engine. Es ist ein Repository-Audit, das statische Analyse als einen Teil eines umfassenderen Berichts ausführt. Für Codesicherheit nutzt es Opengrep mit 663 eigenen Regeln, die im öffentlichen Check-Katalog aufgeführt sind, und ergänzt Bandit für Python und gosec für Go, wenn diese Checks ausgewählt sind. Drumherum führt es Secret Scanning, Prüfungen auf Schwachstellen in Abhängigkeiten und auf die Existenz von Paketen sowie Checks für Codequalität, KI-Code-Risiken und Produktionsreife aus und macht aus den Befunden nachverfolgbare Aufgaben. Befunde lassen sich als SARIF exportieren.

Wenn Sie bereits eines der oben genannten Tools nutzen und zufrieden sind, behalten Sie es. vetkit ist für die Zeilen der zweiten Tabelle nützlich und im Early Access mit einem kostenlosen Security Quick Scan verfügbar, der Secrets, bekannte Schwachstellen in Abhängigkeiten und grundlegende Sicherheitskonfiguration abdeckt.

Quellen

Die Aussagen zu anderen Tools haben wir am aus deren eigener Dokumentation oder deren Repositorys entnommen. Produkte ändern sich schnell, maßgeblich sind daher die eigenen Seiten des jeweiligen Projekts:

Produktnamen sind Marken ihrer jeweiligen Inhaber. vetkit ist mit ihnen weder verbunden noch wird es von ihnen unterstützt oder gesponsert; die Namen dienen nur zur Kennzeichnung der Tools. Etwas veraltet? Schreiben Sie an contact@vetkit.dev, und wir korrigieren es.

Early Access anfordern

Erzählen Sie uns kurz von Ihrem Team und den Repositorys, die Sie prüfen möchten. Wir nehmen Teams in kleinen Gruppen auf und antworten per E-Mail.

Wir verwenden diese Angaben nur, um auf Ihre Anfrage zu antworten. Datenschutzerklärung