Como detectar vulnerabilidades no seu repositório gratuitamente

Scanners gratuitos detectam dependências vulneráveis, segredos vazados e falhas de injeção. Executamos seis deles em um repositório de teste e mostramos como testar a falha de autorização que todos deixaram passar.

Ashley Innocent

Ashley Innocent

5 novembro 2026

Como detectar vulnerabilidades no seu repositório gratuitamente

Apidog para empresas

Implantação local

SSO & RBAC

Conforme SOC 2

Explorar Apidog Enterprise

Para detectar vulnerabilidades no seu repositório gratuitamente, combine três camadas: um scanner de dependências (npm audit, pip-audit ou OSV-Scanner), um scanner de segredos (Gitleaks) e um scanner de código (Semgrep Community Edition). Execute-os a cada pull request. Nenhum deles encontrará uma verificação de autorização ausente, portanto adicione um teste em tempo de execução para isso.

npm audit --audit-level=high
pip-audit -r requirements.txt
gitleaks git . --no-banner
semgrep scan --config p/default --metrics=off --error

O que muda com o Vercel Security Review

O Vercel Security Review é um recurso do Vercel Agent em beta público desde 2 de novembro de 2026. Ele analisa cada push em um repositório conectado do GitHub, examina o diff e o código ao redor, rastreia como a alteração pode ser alcançada e valida novamente cada vulnerabilidade encontrada antes de reportá-la.

O exemplo fornecido pela Vercel é a razão pela qual este artigo existe. Uma alteração em um endpoint de faturas buscava registros por ID sem verificar a organização pertencente, permitindo que qualquer usuário autenticado baixasse a fatura de outra organização. Trata-se de uma falha de lógica de negócio, e scanners baseados em padrões têm grande dificuldade para identificar esse tipo de problema.

Veja quem pode utilizá-lo:

Pergunta Resposta
Planos Apenas equipes nos planos Pro e Enterprise
Custo Gratuito até 10 de novembro de 2026; depois, tarifas de tokens do provedor mais US$ 0,25 por milhão de tokens
Repositórios Repositórios conectados do GitHub; repositórios que não realizam deploy na Vercel ainda não são suportados
Escopo O diff em relação a uma branch base ou o código-fonte completo na primeira análise
Resultados Painel de vulnerabilidades, um check no GitHub e comentários em PRs em repositórios privados e internos

A documentação da Vercel também deixa clara sua limitação: a ferramenta analisa o código, não a sua aplicação em execução, e não substitui um teste de intrusão (pentest). Se você não se qualifica ou está lendo este guia após o período promocional, o restante das soluções apresentadas aqui é 100% gratuito.

O que uma varredura completa de repositório deve cobrir

Uma análise de vulnerabilidades completa em um repositório avalia quatro frentes: falhas conhecidas em dependências, credenciais expostas no histórico do Git, padrões de código inseguros (como injeções) e lógica de autorização. As três primeiras contam com ferramentas maduras e gratuitas. A quarta depende do contexto de negócio da sua aplicação e exige testes contra uma API em execução.

Four stacked layers of a repo scan: dependencies, secrets and code patterns each have free scanners, while authorization logic needs a runtime test

Lembre-se de que uma chave apagada em commits recentes continua no histórico do Git; por isso, vasculhe todo o histórico e revogue qualquer credencial real exposta. Para proteger chaves no tráfego de APIs e coleções de testes, confira nosso guia de prevenção contra vazamento de chaves de API.

Comparativo de scanners de vulnerabilidade gratuitos

Preços e licenças foram conferidos em 5 de novembro de 2026. Nenhuma das ferramentas de linha de comando abaixo exige criação de conta ou cartão de crédito para executar os comandos deste guia.

Ferramenta O que detecta Custo e licença Pontos de atenção
npm audit Vulnerabilidades em dependências npm Gratuito, integrado ao npm Exige arquivo lockfile
pip-audit Vulnerabilidades em dependências Python Gratuito, Apache-2.0 Apenas ecossistema Python
OSV-Scanner Vulnerabilidades em dependências de múltiplos ecossistemas Gratuito, Apache-2.0 Gera um volume maior de alertas, exigindo triagem
Trivy Dependências, segredos e configurações incorretas Gratuito, Apache-2.0 Fixe versões específicas das actions (veja abaixo)
Gitleaks Segredos expostos no histórico do Git Gratuito, MIT Sua GitHub Action exige chave de licença gratuita para organizações
Semgrep Community Edition Padrões de código e alguns segredos Gratuito, engine LGPL-2.1 Não rastreia fluxo de dados fora de uma única função ou arquivo
Dependabot alerts Vulnerabilidades em dependências Gratuito em repositórios públicos e privados Exclusivo do GitHub
GitHub secret scanning Segredos Gratuito em repositórios públicos; US$ 19 por committer ativo/mês em privados Repositórios privados necessitam do Secret Protection
CodeQL Padrões de código Gratuito em repositórios públicos; US$ 30 por committer ativo/mês em privados Repositórios privados necessitam do Code Security

Dois avisos importantes sobre licenciamento e segurança. As regras comunitárias do Semgrep adotam a Semgrep Rules License, que autoriza o uso corporativo interno, mas veda a redistribuição ou oferta como serviço. E caso decida utilizar o Trivy, atente-se ao CVE-2026-33634: partes do ecossistema do Trivy foram momentaneamente comprometidas por invasores em março de 2026. Mantenha sempre a versão atualizada e fixe suas actions a um commit SHA específico.

Varredura prática em poucos comandos: o que encontramos

Criamos uma pequena API em Express para gerenciamento de faturas e submetemos o código a um repositório local. O projeto incluía quatro dependências npm e três dependências Python em versões antigas, duas credenciais fictícias (uma no formato da Stripe e outra no da AWS), uma injeção de SQL, uma injeção de comandos de sistema e uma rota que entregava faturas de qualquer empresa para qualquer usuário autenticado.

Em seguida, rodamos cada utilitário no macOS em 5 de novembro de 2026:

npm audit
pip-audit -r requirements.txt --no-deps --disable-pip
osv-scanner scan source -r .
trivy fs --scanners vuln,secret .
gitleaks git . --no-banner
semgrep scan --config p/default --metrics=off
semgrep scan --config p/nodejsscan --metrics=off
Ferramenta (versão) O que detectou O que deixou passar
npm audit (npm 11.12.1) 9 pacotes vulneráveis: 6 de severidade alta, 3 de baixa Tudo o que não faz parte do ecossistema npm
pip-audit 2.10.1 16 alertas nos 3 pacotes fixados Pacotes transitivos, em razão do parâmetro --no-deps
OSV-Scanner 2.7.0 66 alertas únicos em 15 pacotes, englobando dependências transitivas de Python Segredos expostos e falhas de código
Trivy 0.76.1 33 alertas em dependências e a credencial no formato Stripe A credencial no formato AWS
Gitleaks 8.30.1 A credencial no formato Stripe A credencial no formato AWS
Semgrep 1.183.0, p/default Chave no formato Stripe, injeção de comandos e ausência de middleware CSRF Injeção de SQL e a credencial no formato AWS
Semgrep 1.183.0, p/nodejsscan Injeção de SQL, injeção de comandos e credencial no formato AWS A credencial no formato Stripe

O teste revelou três lições fundamentais:

Vale ressaltar que nenhuma ferramenta apontou a falha na rota de faturas. Como se trata de um repositório de teste conciso, considere isso uma demonstração técnica, e não um benchmark exaustivo. Não incluímos o CodeQL nesta rodada.

Como automatizar a varredura a cada pull request no GitHub

Runners padrão fornecidos pelo GitHub são gratuitos em repositórios públicos. Em repositórios privados, o GitHub Free concede US$ 12 mensais em créditos, o que equivale a cerca de 2.000 minutos de execução em uma máquina Linux de 2 núcleos na tabela de preços atual. O workflow a seguir emprega comandos diretos via CLI, permitindo que organizações dispensem a chave de licença da action do Gitleaks:

name: repo-scan
on:
  pull_request:
  push:
    branches: [main]
permissions:
  contents: read
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7 # pin to a commit SHA
        with:
          fetch-depth: 0
      - name: Dependencies (npm)
        run: npm audit --audit-level=high
      - name: Dependencies (Python)
        run: pipx run pip-audit -r requirements.txt
      - name: Secrets
        run: |
          curl -sSL https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz | tar xz gitleaks
          ./gitleaks git . --no-banner
      - name: Code patterns
        run: pipx run semgrep scan --config p/default --config p/nodejsscan --metrics=off --error

Todos os quatro scanners finalizaram a execução com código 1 em nosso repositório de teste — e qualquer status de saída diferente de zero é o que interrompe o job na pipeline. Remova as etapas não utilizadas na sua arquitetura. Para adicionar validações de API ao mesmo fluxo, leia nosso artigo sobre Apidog CLI com GitHub Actions.

Habilite também os alertas do Dependabot. Eles estão disponíveis sem custos em qualquer plano e não dependem do acionamento de pull requests para manter suas dependências monitoradas.

O ponto cego: falhas de autorização que scanners estáticos não pegam

Bugs de autorização são invisíveis para ferramentas de padrões sintáticos porque a estrutura parece impecável: há uma query parametrizada legítima, parâmetros válidos e um middleware de auth interceptando a requisição. O problema reside em uma regra de negócio ausente — algo que só o seu modelo de dados sabe que deveria existir.

// Every scanner passed this
db.query("SELECT * FROM invoices WHERE id = $1", [req.params.id]);

// The fix: scope the lookup to the caller's organization
db.query("SELECT * FROM invoices WHERE id = $1 AND org_id = $2",
  [req.params.id, req.user.orgId]);

Essa brecha é conhecida como Broken Object Level Authorization (BOLA), vulnerabilidade que encabeça o topo do OWASP API Security Top 10 2023. A recomendação da OWASP é validar o escopo de permissão em todas as requisições que utilizem IDs fornecidos pelo cliente, além de automatizar testes capazes de barrar falhas de controle de acesso antes do deploy.

Agentes inteligentes de desenvolvimento podem ser grandes aliados aqui. Removemos todos os comentários explicativos do nosso repositório de testes e submetemos o código ao Claude Code, avaliando seu comportamento com e sem menções ao conceito de múltiplas organizações. Em ambos os cenários, o modelo identificou o risco na rota de faturas. Lembre-se apenas de que essa abordagem consome tokens do seu plano de IA e os resultados podem sofrer oscilações entre execuções distintas.

Um teste automatizado clássico, por outro lado, dá uma resposta objetiva e binária a cada pull request. Para proteger sua infraestrutura de ponta a ponta, leia nossos guias sobre detecção automatizada de vulnerabilidades em APIs, o nosso comparativo de ferramentas de varredura para APIs e o checklist essencial de testes de segurança para APIs.

Como testar falhas de autorização via agente com o Apidog CLI

Não perca tempo codificando esses cenários manualmente para cada endpoint. Deixe seu agente de IA estruturar os testes com o Apidog CLI: a ferramenta lê a malha de rotas, gera testes para cada recurso restrito e monta uma suíte pronta para rodar no CI. O plano gratuito do Apidog atende times de até 4 colaboradores.

npm install -g apidog-cli@latest
apidog auth login --with-token <YOUR_TOKEN>
apidog skill install

Configure previamente uma base de testes contendo duas organizações distintas com um usuário vinculado a cada uma. Depois, basta instruir seu agente com uma solicitação estruturada:

Read the routes in src/. For each route that returns data owned by an
organization, create an Apidog test scenario in project <id>: log in as
the Org A test user, request an Org B resource by ID, and assert the
status is 403 or 404. Add an Org A request for its own resource and
assert 200, so a broken login can't pass. Group the scenarios in a test
suite, run it against the staging environment, and summarize failures.

O agente inspecionará os contratos dos payloads, criará os fluxos de teste e disparará a execução da suíte:

apidog cli-schema get test-scenario-create
apidog cli-schema validate test-scenario-create --file scenario.json
apidog test-scenario create --project <id> --file scenario.json
apidog test-scenario import-steps <scenarioId> --project <id> --source endpoint --ids <endpointIds>
apidog test-suite create --project <id> --file suite.json
apidog run --test-suite <suiteId> --project <id> -e <envId> -r cli,junit
Sequence diagram: a test user in Org A logs in, gets a token, requests an Org B invoice, and the test passes on 403 or 404 and fails on 200

A etapa de checagem positiva é indispensável. Sem validar que o próprio recurso responde com sucesso (status 200), uma URL base apontada incorretamente responderia com 404 e daria a falsa impressão de que o teste de segurança passou com sucesso.

Incorpore o comando apidog run ao fluxo do GitHub Actions exibido anteriormente, direcionando-o para deployments de staging ou preview com dados fictícios — nunca contra bases produtivas. A documentação do comando apidog run detalha os parâmetros adicionais, e nosso passo a passo sobre o Apidog CLI no Claude Code ensina como preparar o agente.

button

Perguntas frequentes (FAQ)

Qual é a estratégia gratuita mais eficaz para identificar vulnerabilidades em um repositório? O método mais completo consiste em empilhar um scanner de dependências, o Gitleaks e o Semgrep Community Edition, complementando a cobertura com testes automatizados em tempo de execução para verificar permissões de acesso. Nenhuma ferramenta isolada foi capaz de acusar todos os problemas em nosso laboratório de teste.

O Vercel Security Review é gratuito? Apenas até o dia 10 de novembro de 2026 e limitado aos planos Pro e Enterprise. Após essa data, incidirão os custos das tarifas de token do provedor mais US$ 0,25 por milhão de tokens. Além disso, projetos não hospedados na Vercel ainda não possuem suporte.

O recurso de varredura de segredos do GitHub é gratuito em projetos privados? Não. O secret scanning e o CodeQL são gratuitos apenas em repositórios abertos; no caso de repositórios privados, é necessária a contratação do GitHub Secret Protection (US$ 19) ou do GitHub Code Security (US$ 30) por committer ativo ao mês. Já os alertas do Dependabot são gratuitos em qualquer tipo de repositório.

O Semgrep é capaz de acusar falhas de autorização? Ele não detectou o endpoint de faturas desprotegido com as regras que aplicamos em nosso teste. A edição Community não possui visibilidade interprocessual ou interfuncional entre múltiplos arquivos, embora você possa escrever regras customizadas adaptadas a padrões pontuais da sua arquitetura.

Scanners estáticos e testes dispensam a realização de testes de intrusão (pentests)? Definitivamente não. Scanners estáticos e baterias de testes asseguram conformidade contra vulnerabilidades catalogadas e casos previstos pela equipe. Um pentest profissional explora brechas imprevisíveis e vetores fora do radar — e a própria documentação da Vercel reforça que seu sistema não cumpre esse papel.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs