Semgrep é uma ferramenta de análise estática rápida e de código aberto que pesquisa código, encontra bugs e impõe proteções seguras e padrões de codificação. Semgrep oferece suporte a mais de 30 idiomas e pode ser executado em um IDE, como uma verificação de pré-confirmação e como parte de fluxos de trabalho de CI/CD.
Semgrep é um grep semântico para código. Embora a execução de grep "2"
correspondesse apenas à string exata 2 , Semgrep corresponderia x = 1; y = x + 1
ao procurar por 2 . As regras do Semgrep se parecem com o código que você já escreveu; sem árvores de sintaxe abstratas, luta livre de regex ou DSLs dolorosas.
Observe que em contextos de segurança, o Semgrep OSS perderá muitos pontos positivos verdadeiros, pois só pode analisar código dentro dos limites de uma única função ou arquivo. Se você deseja usar o Semgrep para fins de segurança ( SAST , SCA ou verificação de segredos ), a plataforma Semgrep AppSec é altamente recomendada, pois adiciona os seguintes recursos críticos:
A plataforma Semgrep AppSec funciona imediatamente com mais de 20.000 regras proprietárias em SAST, SCA e segredos. As regras Pro são escritas e mantidas pela equipe de pesquisa de segurança da Semgrep e são altamente precisas, o que significa que as equipes AppSec podem se sentir confiantes em trazer as descobertas diretamente aos desenvolvedores, sem atrasá-los.
O Semgrep analisa o código localmente no seu computador ou no seu ambiente de construção: por padrão, o código nunca é carregado . Comece →.
O Código Semgrep oferece suporte a mais de 30 idiomas, incluindo:
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 · Ferrugem · Scala · Esquema · Solidez · Swift · Terraform · TypeScript · TSX · YAML · XML · Genérico (ERB, Jinja, etc.)
Semgrep Supply Chain oferece suporte a 12 idiomas em 15 gerenciadores de pacotes, incluindo:
C# (NuGet) · Dart (Pub) · Go (módulos Go, go mod
) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Compositor) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Swift (SwiftPM)
Para obter mais informações, consulte Idiomas suportados.
Para novos usuários, recomendamos começar com a plataforma Semgrep AppSec porque ela fornece uma interface visual, um projeto de demonstração, triagem de resultados e fluxos de trabalho de exploração e agiliza a configuração em CI/CD. As verificações ainda são locais e o código não é carregado. Como alternativa, você também pode começar com a CLI e navegar na saída do terminal para executar pesquisas únicas.
Registre-se em semgrep.dev
Explore as descobertas da demonstração para saber como o Semgrep funciona
Analise seu projeto navegando até Projects > Scan New Project > Run scan in CI
Selecione seu sistema de controle de versão e siga as etapas de integração para adicionar seu projeto. Após esta configuração, o Semgrep irá escanear seu projeto após cada pull request.
[Opcional] Se desejar executar o Semgrep localmente, siga as etapas na seção CLI.
Se houver algum problema, peça ajuda no 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
para criar sua conta e fazer login no Semgrep.O login no Semgrep dá acesso a:
Vá para o diretório raiz do seu aplicativo e execute semgrep ci
. Isso fará a varredura em seu projeto para verificar vulnerabilidades em seu código-fonte e suas dependências.
Tente escrever sua própria consulta interativamente com -e
. Por exemplo, uma verificação para Python == onde os lados esquerdo e direito são iguais (potencialmente um bug): $ semgrep -e '$X == $X' --lang=py path/to/src
O ecossistema Semgrep inclui o seguinte:
Semgrep OSS – O mecanismo de análise de programas de código aberto no centro de tudo. Adequado para casos de uso ad hoc com alta tolerância a falsos positivos - pense em consultores, auditores de segurança ou pentesters.
Plataforma Semgrep AppSec - orquestre e dimensione facilmente a varredura SAST, SCA e Secrets em uma organização, sem risco de sobrecarregar os desenvolvedores. Personalize quais descobertas os desenvolvedores veem, onde as veem e integre-as a provedores de CI como GitHub, GitLab, CircleCI e muito mais. Inclui níveis gratuitos e pagos.
Código Semgrep (SAST) – Faça progresso real em seu backlog de vulnerabilidades com SAST, que minimiza o ruído e capacita os desenvolvedores a corrigir rapidamente os problemas por conta própria, mesmo que não tenham conhecimento de segurança. Proteções seguras fáceis de implantar e orientações de correção passo a passo personalizadas significam que os desenvolvedores realmente corrigem os problemas, pois não se sentem lentos.
Semgrep Supply Chain (SSC) – Um scanner de alta dependência de sinal que detecta vulnerabilidades acessíveis em bibliotecas e funções de terceiros de código aberto.
Semgrep Secrets (verificação de segredos) – Detecção de segredos que usa análise semântica, análise de entropia aprimorada e validação para revelar com precisão credenciais confidenciais no fluxo de trabalho do desenvolvedor.
Semgrep Assistant (AI) - Assistant é um engenheiro AppSec baseado em IA que ajuda os desenvolvedores e as equipes AppSec a priorizar, fazer a triagem e corrigir as descobertas do Semgrep em escala. Os humanos concordam com as decisões de triagem automática do Assistente 97% das vezes e classificam as orientações de correção geradas como úteis em 80% das vezes. Para uma visão geral de como o Assistant funciona, leia esta visão geral.
Recursos adicionais:
Junte-se a centenas de milhares de outros desenvolvedores e engenheiros de segurança que já usam Semgrep em empresas como GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake e Trail of Bits.
O Semgrep é desenvolvido e suportado comercialmente pela Semgrep, Inc., uma empresa de segurança de software.
As regras do Semgrep se parecem com o código que você já escreveu; sem árvores de sintaxe abstratas, luta livre de regex ou DSLs dolorosas. Aqui está uma regra rápida para encontrar instruções print()
do Python.
Execute-o online no Playground do Semgrep clicando aqui.
Visite Documentos > Exemplos de regras para casos de uso e ideias.
Caso de uso | Regra Semgrep |
---|---|
Banir APIs perigosas | Impedir o uso de exec |
Rotas de pesquisa e autenticação | Extrair rotas Spring |
Aplicar o uso de padrões seguros | Defina cookies Flask com segurança |
Dados contaminados fluindo para coletores | Fluxo de dados ExpressJS em sandbox.run |
Aplicar as melhores práticas do projeto | Use assertEqual para == verificações, sempre verifique chamadas de subprocesso |
Codifique o conhecimento específico do projeto | Verifique as transações antes de realizá-las |
Auditar pontos de acesso de segurança | Encontrando XSS no Apache Airflow, credenciais codificadas |
Arquivos de configuração de auditoria | Encontre usos do S3 ARN |
Migrar de APIs obsoletas | DES está obsoleto, APIs Flask obsoletas, APIs Bokeh obsoletas |
Aplicar correções automáticas | Usar listenAndServeTLS |
Visite Documentos > Extensões para aprender como usar o Semgrep em seu editor ou pré-confirmar. Quando integrado ao CI e configurado para verificar solicitações pull, o Semgrep relatará apenas problemas introduzidos por essa solicitação pull; isso permite que você comece a usar o Semgrep sem corrigir ou ignorar problemas pré-existentes!
Navegue pela documentação completa do Semgrep no site. Se você é novo no Semgrep, confira Documentos > Primeiros passos ou o tutorial interativo.
Usar a configuração remota do Registro (como --config=p/ci
) relata métricas de regras pseudônimas para semgrep.dev.
Usar configurações de arquivos locais (como --config=xyz.yml
) não habilita métricas.
Para desabilitar as métricas das regras do Registro, use --metrics=off
.
A política de privacidade da Semgrep descreve os princípios que orientam as decisões de coleta de dados e o detalhamento dos dados que são e não são coletados quando as métricas estão habilitadas.
Para atualizar, execute o comando abaixo associado à forma como você instalou o Semgrep:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest