
Règles de sécurité d'analyse statique pour la détection de vulnérabilités et la revue de code axée sur l'audit dans Java, Go, Python, C#, Kotlin, PHP, Kubernetes et GitHub Actions.
Bienvenue dans le dépôt public de règles semgrep d'[elttam][].

Nous développons régulièrement des règles lors de nos audits de sécurité assistés par code et de nos recherches en sécurité logicielle. Nous ajouterons fréquemment de nouvelles règles et améliorerons ce contenu pour la communauté semgrep. Nous espérons que les ingénieurs en sécurité produit et les auditeurs de code qui utilisent semgrep trouveront ces règles utiles !
Si vous trouvez des bogues, veuillez ouvrir une issue GitHub.
Ce guide suppose que vous êtes familier avec Semgrep et que vous l'avez déjà installé.
Ce dépôt divise les règles en deux grandes catégories :
rules/ -- Règles utiles pour les développeurs ou les équipes AppSec, généralement des vulnérabilités.rules-audit/ -- Règles utiles pour l'audit de code source, l'identification de comportements intéressants et l'énumération des points d'entrée, afin de compléter la revue manuelle du code source.Testez ce dépôt avec la commande suivante :
git clone https://github.com/elttam/semgrep-rules.git
Pour tester les règles, exécutez :
semgrep --config semgrep-rules/rules semgrep-rules/rules/
Pour tester les règles orientées audit, exécutez :
semgrep --config semgrep-rules/rules-audit semgrep-rules/rules-audit/
Ces règles sont axées sur l'identification de vulnérabilités ou d'autres faiblesses.
| Chemin de la règle | Langage | Technologie | Description |
|---|---|---|---|
generic/jsp-likely-xss | Generic | JSP | Détecte les XSS avec un rendu non sécurisé dans un modèle |
go/lang/security/audit/executable-symlink | Go | Prise de contrôle potentielle de lien symbolique avec os.Executable | |
go/lang/security/audit/sprintf-plain-string | Go | Caractères de contrôle non échappés dans Sprintf | |
go/lang/security/audit/uintptr-nonatomic | Go | Utilisation non atomique d'un uintptr converti | |
java/lang/security/audit/crypto/gcm-static-iv | Java | Recherche GCM utilisant les mêmes valeurs pour la clé et l'IV | |
java/lang/security/audit/crypto/randomstringutils | Java | Apache Commons | Recherche RandomStringUtils utilisant java.util.Random par défaut, qui ne convient pas à la sécurité |
java/spring/security/audit/remoting/ | Java | Spring | Recherche l'utilisation de Spring Remoting |
php/php-filter-chain-read-from-oracle | PHP | Détecte un possible oracle d'erreur basé sur une chaîne de filtres PHP | |
yaml/github-actions/security/save-state | YAML | Github-Actions | Recherche l'utilisation de ::save-state non sécurisé et obsolète |
yaml/github-actions/security/set-output | YAML | Github-Actions | Recherche l'utilisation de ::set-output non sécurisé et obsolète |
yaml/kubernetes/audit/network-policy-ingress-any | YAML | Kubernetes | Recherche les spécifications de conteneurs avec NetworkPolicy dont l'Ingress autorise ANY |
yaml/kubernetes/audit/privileged-container | YAML | Kubernetes | Recherche les spécifications de conteneurs avec un contexte de sécurité privilégié |
yaml/kubernetes/security/allow-privileged-escalation | YAML | Kubernetes | Recherche les spécifications de conteneurs, y compris les conteneurs d'initialisation, autorisant l'élévation de privilèges (allowPrivilegeEscalation) |
yaml/kubernetes/security/no-security-context | YAML | Kubernetes | Recherche les spécifications de conteneurs sans contexte de sécurité, en tenant compte du contexte de sécurité du pod ou du conteneur. |
yaml/kubernetes/security/run-as-non-root | YAML | Kubernetes | Recherche les spécifications de conteneurs autorisant l'exécution en tant que root (runAsNonRoot absent), en tenant compte du contexte de sécurité du pod et du conteneur [PR][Upstream PR 2630] |
yaml/kubernetes/security/run-as-non-root-unsafe-value | YAML | Kubernetes | Recherche les spécifications de conteneurs autorisant explicitement l'exécution en tant que root (runAsNonRoot: false), en tenant compte du contexte de sécurité du pod et du conteneur [PR][Upstream PR 2630] |
Ces règles sont utiles pour faciliter la revue manuelle du code source en identifiant des comportements intéressants ou en énumérant les points d'entrée.