
semgrep v1.173.0
Analyse statique légère pour de nombreux langages. Trouvez des variantes de bogues avec des motifs qui ressemblent à du code source.
Analyse de code à une vitesse ludicrous.
Semgrep est un outil d'analyse statique rapide, open-source, qui recherche du code, trouve des bugs et applique des garde-fous de sécurité et des normes de codage. Semgrep prend en charge 30+ langages et peut s'exécuter dans un IDE, comme vérification pre-commit, et dans le cadre de workflows CI/CD.
Semgrep est un grep sémantique pour le code. Alors que l'exécution de grep "2" ne correspondrait qu'à la chaîne exacte 2, Semgrep correspondrait à x = 1; y = x + 1 lors de la recherche de 2. Les règles Semgrep ressemblent au code que vous écrivez déjà ; pas d'arbres syntaxiques abstraits, de lutte contre les regex ou de DSLs douloureux.
Notez que dans les contextes de sécurité, Semgrep Community Edition manquera de nombreux vrais positifs car il ne peut analyser le code qu'à l'intérieur des limites d'une seule fonction ou d'un seul fichier. Si vous souhaitez utiliser Semgrep à des fins de sécurité (SAST, SCA ou analyse des secrets), la plateforme Semgrep AppSec est fortement recommandée car elle ajoute les capacités critiques suivantes :
- Des capacités d'analyse de base améliorées (inter-fichier, inter-fonction, atteignabilité du flux de données) qui réduisent considérablement les faux positifs de 25 % et augmentent les vrais positifs détectés de 250 %
- Post-traitement contextuel des résultats avec Semgrep Assistant (IA) pour réduire davantage le bruit d'environ ~20 %. De plus, Assistant enrichit les résultats avec des conseils de correction personnalisés, étape par étape, que les humains jugent exploitables dans >80 % des cas.
- Politiques personnalisables et intégration transparente dans les flux de travail des développeurs, donnant aux équipes de sécurité un contrôle granulaire sur où, quand et comment les différents résultats sont présentés aux développeurs (IDE, commentaire PR, etc.)
La plateforme Semgrep AppSec fonctionne immédiatement avec plus de 20 000 règles propriétaires couvrant SAST, SCA et les secrets. Les règles Pro sont écrites et maintenues par l'équipe de recherche en sécurité de Semgrep et sont très précises, ce qui signifie que les équipes AppSec peuvent se sentir en confiance pour apporter les résultats directement aux développeurs sans les ralentir.
Semgrep analyse le code localement sur votre ordinateur ou dans votre environnement de build : par défaut, le code n'est jamais téléchargé. Commencer →.
Prise en charge des langages
Semgrep Code prend en charge 30+ langages, notamment :
Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TypeScript · TSX · YAML · XML · Générique (ERB, Jinja, etc.)
Semgrep Supply Chain prend en charge 12 langages sur 15 gestionnaires de paquets, notamment :
C# (NuGet) · Dart (Pub) · Go (modules Go, go mod) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Composer) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Swift (SwiftPM)
Pour plus d'informations, consultez Langages pris en charge.
Commencer 🚀
Pour les nouveaux utilisateurs, nous recommandons de commencer par la plateforme Semgrep AppSec car elle offre une interface visuelle, un projet de démonstration, des workflows de tri et d'exploration des résultats, et rend la configuration dans CI/CD rapide. Les analyses restent locales et le code n'est pas téléchargé. Vous pouvez également commencer par la CLI et naviguer dans la sortie du terminal pour exécuter des recherches ponctuelles.
Option 1 : Commencer depuis la plateforme Semgrep AppSec (Recommandé)
-
Inscrivez-vous sur semgrep.dev
-
Explorez les résultats de démonstration pour apprendre comment fonctionne Semgrep
-
Analysez votre projet en naviguant vers
Projects > Scan New Project > Run scan in CI -
Sélectionnez votre système de contrôle de version et suivez les étapes d'intégration pour ajouter votre projet. Après cette configuration, Semgrep analysera votre projet après chaque pull request.
-
[Facultatif] Si vous souhaitez exécuter Semgrep localement, suivez les étapes dans la section CLI.
Remarques :
En cas de problème, demandez de l'aide dans le Slack de Semgrep.
Option 2 : Commencer depuis la CLI
-
Installez la CLI Semgrep
# Pour macOS $ brew install semgrep # Pour Ubuntu/WSL/Linux/macOS $ python3 -m pip install semgrep # Pour essayer Semgrep sans installation via Docker $ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login $ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci -
Exécutez
semgrep loginpour créer votre compte et vous connecter à Semgrep. Cette étape est facultative, mais la connexion à Semgrep vous donne accès à :- Semgrep Supply Chain : Un analyseur de dépendances qui détecte les vulnérabilités atteignables dans les bibliothèques tierces
- Règles Pro de Semgrep Code : Plus de 600 règles de haute confiance écrites par l'équipe de recherche en sécurité de Semgrep
- Moteur Pro de Semgrep Code : Un moteur d'analyse de code avancé, conçu pour détecter les vulnérabilités complexes et réduire les faux positifs
-
Allez dans le répertoire racine de votre application et exécutez
semgrep ci. Cela analysera votre projet pour vérifier les vulnérabilités dans votre code source et ses dépendances. -
Essayez d'écrire votre propre requête de manière interactive avec
-e. Par exemple, une vérification pour Python == où les côtés gauche et droit sont identiques (potentiellement un bug) :$ semgrep -e '$X == $X' --lang=py path/to/src
Écosystème Semgrep
L'écosystème Semgrep comprend les éléments suivants :
-
Semgrep Community Edition - Le moteur d'analyse de programme open-source au cœur de tout. Adapté aux cas d'utilisation ad hoc avec une tolérance élevée aux faux positifs - pensez aux consultants, auditeurs de sécurité ou pentesteurs.
-
Plateforme Semgrep AppSec - Orchestrez et passez à l'échelle facilement l'analyse SAST, SCA et des secrets dans une organisation, sans risque de submerger les développeurs. Personnalisez les résultats que les développeurs voient, où ils les voient, et intégrez-vous avec des fournisseurs CI comme GitHub, GitLab, CircleCI, etc. Comprend des niveaux gratuits et payants.
-
Semgrep Code (SAST) - Faites de réels progrès sur votre backlog de vulnérabilités avec SAST qui minimise le bruit et permet aux développeurs de corriger rapidement les problèmes par eux-mêmes, même sans connaissances en sécurité. Des garde-fous de sécurité faciles à déployer et des conseils de correction personnalisés, étape par étape, font que les développeurs corrigent réellement les problèmes car ils ne se sentent pas ralentis.
-
Semgrep Supply Chain (SSC) - Un analyseur de dépendances à fort signal qui détecte les vulnérabilités atteignables dans les bibliothèques et fonctions open-source tierces.
-
Semgrep Secrets (Analyse des secrets) - Détection de secrets qui utilise l'analyse sémantique, une analyse d'entropie améliorée et la validation pour faire remonter avec précision les informations d'identification sensibles dans le flux de travail du développeur.
-
Semgrep Assistant (IA) - Assistant est un ingénieur AppSec alimenté par l'IA qui aide les développeurs et les équipes AppSec à prioriser, trier et corriger les résultats Semgrep à grande échelle. Les humains sont d'accord avec les décisions de tri automatique d'Assistant 97 % du temps et jugent les conseils de correction générés utiles 80 % du temps. Pour un aperçu du fonctionnement d'Assistant, lisez cet aperçu.
-
-
Serveur MCP Semgrep - Un serveur Model Context Protocol (MCP) qui permet aux assistants de codage IA d'exécuter des analyses Semgrep directement. S'intègre avec Cursor, VS Code, Windsurf, Claude Desktop, etc. Exécutez
semgrep mcppour le démarrer localement.- Hooks - Déclenchez automatiquement les analyses Semgrep pendant que vous codez.
- Compétences / Invites - Les invites MCP intégrées comme
write_custom_semgrep_ruleaident les assistants IA à écrire des règles Semgrep précises. - Plugin Claude Code - Disponible sur la marketplace officielle et via le dépôt semgrep/mcp-marketplace :
/plugin marketplace add semgrep/mcp-marketplace - Plugin Cursor - Disponible sur la marketplace officielle et via le dépôt semgrep/cursor-plugin.
Ressources supplémentaires :
- Semgrep Playground - Un outil interactif en ligne pour écrire et partager des règles.
- Semgrep Registry - Plus de 2 000 règles communautaires couvrant la sécurité, la correction et les vulnérabilités de dépendances.
Rejoignez les centaines de milliers d'autres développeurs et ingénieurs sécurité qui utilisent déjà Semgrep dans des entreprises comme GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake et Trail of Bits.
Semgrep est développé et supporté commercialement par Semgrep, Inc., une société de sécurité logicielle.
Règles Semgrep
Les règles Semgrep ressemblent au code que vous écrivez déjà ; pas d'arbres syntaxiques abstraits, de lutte contre les regex ou de DSLs douloureux. Voici une règle rapide pour trouver les instructions Python print().
Exécutez-la en ligne dans le Playground de Semgrep en cliquant ici.
Exemples
Consultez Docs > Exemples de règles pour des cas d'utilisation et des idées.
| Cas d'utilisation | Règle Semgrep |
|---|---|
| Interdire les API dangereuses | Empêcher l'utilisation de exec |
| Rechercher les routes et l'authentification | Extraire les routes Spring |
| Appliquer l'utilisation de valeurs par défaut sécurisées | Définir les cookies Flask de manière sécurisée |
| Données contaminées dans les puits | Flux de données ExpressJS vers sandbox.run |
| Appliquer les bonnes pratiques du projet | Utiliser assertEqual pour les vérifications ==, Toujours vérifier les appels subprocess |
| Codifier les connaissances spécifiques au projet | Vérifier les transactions avant de les effectuer |
| Auditer les points chauds de sécurité | Trouver XSS dans Apache Airflow, Informations d'identification codées en dur |
| Auditer les fichiers de configuration | Trouver les utilisations d'ARN S3 |
| Migrer depuis des API obsolètes | DES est obsolète, API Flask obsolètes, API Bokeh obsolètes |
| Appliquer des correctifs automatiques | Utiliser listenAndServeTLS |
Extensions
Visitez Docs > Extensions pour en savoir plus sur l'utilisation de Semgrep dans votre éditeur ou en pre-commit. Intégré à CI et configuré pour analyser les pull requests, Semgrep ne signalera que les problèmes introduits par cette pull request ; cela vous permet de commencer à utiliser Semgrep sans corriger ou ignorer les problèmes préexistants !
Documentation
Parcourez la documentation complète de Semgrep sur le site web. Si vous débutez avec Semgrep, consultez Docs > Commencer ou le tutoriel interactif.
Métriques
L'utilisation d'une configuration distante depuis le Registry (comme --config=p/ci) signale des métriques de règles pseudonymes à semgrep.dev.
Lors de l'utilisation de configurations depuis des fichiers locaux (comme --config=xyz.yml), les métriques ne sont envoyées que lorsque l'utilisateur est connecté.
Pour désactiver les métriques des règles du Registry, utilisez --metrics=off.
La politique de confidentialité de Semgrep décrit les principes qui guident les décisions de collecte de données et la répartition des données qui sont et ne sont pas collectées lorsque les métriques sont activées.
Plus
- Foire aux questions (FAQ)
- Contribuer
- Instructions de construction pour les développeurs
- Poser des questions dans le Slack de la communauté Semgrep
- Référence CLI et codes de sortie
- Chaîne YouTube Semgrep
- Licence (LGPL-2.1)
- Licence Semgrep
Mise à jourPour mettre à jour, exécutez la commande ci-dessous associée à la manière dont vous avez installé Semgrep :```sh
Using Homebrew
$ brew upgrade semgrep
Using pipx
$ pipx upgrade semgrep
Using uv tool command
$ uv tool upgrade semgrep
Using Docker
$ docker pull semgrep/semgrep:latest
