Pular para o conteúdo

Guia

Ferramentas SAST comparadas: o que encontram e o que deixam passar

O que fazem as ferramentas SAST, como oito das mais usadas diferem em abordagem, linguagens e licença, e o que a análise estática não pega em código gerado por IA.

· 9 min de leitura · Pela equipe do vetkit

Um desenvolvedor empurra um scanner ao longo de um extenso rolo de código desenrolado, cujo feixe acende marcadores de alerta, enquanto um robô segura a ponta do rolo.Um desenvolvedor empurra um scanner ao longo de um extenso rolo de código desenrolado, cujo feixe acende marcadores de alerta, enquanto um robô segura a ponta do rolo.

O que é uma ferramenta SAST

Uma ferramenta SAST (static application security testing, ou teste estático de segurança de aplicações) lê o seu código-fonte sem executá-lo e reporta código que parece vulnerável: dados da requisição que chegam a uma query SQL, um comando de shell montado a partir de entrada do usuário, uma verificação de certificado desativada, um hash fraco usado para senhas. Como ela só precisa do código-fonte, pode rodar a cada commit, muito antes de a aplicação ir para produção.

O SAST é um entre vários tipos de teste de segurança. O SCA (software composition analysis, ou análise de composição de software) verifica as suas dependências em busca de vulnerabilidades conhecidas, o secret scanning procura credenciais commitadas e o DAST (teste dinâmico) sonda uma aplicação em execução. Uma ferramenta SAST não faz nenhuma dessas coisas, por isso a maioria das equipes a combina pelo menos com scan de dependências e de segredos.

Como as ferramentas SAST diferem

Quatro diferenças explicam a maior parte do que você vai notar ao testar duas ferramentas no mesmo código.

  • A profundidade da análise. O pattern matching encontra código parecido com um formato ruim conhecido. A análise de taint ou de fluxo de dados acompanha um valor desde onde ele entra (uma requisição) até onde é usado (uma query). Acompanhar valores entre funções e arquivos encontra mais problemas reais, e geralmente é aí que as edições comerciais se diferenciam das gratuitas.
  • Uma linguagem ou várias. Ferramentas de uma única linguagem conhecem bem o próprio ecossistema. Ferramentas multilinguagem dão um único relatório para uma base de código mista.
  • Onde ela roda. Algumas são um comando que você executa localmente ou no CI. Outras são plataformas hospedadas que se conectam ao seu controle de versão e adicionam dashboards, comentários em pull requests e políticas.
  • Se você pode escrever as suas próprias regras. Formatos de regra legíveis tornam viável codificar as convenções da sua equipe.

Oito ferramentas SAST lado a lado

Estas são ferramentas amplamente usadas, listadas em ordem alfabética dentro de cada grupo. A tabela registra o que a própria documentação de cada projeto diz; não é um ranking e não fizemos benchmarks entre elas.

Ferramentas SAST comparadas
FerramentaAbordagem, segundo a documentaçãoLinguagensLicençaSaída em SARIF
CodeQL (GitHub code scanning)Constrói um banco de dados a partir do código e executa queries semânticas sobre eleC/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift e workflows do GitHub ActionsCLI de uso gratuito em repositórios públicos; repositórios privados exigem uma licença do GitHub Code SecuritySim
Checkmarx One SASTConstrói um grafo de elementos de código e fluxos de dados e executa queries; suporta queries personalizadasMultilinguagem, incluindo Java, C#, C/C++, PHP, JavaScript/TypeScript, Python e GoComercialSim
OpengrepRegras de padrão com análise de taint; compatível com regras do SemgrepMais de 30 linguagensOpen source, LGPL 2.1Sim
SemgrepRegras de padrão que se parecem com o código que encontram. A Community Edition analisa dentro de uma única função ou arquivo; o Semgrep Code comercial adiciona análise entre arquivos e funçõesMais de 30 linguagensEngine open source, LGPL 2.1; a AppSec Platform é proprietáriaSim
Snyk CodeEngine de análise semântica com análise de fluxo de dados e de taintMultilinguagem, incluindo Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby e SwiftServiço hospedado comercial com plano gratuitoSim
SonarQubeRegras de qualidade de código e de segurança; a análise de taint para regras de injeção está disponível no SonarQube Server e no CloudMais de 40 linguagens e frameworks, considerando todas as ediçõesO Community Build é open source, LGPL 3.0; Server e Cloud são comerciaisImporta SARIF de outras ferramentas
BanditConstrói uma árvore sintática para cada arquivo e executa plugins sobre elaSomente PythonOpen source, Apache 2.0Sim, com um extra opcional
gosecRegras sobre a árvore sintática, analisadores baseados em SSA e análise de taintSomente GoOpen source, Apache 2.0Sim

O Brakeman é outra ferramenta conhecida focada em um único framework, o Ruby on Rails. O repositório dele o descreve como gratuito para uso não comercial sob uma licença de uso público própria, então confira os termos antes de incorporá-lo a um serviço comercial.

Várias delas agora oferecem correções ou triagem assistidas por IA com nomes próprios, por exemplo o Copilot Autofix para alertas do CodeQL, o Semgrep Multimodal, o Snyk Agent Fix e o SonarQube AI CodeFix. Nomes, edições e preços nessa área mudam com frequência, então leia a página atual de cada fornecedor antes de decidir.

Como escolher

  • Uma linguagem, equipe pequena. Comece com a ferramenta específica da sua stack (Bandit para Python, gosec para Go). Elas são gratuitas, rápidas de rodar e fáceis de adicionar ao CI.
  • Base de código mista e preferência por open source. Uma engine multilinguagem baseada em regras, como o Opengrep ou o Semgrep Community Edition, cobre muitas linguagens com regras que você consegue ler e estender.
  • Tudo está no GitHub. O CodeQL via GitHub code scanning coloca os alertas nos pull requests sem nenhum serviço extra. Veja GitHub Advanced Security vs vetkit.
  • Você precisa de análise mais profunda entre arquivos, dashboards e políticas. É isso que as plataformas comerciais vendem. Compare-as no seu próprio código, não em listas de recursos. Veja Semgrep vs vetkit e Snyk vs vetkit.

Seja qual for a escolha, prefira uma ferramenta que gere SARIF. É o formato comum que permite enviar os achados para o GitHub code scanning ou para outro dashboard, e trocar de ferramenta depois. O guia de SARIF explica como.

O que o SAST deixa passar

O SAST encontra padrões de código inseguro. Muito do que dá errado em software, especialmente em software escrito às pressas com um assistente de IA, não é um padrão em um único arquivo.

ProblemaPor que o SAST sozinho não pegaO que pega
Um pacote que não existe ou foi registrado na semana passadaA instrução de import é código válidoVerificação de dependências nos registries públicos
Credenciais commitadasA maioria das regras de SAST olha o comportamento do código, não formatos de segredosSecret scanning
Vulnerabilidades conhecidas em dependênciasO código vulnerável não está no seu repositórioAnálise de composição de software (SCA)
Autorização ausente entre usuáriosO código está sintaticamente correto; a regra que falta está no design do seu produtoRevisão e um teste com duas contas
Implementações inacabadas ou placeholderNão é um padrão de segurançaVerificações de qualidade de código e de risco de IA, e revisão
Sem timeouts, queries dentro de loops, sem relatório de errosProblemas de confiabilidade, fora da maioria dos conjuntos de regras de segurançaVerificações de prontidão para produção
Permissões de hospedagem ou de banco de dados mal configuradasA configuração está em um console, não no código-fonteVerificar o ambiente implantado

É por isso que um relatório de SAST limpo não é o mesmo que código pronto para publicar. O guia sobre o que dá errado com vibe coding e o guia de pacotes inventados percorrem os casos que mais importam para código assistido por IA.

Onde o vetkit entra

O vetkit não é uma engine de SAST própria. É uma auditoria de repositório que executa análise estática como uma parte de um relatório mais amplo. Para segurança de código, ele usa o Opengrep com 663 regras próprias, listadas no catálogo de verificações público, e adiciona o Bandit para Python e o gosec para Go quando essas verificações são selecionadas. Em volta disso, ele executa secret scanning, verificações de vulnerabilidades em dependências e de existência de pacotes, verificações de qualidade de código, de risco de código de IA e de prontidão para produção, e transforma os achados em trabalho rastreado. Os achados podem ser exportados como SARIF.

Se você já usa uma das ferramentas acima e está satisfeito com ela, continue usando. O vetkit é útil para as linhas da segunda tabela e está em acesso antecipado, com um Security Quick Scan gratuito que cobre segredos, vulnerabilidades conhecidas em dependências e a postura básica.

Fontes

Lemos as afirmações sobre outras ferramentas na própria documentação ou nos repositórios delas em . Os produtos mudam rápido, então considere as páginas de cada projeto como a palavra final:

Os nomes de produtos são marcas registradas de seus respectivos proprietários. O vetkit não é afiliado, endossado nem patrocinado por eles; os nomes são usados apenas para identificar as ferramentas. Encontrou algo desatualizado? Escreva para contact@vetkit.dev e vamos corrigir.

Solicite acesso antecipado

Conte um pouco sobre sua equipe e os repositórios que você quer auditar. Recebemos equipes em pequenos grupos e responderemos por e-mail.

Usamos esses dados apenas para responder à sua solicitação. Política de privacidade