
semgrep v1.171.0
Analisi statica leggera per molti linguaggi. Trova varianti di bug con pattern che assomigliano a codice sorgente.
Analisi del codice a velocità folle.
Semgrep è uno strumento di analisi statica veloce, open-source, che cerca codice, trova bug e impone guardrail di sicurezza e standard di codifica. Semgrep supporta oltre 30 linguaggi e può essere eseguito in un IDE, come controllo pre-commit e come parte dei flussi di lavoro CI/CD.
Semgrep è un grep semantico per il codice. Mentre eseguire grep "2" corrisponderebbe solo alla stringa esatta 2, Semgrep corrisponderebbe a x = 1; y = x + 1 quando cerca 2. Le regole di Semgrep assomigliano al codice che già scrivi; niente alberi sintattici astratti, lotte con le regex o DSL dolorosi.
Tieni presente che nei contesti di sicurezza, Semgrep Community Edition perderà molti veri positivi poiché può analizzare il codice solo all'interno dei confini di una singola funzione o file. Se desideri utilizzare Semgrep per scopi di sicurezza (SAST, SCA o scansione dei segreti), la piattaforma Semgrep AppSec Platform è fortemente consigliata poiché aggiunge le seguenti capacità critiche:
- Capacità di analisi core migliorate (cross-file, cross-funzione, raggiungibilità del flusso dati) che riducono notevolmente i falsi positivi del 25% e aumentano i veri positivi rilevati del 250%
- Post-elaborazione contestuale dei risultati con Semgrep Assistant (AI) per ridurre ulteriormente il rumore di ~20%. Inoltre, Assistant arricchisce i risultati con una guida alla risoluzione personalizzata e passo-passo che gli umani trovano attuabile >80% delle volte.
- Politiche personalizzabili e integrazione senza soluzione di continuità nei flussi di lavoro degli sviluppatori, offrendo ai team di sicurezza un controllo granulare su dove, quando e come i diversi risultati vengono presentati agli sviluppatori (IDE, commento PR, ecc.)
La piattaforma Semgrep AppSec Platform funziona out-of-the-box con oltre 20.000 regole proprietarie in SAST, SCA e segreti. Le regole Pro sono scritte e mantenute dal team di ricerca sulla sicurezza di Semgrep e sono altamente accurate, il che significa che i team AppSec possono sentirsi sicuri di portare i risultati direttamente agli sviluppatori senza rallentarli.
Semgrep analizza il codice localmente sul tuo computer o nel tuo ambiente di build: per impostazione predefinita, il codice non viene mai caricato. Inizia subito →.
Supporto linguistico
Semgrep Code supporta oltre 30 linguaggi, tra cui:
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 · Generic (ERB, Jinja, etc.)
Semgrep Supply Chain supporta 12 linguaggi su 15 gestori di pacchetti, tra cui:
C# (NuGet) · Dart (Pub) · Go (Go modules, 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)
Per maggiori informazioni, consulta Linguaggi supportati.
Per iniziare 🚀
Per i nuovi utenti, consigliamo di iniziare con la piattaforma Semgrep AppSec Platform perché fornisce un'interfaccia visiva, un progetto demo, flussi di lavoro per il triage e l'esplorazione dei risultati e rende la configurazione in CI/CD veloce. Le scansioni sono ancora locali e il codice non viene caricato. In alternativa, puoi anche iniziare con la CLI e navigare nell'output del terminale per eseguire ricerche una tantum.
Opzione 1: Iniziare dalla piattaforma Semgrep AppSec Platform (Consigliato)
-
Registrati su semgrep.dev
-
Esplora i risultati demo per imparare come funziona Semgrep
-
Scansiona il tuo progetto navigando su
Projects > Scan New Project > Run scan in CI -
Seleziona il tuo sistema di controllo versione e segui i passaggi di onboarding per aggiungere il tuo progetto. Dopo questa configurazione, Semgrep scansionerà il tuo progetto dopo ogni pull request.
-
[Opzionale] Se desideri eseguire Semgrep localmente, segui i passaggi nella sezione CLI.
Note:
In caso di problemi, chiedi aiuto nello Slack di Semgrep.
Opzione 2: Iniziare dalla CLI
-
Installa la CLI di Semgrep
# Per macOS $ brew install semgrep # Per Ubuntu/WSL/Linux/macOS $ python3 -m pip install semgrep # Per provare Semgrep senza installazione, esegui tramite 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 -
Esegui
semgrep loginper creare il tuo account e accedere a Semgrep. Questo passaggio è opzionale, ma accedere a Semgrep ti dà accesso a:- Semgrep Supply Chain: Uno scanner di dipendenze che rileva vulnerabilità raggiungibili in librerie di terze parti
- Regole Pro di Semgrep Code: Oltre 600 regole ad alta confidenza scritte dal team di ricerca sulla sicurezza di Semgrep
- Motore Pro di Semgrep Code: Un motore di analisi del codice avanzato, progettato per rilevare vulnerabilità complesse e ridurre i falsi positivi
-
Vai alla directory principale della tua app ed esegui
semgrep ci. Questo scansionerà il tuo progetto per verificare la presenza di vulnerabilità nel codice sorgente e nelle sue dipendenze. -
Prova a scrivere la tua query in modo interattivo con
-e. Ad esempio, un controllo per Python == dove i lati sinistro e destro sono uguali (potenzialmente un bug):$ semgrep -e '$X == $X' --lang=py path/to/src
Ecosistema Semgrep
L'ecosistema Semgrep include quanto segue:
-
Semgrep Community Edition - Il motore di analisi dei programmi open-source al centro di tutto. Adatto a casi d'uso ad hoc con un'elevata tolleranza per i falsi positivi: pensa a consulenti, revisori della sicurezza o pentester.
-
Semgrep AppSec Platform - Orchestra e scala facilmente SAST, SCA e scansione dei segreti in un'organizzazione, senza il rischio di sovraccaricare gli sviluppatori. Personalizza quali risultati vedono gli sviluppatori, dove li vedono e integrato con provider CI come GitHub, GitLab, CircleCI e altro. Include sia livelli gratuiti che a pagamento.
-
Semgrep Code (SAST) - Fai veri progressi sul tuo arretrato di vulnerabilità con SAST che minimizza il rumore e consente agli sviluppatori di risolvere rapidamente i problemi da soli, anche senza conoscenze di sicurezza. Facile da implementare guardrail di sicurezza e una guida alla risoluzione personalizzata e passo-passo significa che gli sviluppatori risolvono effettivamente i problemi poiché non si sentono rallentati.
-
Semgrep Supply Chain (SSC) - Uno scanner di dipendenze ad alto segnale che rileva vulnerabilità raggiungibili in librerie e funzioni open-source di terze parti.
-
Semgrep Secrets (Scansione dei segreti) - Rilevamento di segreti che utilizza analisi semantica, analisi dell'entropia migliorata e validazione per far emergere con precisione credenziali sensibili nel flusso di lavoro dello sviluppatore.
-
Semgrep Assistant (AI) - Assistant è un ingegnere AppSec basato sull'AI che aiuta sia gli sviluppatori che i team AppSec a prioritizzare, triage e risolvere i risultati di Semgrep su larga scala. Gli umani concordano con le decisioni di auto-triage di Assistant il 97% delle volte e valutano la guida alla risoluzione generata come utile l'80% delle volte. Per una panoramica su come funziona Assistant, leggi questa panoramica.
-
-
Semgrep MCP Server - Un server Model Context Protocol (MCP) che consente agli assistenti di codifica AI di eseguire scansioni Semgrep direttamente. Si integra con Cursor, VS Code, Windsurf, Claude Desktop e altro. Esegui
semgrep mcpper avviarlo localmente.- Hooks - Attiva automaticamente le scansioni Semgrep mentre scrivi codice.
- Skills / Prompts - Prompt MCP integrati come
write_custom_semgrep_ruleaiutano gli assistenti AI a scrivere regole Semgrep accurate. - Plugin Claude Code - Disponibile sul marketplace ufficiale e tramite il repository semgrep/mcp-marketplace:
/plugin marketplace add semgrep/mcp-marketplace - Plugin Cursor - Disponibile sul marketplace ufficiale e tramite il repository semgrep/cursor-plugin.
Risorse aggiuntive:
- Semgrep Playground - Uno strumento interattivo online per scrivere e condividere regole.
- Semgrep Registry - Oltre 2.000 regole guidate dalla comunità che coprono vulnerabilità di sicurezza, correttezza e dipendenze.
Unisciti a centinaia di migliaia di altri sviluppatori e ingegneri della sicurezza che già utilizzano Semgrep in aziende come GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake e Trail of Bits.
Semgrep è sviluppato e supportato commercialmente da Semgrep, Inc., una società di sicurezza software.
Regole Semgrep
Le regole Semgrep assomigliano al codice che già scrivi; niente alberi sintattici astratti, lotte con le regex o DSL dolorosi. Ecco una regola rapida per trovare istruzioni print() in Python.
Eseguila online nel Playground di Semgrep cliccando qui.
Esempi
Visita Documentazione > Esempi di regole per casi d'uso e idee.
| Caso d'uso | Regola Semgrep |
|---|---|
| Vietare API pericolose | Impedisci l'uso di exec |
| Cercare route e autenticazione | Estrai route Spring |
| Imporre l'uso di default sicuri | Imposta cookie Flask in modo sicuro |
| Dati contaminati che fluiscono in sink | Flusso dati ExpressJS in sandbox.run |
| Imporre buone pratiche di progetto | Usa assertEqual per controlli ==, Controlla sempre le chiamate a subprocess |
| Codificare conoscenze specifiche del progetto | Verifica le transazioni prima di effettuarle |
| Verificare i punti critici di sicurezza | Trovare XSS in Apache Airflow, Credenziali hardcoded |
| Verificare file di configurazione | Trova usi di ARN S3 |
| Migrare da API deprecate | DES è deprecato, API Flask deprecate, API Bokeh deprecate |
| Applicare correzioni automatiche | Usa listenAndServeTLS |
Estensioni
Visita Documentazione > Estensioni per sapere come utilizzare Semgrep nel tuo editor o pre-commit. Quando integrato in CI e configurato per scansionare le pull request, Semgrep segnalerà solo i problemi introdotti da quella pull request; questo ti consente di iniziare a usare Semgrep senza dover correggere o ignorare i problemi preesistenti!
Documentazione
Sfoglia la documentazione completa di Semgrep sul sito web. Se sei nuovo di Semgrep, dai un'occhiata a Documentazione > Per iniziare o al tutorial interattivo.
Metriche
L'uso di configurazioni remote dal Registry (come --config=p/ci) segnala metriche di regole pseudonime a semgrep.dev.
Quando si utilizzano configurazioni da file locali (come --config=xyz.yml), le metriche vengono inviate solo quando l'utente ha effettuato l'accesso.
Per disabilitare le metriche delle regole del Registry, utilizza --metrics=off.
La politica sulla privacy di Semgrep descrive i principi che guidano le decisioni sulla raccolta dei dati e la suddivisione dei dati che vengono e non vengono raccolti quando le metriche sono abilitate.
Altro
- Domande frequenti (FAQ)
- Contribuire
- Istruzioni di build per sviluppatori
- Fai domande nello Slack della community di Semgrep
- Riferimento CLI e codici di uscita
- Canale YouTube di Semgrep
- Licenza (LGPL-2.1)
- Licensing Semgrep
AggiornamentoPer aggiornare, esegui il comando qui sotto associato a come hai installato 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
