
Sicherheitsregeln für die statische Analyse zur Erkennung von Schwachstellen und für auditorientierte Code-Reviews in Java, Go, Python, C#, Kotlin, PHP, Kubernetes und GitHub Actions.
Willkommen im öffentlichen Repository für semgrep-Regeln von elttam.

Wir entwickeln regelmäßig Regeln im Rahmen unserer codegestützten Sicherheitsaudits und unserer Forschung zur Softwaresicherheit. Wir werden häufig neue Regeln hinzufügen und das hier Vorhandene für die Semgrep-Community verbessern. Wir hoffen, dass Produktsicherheitsingenieure und Code-Auditoren, die Semgrep verwenden, diese Regeln nützlich finden!
Wenn Sie Fehler finden, erstellen Sie bitte ein GitHub-Issue.
Dieser Leitfaden setzt voraus, dass Sie mit Semgrep vertraut sind und es bereits installiert haben.
Dieses Repository unterteilt die Regeln in zwei breite Kategorien:
rules/ -- Regeln, die für Entwickler oder AppSec-Teams nützlich sind; es handelt sich dabei im Allgemeinen um Schwachstellen.rules-audit/ -- Regeln, die für die Quellcode-Auditierung nützlich sind, interessantes Verhalten identifizieren und Einstiegspunkte aufzählen, um die manuelle Quellcode-Überprüfung zu ergänzen.Testen Sie dieses Repository mit dem folgenden Befehl:
git clone https://github.com/elttam/semgrep-rules.git
Um die Regeln zu testen, führen Sie Folgendes aus:
semgrep --config semgrep-rules/rules semgrep-rules/rules/
Um die auf Audits ausgerichteten Regeln zu testen, führen Sie Folgendes aus:
semgrep --config semgrep-rules/rules-audit semgrep-rules/rules-audit/
Diese Regeln zielen darauf ab, Schwachstellen oder andere Schwächen zu identifizieren.
| Regelpfad | Sprache | Technologie | Beschreibung |
|---|---|---|---|
| generic/jsp-likely-xss | Generic | JSP | Erkennt XSS bei unsicherem Rendering in der Vorlage |
| go/lang/security/audit/executable-symlink | Go | Mögliche Symlink-Übernahme mit os.Executable | |
| go/lang/security/audit/sprintf-plain-string | Go | Sprintf mit nicht maskierten Steuerzeichen | |
| java/lang/security/audit/crypto/gcm-static-iv | Java | Findet GCM, das dieselben Werte für Schlüssel und IV verwendet | |
| java/lang/security/audit/crypto/randomstringutils | Java | Apache Commons | Findet RandomStringUtils, das den standardmäßigen java.util.Random verwendet, der für die Sicherheit nicht geeignet ist |
| java/spring/security/audit/remoting/ | Java | Spring | Findet die Verwendung von Spring Remoting |
| php/php-filter-chain-read-from-oracle | PHP | Erkennt mögliches fehlerbasiertes Oracle für PHP-Filterketten | |
| yaml/github-actions/security/save-state | YAML | Github-Actions | Findet die Verwendung des unsicheren und veralteten ::save-state |
| yaml/github-actions/security/set-output | YAML | Github-Actions | Findet die Verwendung des unsicheren und veralteten ::set-output |
| yaml/kubernetes/audit/network-policy-ingress-any | YAML | Kubernetes | Findet Container-Spezifikationen mit NetworkPolicy mit Ingress-Erlaubnis ANY |
| yaml/kubernetes/audit/privileged-container | YAML | Kubernetes | Findet Container-Spezifikationen mit privilegiertem Security Context |
| yaml/kubernetes/security/allow-privileged-escalation | YAML | Kubernetes | Findet Container-Spezifikationen, einschließlich Init-Containern, die eine Privilegienausweitung erlauben (allowPrivilegeEscalation) |
| yaml/kubernetes/security/no-security-context | YAML | Kubernetes | Findet Container-Spezifikationen ohne Security Context; berücksichtigt den Security Context von Pod oder Container. |
| yaml/kubernetes/security/run-as-non-root | YAML | Kubernetes | Findet Container-Spezifikationen, die das Ausführen als Root erlauben (fehlendes ); berücksichtigt den Security Context von Pod und Container. |
Diese Regeln sind nützlich, um die manuelle Quellcode-Überprüfung zu unterstützen, indem sie interessantes Verhalten identifizieren oder Einstiegspunkte aufzählen.
| Regelpfad | Sprache | Technologie | Beschreibung |
|---|---|---|---|
| c/lang/security/audit/exec | C | Findet die Ausführung von Prozessen | |
| csharp/dotnet/security/audit/entrypoints/apsnet-controller | C# | ASP.NET | Findet ASP.NET-REST-Einstiegspunkte |
| java/jackson/polymorphic-typing | Java | Jackson | Findet polymorphe Typisierung, um das Auffinden anfälliger Jackson-Deserialisierungsprobleme zu erleichtern. |
| java/jackson/type-resolver-override | Java | Jackson | Findet polymorphe Typisierung mithilfe von TypeResolveBuilder |
| java/jax-rs/security/audit/entrypoints/ | Java | JAX-RS | Findet JAX-RS-REST-Einstiegspunkte |
| java/lang/security/audit/processbuilder | Java | Findet die Ausführung von Prozessen mit ProcessBuilder | |
| java/spring/security/audit/entrypoints/ | Java | Spring | Findet Spring-REST-Einstiegspunkte |
| java/struts2/security/audit/devmode/ | Java | Struts2 | Findet die Verwendung von devMode |
| java/struts2/security/audit/dmi/ | Java | Struts2 | Findet die Verwendung von Dynamic Method Invocation |
| java/struts2/security/audit/entrypoints/ | Java | Struts2 | Findet Struts2-REST-Einstiegspunkte |
| java/xstream/security/audit/fromxml | Java | XStream | Findet die Verwendung von XStream.fromXML(...) |
| kotlin/spark/security/audit/entrypoints/ | Kotlin | Spark | Findet Spark-REST-Einstiegspunkte |
| python/flask/security/audit/entrypoints/ | Python | Flask | Findet Flask-REST-Einstiegspunkte |
runAsNonRoot| yaml/kubernetes/security/run-as-non-root-unsafe-value | YAML | Kubernetes | Findet Container-Spezifikationen, die das Ausführen als Root explizit erlauben (runAsNonRoot: false); berücksichtigt den Security Context von Pod und Container. PR |