
Eine Sammlung meiner Semgrep-Regeln zur Erleichterung der Schwachstellenforschung.
„Die Angriffsfläche ist die Schwachstelle. Einen Bug dort zu finden, ist nur ein Detail.“
– Mark Dowd
„Manche Details sind wichtiger als andere.“
– Fedor G. Pikus
Eine Sammlung meiner Semgrep-Regeln, um Schwachstellenforschung zu erleichtern.
# Hochprioritäts-Scan (schnelle Erfolge)
semgrep --severity ERROR --config "p/0xdea"
# Hoch- und mittelprioritäts-Scan (empfohlen)
semgrep --severity ERROR --severity WARNING --config "p/0xdea"
# Vollständiger Scan (kann Randbefunde und mehr Fehlalarme enthalten)
semgrep --config "p/0xdea"
Alternativ können Sie dieses GitHub-Repository lokal klonen und ausführen:
# Vollständiger Scan
semgrep --config semgrep-rules/rules /path/to/source
# Scan einer bestimmten Regel
semgrep --config semgrep-rules/rules/c/command-injection.yaml /path/to/source
[!TIP] Geben Sie den Schalter
--no-git-ignorean, um Dateien unabhängig vom Git-Tracking-Status oder.gitignore-Regeln zu scannen.
Für eine bessere und optimierte Erfahrung empfehle ich, die Semgrep-Scanausgabe im SARIF-Format zu speichern und SARIF Explorer in VS Code zu verwenden:
semgrep --sarif --sarif-output=/path/to/source/SEMGREP.sarif --config semgrep-rules/rules /path/to/source
code /path/to/source # dann die SEMGREP.sarif-Datei in VS Code mit SARIF Explorer öffnen
Siehe auch das beigefügte SARIF-Ausgabe-Beispiel.
Getestet mit Semgrep CLI 1.169.0.
Kampferprobtes C- (und manchmal C++) Regelset.
gets.strcpy, stpcpy, strcat.sprintf und vsprintf.scanf-Familie.strncat übergeben.strncpy, , und Varianten übergeben.strlen auf short kann gefährlich sein.alloca.free.free.free auf Speicher, der nicht im Heap liegt.malloc, calloc, realloc usw.putenv mit einer stack-allozierten Variablen.system oder popen.access, stat, lstat usw.mktemp, tmpnam, tempnam.signal.setuid und seteuid.memset.rand und srand.scanf-Familie.atoi, atol, atof.Diese Regeln gelten als potenziell zu laut und für den allgemeinen Gebrauch ungeeignet.
--time-Benchmarking gegen reale Codebasen, um langsame Regeln zu identifizieren, die optimiert werden müssen.memcpysnprintfsizeof-Operators auf einen Zeiger statt auf sein Ziel.strncpy und stpncpy.snprintf und vsnprintf.strlcpy und strlcat.