Semgrep est un outil d'analyse statique rapide et open source qui recherche le code, trouve les bogues et applique des garde-fous et des normes de codage sécurisés. Semgrep prend en charge plus de 30 langues et peut s'exécuter dans un IDE, en tant que vérification préalable à la validation et dans le cadre des flux de travail CI/CD.
Semgrep est un grep sémantique pour le code. Alors que l'exécution 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 de syntaxe abstraite, de lutte contre les regex ou de DSL douloureux.
Notez que dans les contextes de sécurité, Semgrep OSS manquera de nombreux vrais points positifs car il ne peut analyser le code que dans les limites d'une seule fonction ou d'un seul fichier. Si vous souhaitez utiliser Semgrep à des fins de sécurité (analyse SAST , SCA ou secrets ), la plateforme Semgrep AppSec est fortement recommandée car elle ajoute les fonctionnalités critiques suivantes :
La plateforme Semgrep AppSec fonctionne immédiatement avec plus de 20 000 règles propriétaires sur SAST, SCA et secrets. Les règles professionnelles sont écrites et maintenues par l'équipe de recherche en sécurité Semgrep et sont très précises, ce qui signifie que les équipes AppSec peuvent se sentir en confiance pour transmettre 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é . Commencez →.
Semgrep Code prend en charge plus de 30 langues, 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 langues à travers 15 gestionnaires de packages, 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) · Rapide (SwiftPM)
Pour plus d’informations, consultez Langues prises en charge.
Pour les nouveaux utilisateurs, nous recommandons de commencer par la plateforme Semgrep AppSec car elle fournit une interface visuelle, un projet de démonstration, des workflows de tri et d'exploration des résultats et accélère la configuration dans CI/CD. Les analyses sont toujours locales et le code n'est pas téléchargé. Alternativement, vous pouvez également commencer avec la CLI et parcourir la sortie du terminal pour exécuter des recherches ponctuelles.
Inscrivez-vous sur semgrep.dev
Explorez les résultats de la démonstration pour découvrir comment fonctionne Semgrep
Analysez votre projet en accédant à 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 de la section CLI.
En cas de problème, veuillez demander de l'aide dans Semgrep Slack.
# For macOS
$ brew install semgrep
# For Ubuntu/WSL/Linux/macOS
$ python3 -m pip install semgrep
# To try Semgrep without installation run 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
semgrep login
pour créer votre compte et vous connecter à Semgrep.En vous connectant à Semgrep, vous accédez à :
Accédez au répertoire racine de votre application et exécutez semgrep ci
. Cela analysera votre projet pour vérifier les vulnérabilités de votre code source et de ses dépendances.
Essayez d'écrire votre propre requête de manière interactive avec -e
. Par exemple, une vérification de Python == où les côtés gauche et droit sont identiques (potentiellement un bug) : $ semgrep -e '$X == $X' --lang=py path/to/src
L'écosystème Semgrep comprend les éléments suivants :
Semgrep OSS - Le moteur d'analyse de programmes open source au cœur de tout. Convient aux cas d'utilisation ad hoc avec une tolérance élevée aux faux positifs : pensez aux consultants, aux auditeurs de sécurité ou aux pentesters.
Plateforme Semgrep AppSec : orchestrez et faites évoluer facilement les analyses SAST, SCA et Secrets au sein d'une organisation, sans risquer de surcharger les développeurs. Personnalisez les résultats que les développeurs voient, où ils les voient, et intégrez-les à des fournisseurs de CI tels que GitHub, GitLab, CircleCI, etc. Comprend les niveaux gratuits et payants.
Semgrep Code (SAST) - Réalisez de réels progrès dans votre retard de vulnérabilité avec SAST qui minimise le bruit et permet aux développeurs de résoudre rapidement les problèmes par eux-mêmes, même s'ils n'ont aucune connaissance en sécurité. Des garde-fous sécurisés faciles à déployer et des conseils de remédiation personnalisés étape par étape permettent aux développeurs de résoudre réellement les problèmes puisqu'ils ne se sentent pas ralentis.
Semgrep Supply Chain (SSC) - Un scanner de dépendance au signal élevé qui détecte les vulnérabilités accessibles dans les bibliothèques et fonctions tierces open source.
Semgrep Secrets (analyse des secrets) - Détection de secrets qui utilise l'analyse sémantique, l'analyse d'entropie améliorée et la validation pour faire apparaître avec précision les informations d'identification sensibles dans le flux de travail du développeur.
Semgrep Assistant (AI) – Assistant est un ingénieur AppSec basé sur 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 de l’Assistant dans 97 % du temps et jugent les conseils de correction générés comme utiles dans 80 % du temps. Pour un aperçu du fonctionnement de l'Assistant, lisez cet aperçu.
Ressources supplémentaires :
Rejoignez des centaines de milliers d'autres développeurs et ingénieurs en 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 soutenu commercialement par Semgrep, Inc., une société de sécurité logicielle.
Les règles Semgrep ressemblent au code que vous écrivez déjà ; pas d'arbres de syntaxe abstraite, de lutte contre les regex ou de DSL douloureux. Voici une règle rapide pour trouver les instructions Python print()
.
Exécutez-le en ligne dans le Playground de Semgrep en cliquant ici.
Visitez 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 |
Itinéraires de recherche et authentification | Extraire les itinéraires de printemps |
Appliquer l'utilisation des paramètres par défaut sécurisés | Définir en toute sécurité les cookies Flask |
Des données corrompues circulant dans des récepteurs | Flux de données ExpressJS dans sandbox.run |
Appliquer les meilleures pratiques du projet | Utilisez assertEqual pour les vérifications ==, vérifiez toujours les appels de sous-processus |
Codifier les connaissances spécifiques au projet | Vérifier les transactions avant de les effectuer |
Auditer les points chauds de sécurité | Recherche de XSS dans Apache Airflow, informations d'identification codées en dur |
Fichiers de configuration d'audit | Rechercher les utilisations de S3 ARN |
Migrer à partir d'API obsolètes | DES est obsolète, API Flask obsolètes, API Bokeh obsolètes |
Appliquer des correctifs automatiques | Utiliser ListenAndServeTLS |
Visitez Docs > Extensions pour en savoir plus sur l'utilisation de Semgrep dans votre éditeur ou pré-valider. Lorsqu'il est intégré à CI et configuré pour analyser les demandes d'extraction, Semgrep ne signalera que les problèmes introduits par cette demande d'extraction ; cela vous permet de commencer à utiliser Semgrep sans résoudre ou ignorer les problèmes préexistants !
Parcourez la documentation complète de Semgrep sur le site Web. Si vous êtes nouveau sur Semgrep, consultez Docs > Mise en route ou le didacticiel interactif.
L'utilisation de la configuration à distance à partir du registre (comme --config=p/ci
) rapporte les métriques de règles pseudonymes à semgrep.dev.
L'utilisation de configurations à partir de fichiers locaux (comme --config=xyz.yml
) n'active pas les métriques.
Pour désactiver les métriques des règles de registre, 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.
Pour mettre à niveau, exécutez la commande ci-dessous associée à la façon dont vous avez installé Semgrep :
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest