Semgrep

Semgrep, Inc.

Análise estática baseada em padrões — regras que se parecem com o código que casam.

Aplicações e Cadeia de Suprimentos Freemium CLI Praticado em Lab Cross-platform

Cyber Kill Chain e Ciclo do Defensor

Atacante — Kill Chain
1 Reconhecimento
2 Armamento
3 Entrega
4 Exploração
5 Instalação
6 Comando e Controle
7 Ações sobre Objetivos
Defensor — Ciclo de RI
8 Preparação
9 Detecção e Análise
10 Contenção, Erradicação e Recuperação
11 Atividade Pós-Incidente

Descrição

O Semgrep casa padrões contra a árvore sintática em vez do texto bruto, então a regra se parece com o código que ela procura. É isso que torna prático escrever uma regra específica do projeto em minutos, sem aprender uma linguagem de consulta.

É a ferramenta em que a série mais se apoia. O achado recorrente entre os posts é que os scanners padrão perdem o mau uso específico de framework — mark_safe() sobre uma variável, fields = '__all__' em um ModelForm, .raw() com f-string — e que uma regra de cinco linhas do Semgrep pega todos eles, em CI, a cada commit.

Casos de uso

  • Regras próprias para mau uso de framework que os scanners genéricos perdem
  • Gate de CI que quebra o build diante de um novo padrão perigoso
  • Codificar um achado de revisão para que ele não volte

Exemplo

semgrep --config p/django --config ./semgrep-rules/ --error .

Posts relacionados