
Collection de règles Semgrep pour l'analyse statique de code, la détection de vulnérabilités de sécurité et l'application de pratiques de codage sécurisé dans plusieurs langages.
Ce dépôt contient des règles Semgrep développées par Trail of Bits et mises à la disposition du public. Elles font partie de nos efforts de développement continus et sont utilisées dans nos audits de sécurité, nos recherches de vulnérabilités et nos projets internes. Elles évolueront au fil du temps à mesure que nous identifierons de nouvelles techniques.
Consultez le Testing Handbook pour des conseils sur Semgrep.
Le moyen le plus simple d'exécuter les règles est de les lancer depuis le registre Semgrep. Pour ce faire, accédez au dossier racine de votre projet et exécutez la commande suivante :```shell $ semgrep --config "p/trailofbits"
Vous pouvez également cloner ce dépôt, naviguer vers le dossier racine de votre projet et exécuter des règles individuelles à l'aide de la commande ci-dessous :```shell
$ semgrep --config /path/to/semgrep-rules/semgreprule.yml
Pour exécuter toutes les règles à partir du dépôt cloné:```shell $ semgrep --config /path/to/semgrep-rules/ .
## Options utiles
Semgrep s'exécutera sur tous les fichiers de code pris en charge, à l'exception de ceux présents dans votre fichier `.gitignore`. Si vous souhaitez exécuter les règles sur tous les fichiers et répertoires, y compris ceux de votre `.gitignore`, ajoutez l'option `--no-git-ignore`.```shell
$ semgrep --config /path/to/semgrep-rules/ . --no-git-ignore
Vous pouvez également demander à Semgrep d'ignorer les fichiers et répertoires qui correspondent à n'importe quel motif. Par exemple, si vous souhaitez demander à Semgrep d'ignorer tous les fichiers de test Go, vous pouvez exécuter ce qui suit :```shell $ semgrep --config /path/to/semgrep-rules/ . --exclude='*_test.go'
Utilisez `-o` pour écrire les résultats dans un fichier:```shell
$ semgrep --config /path/to/semgrep-rules/hanging-goroutine.yml -o leaks.txt'
| ID | Playground | Impact | Confiance | Description |
|---|---|---|---|---|
| eth-rpc-tracetransaction | 🛝🔗 | 🟥 | 🌕 | Détecte les tentatives d'extraction d'informations de trace à partir d'une transaction ou d'un bloc EVM. Dans les applications d'échange ou de pont, une logique supplémentaire doit être implémentée pour encapsuler ces points de terminaison afin d'éviter que les valeurs transférées lors de frames d'appel annulées soient comptabilisées. |
| eth-txreceipt-status | 🛝🔗 | 🟥 | 🌕 | Détecte quand le statut d'un reçu de transaction est lu |
| hanging-goroutine | 🛝🔗 | 🟩 | 🌗 | Fuites de goroutines |
| invalid-usage-of-modified-variable | 🛝🔗 | 🟧 | 🌘 | Affectation potentiellement non intentionnelle lorsqu'une erreur se produit |
| iterate-over-empty-map | 🛝🔗 | 🟩 | 🌗 | Itération probablement redondante sur une map vide |
| missing-runlock-on-rwmutex | 🛝🔗 | 🟧 | 🌗 | RUnlock manquant sur un verrou RWMutex avant de retourner d'une fonction |
| missing-unlock-before-return | 🛝🔗 | 🟧 | 🌗 | Déverrouillage de mutex manquant avant de retourner d'une fonction |
| nil-check-after-call | 🛝🔗 | 🟧 | 🌗 | Déréférencements nuls possibles |
| racy-append-to-slice | 🛝🔗 | 🟧 | 🌗 | Appels concurrents à append depuis plusieurs goroutines |
| racy-write-to-map | 🛝🔗 | 🟧 | 🌗 | Écritures concurrentes dans la même map depuis plusieurs goroutines |
| servercodec-readrequestbody-unhandled-nil | 🛝🔗 | 🟩 | 🌘 | Implémentation d'interface ServerCodec potentiellement incorrecte |
| string-to-int-signedness-cast | 🛝🔗 | 🟧 | 🌘 | Sous-dépassements d'entiers |
| sync-mutex-value-copied | 🛝🔗 | 🟩 | 🌘 | Copie de sync.Mutex via des récepteurs de valeur |
| unmarshal-tag-is-dash | 🛝🔗 | 🟧 | 🌘 | |
| unmarshal-tag-is-omitempty | 🛝🔗 | 🟩 | 🌘 | |
| unsafe-dll-loading | 🛝🔗 | 🟥 | 🌘 | Utilisation d'une fonction vulnérable aux attaques de détournement de DLL |
| waitgroup-add-called-inside-goroutine | 🛝🔗 | 🟧 | 🌗 | Appels à sync.WaitGroup.Add à l'intérieur de goroutines anonymes |
| waitgroup-wait-inside-loop | 🛝🔗 | 🟧 | 🌗 | Appels à sync.WaitGroup.Wait à l'intérieur d'une boucle |