
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.
# elttams semgrep-rules [](https://semgrep.dev/) [](https://r2c.dev/slack) 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. ## Erste Schritte Dieser Leitfaden setzt voraus, dass Sie mit [Semgrep](https://semgrep.dev/docs) vertraut sind und es bereits installiert haben. Dieses Repository unterteilt die Regeln in zwei breite Kategorien: 1. `rules/` -- Regeln, die für Entwickler oder AppSec-Teams nützlich sind; es handelt sich dabei im Allgemeinen um Schwachstellen. 2. `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: ```bash git clone https://github.com/elttam/semgrep-rules.git ``` Um die Regeln zu testen, führen Sie Folgendes aus: ```bash semgrep --config semgrep-rules/rules semgrep-rules/rules/ ``` Um die auf Audits ausgerichteten Regeln zu testen, führen Sie Folgendes aus: ```bash semgrep --config semgrep-rules/rules-audit semgrep-rules/rules-audit/ ``` ## Regeln 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 `runAsNonRoot`); berücksichtigt den Security Context von Pod und Container. [PR][Upstream PR 2630] 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][Upstream PR 2630] ## Auf Audits ausgerichtete Regeln 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 [Upstream PR 2630]: https://github.com/returntocorp/semgrep-rules/pull/2630 [elttam]: https://elttam.com/