
Uma coleção das minhas regras Semgrep para facilitar a pesquisa de vulnerabilidades.
"A superfície de ataque é a vulnerabilidade. Encontrar um bug lá é apenas um detalhe."
-- Mark Dowd
"Alguns detalhes são mais importantes do que outros."
-- Fedor G. Pikus
Uma coleção das minhas regras Semgrep para facilitar a pesquisa de vulnerabilidades.
# high priority scan (quick wins)
semgrep --severity ERROR --config "p/0xdea"
# high and medium priority scan (recommended)
semgrep --severity ERROR --severity WARNING --config "p/0xdea"
# full scan (might include marginal findings and more false positives)
semgrep --config "p/0xdea"
Alternativamente, você pode clonar este repositório GitHub localmente e executar:
# full scan
semgrep --config semgrep-rules/rules /path/to/source
# specific rule scan
semgrep --config semgrep-rules/rules/c/command-injection.yaml /path/to/source
[!TIP] Especifique a opção
--no-git-ignorepara examinar arquivos independentemente do status de rastreamento git ou das regras de.gitignore.
Para uma experiência mais simplificada, recomendo salvar a saída da verificação do Semgrep no formato SARIF e usar o SARIF Explorer no VS code:
semgrep --sarif --sarif-output=/path/to/source/SEMGREP.sarif --config semgrep-rules/rules /path/to/source
code /path/to/source # then open the SEMGREP.sarif file in VS code with SARIF Explorer
Veja também o exemplo de saída SARIF incluído.
Testado com Semgrep CLI 1.169.0.
Conjunto de regras C (e às vezes C++) testado em batalha.
gets.strcpy, stpcpy, strcat.sprintf e vsprintf.scanf.strncat.strncpy, , e variantes.strlen para short pode ser perigoso.alloca.free.free duplo potencial.free em memória que não está no heap.malloc, calloc, realloc, etc.putenv com uma variável alocada na pilha.system ou popen.access, stat, lstat, etc.mktemp, tmpnam, tempnam.signal.setuid e seteuid.memset.rand e srand.scanf.atoi, atol, atof.Essas regras são consideradas potencialmente ruidosas demais e inadequadas para uso geral.
--time contra código do mundo real para identificar regras lentas que precisam de otimização.memcpysnprintfsizeof em um ponteiro em vez de seu alvo.strncpy e stpncpy.snprintf e vsnprintf.strlcpy e strlcat.