Introdução
Vulnerabilidades não aparecem apenas em infraestrutura. Elas vêm de código inseguro, dependências desatualizadas e containers mal configurados. Enquanto você defende contra DDoS, aplicações vulneráveis podem ser exploradas diretamente por atacantes.
Neste artigo, você aprenderá a implementar 5 camadas de segurança automática em seu pipeline CI/CD usando ferramentas gratuitas do GitHub e serviços open source. Cada uma detecta um tipo diferente de risco: dependências vulneráveis, código inseguro, falhas lógicas e imagens de container comprometidas.
O melhor: tudo funciona sem custos adicionais se você usa GitHub Public ou temos opções gratuitas para repos privados.
⚠️ Atenção: Estas ferramentas detectam e alertam sobre problemas, mas não corrigem tudo automaticamente. Você ainda precisa revisar e aprovar cada correção. Segurança é um processo contínuo, não um checkbox.
Pré-requisitos
Para implementar as medidas deste artigo, você precisa de:
- Repositório no GitHub (público ou privado)
- GitHub Actions habilitado (padrão em repos novos)
- Conhecimento básico de YAML (workflows GitHub Actions)
- Aplicação em Docker ou código C#/.NET (exemplos são específicos, mas conceitos aplicam a qualquer linguagem)
- Conta SonarCloud (gratuita para repos públicos e privados)
Repos privados com plano GitHub Pro/Team têm acesso a algumas ferramentas gratuitas de segurança. Repos públicos têm tudo gratuito.
1. Dependabot: Detectar Dependências Vulneráveis
Dependabot é a primeira linha de defesa. Ele verifica automaticamente suas dependências contra bancos de dados de vulnerabilidades conhecidas (CVE) e abre pull requests com atualizações de segurança.
Exemplo real: Um pacote que você usa há 6 meses descobre uma falha crítica. Dependabot abre um PR automaticamente dentro de horas. Você revisa, testa e merge.
Ativar Dependabot no GitHub
- Acesse Settings → Code security and analysis
- Ative Dependabot alerts e Dependabot security updates
- Pronto — Dependabot já está monitorando
Configuração Avançada: dependabot.yml
Para controlar frequência de atualizações e agrupamento de PRs, crie .github/dependabot.yml:
| |
Automação: Auto-merge de Updates Seguras
- Conta SonarCloud (gratuita para repos públicos e privados) Se você quer que Dependabot merge automaticamente certas atualizações (patch versions, por exemplo):
| |
ℹ️ Informação: Dependabot detecta vulnerabilidades em tempo real. Em 2024, 42% de todos os PRs de segurança são abertos por ferramentas automáticas. Sem automação, você fica para trás.
2. GitHub Code Scanning: Análise Estática com CodeQL
GitHub Code Scanning usa CodeQL (linguagem de query estática) para encontrar bugs de segurança e code smells em seu código. Funciona em repositórios públicos e privados (com GitHub Pro).
O que detecta: SQL injection, XSS, command injection, use-after-free, variáveis não inicializadas, e 300+ outros padrões inseguros.
Ativar Code Scanning
- Acesse Settings → Code security and analysis
- Ative GitHub Advanced Security (se disponível na sua conta)
- Code Scanning é ativado automaticamente
Workflow Automático com CodeQL
GitHub gera automaticamente um workflow .github/workflows/github-code-scanning.yml. Customize se necessário:
| |
Interpretar Resultados
Resultados aparecem em Security → Code scanning alerts:
- Critical: Falhas que afetam segurança (SQL injection, RCE)
- High: Bugs que podem ser explorados
- Medium/Low: Práticas ruins ou technical debt
Desabilitar Alertas de Forma Segura
Nem todo alerta é actionable. Se você confirma que um alerta é false positive:
| |
📝 Exemplo: CodeQL encontrou um SQL injection potencial em um relatório. Resultado: descobriu que você estava concatenando IDs de usuário sem validação. Depois de adicionar parametrização, o alerta desapareceu.
3. SonarCloud: Análise SAST Profunda e Code Quality
SonarCloud vai além de segurança — mede qualidade de código, cobertura de testes, duplicação e code smells. É gratuito para repos públicos e privados (com limitações).
O que detecta além de segurança: bugs, code smells, code coverage, technical debt, falhas de design.
Setup: Conectar GitHub a SonarCloud
- Acesse SonarCloud.io
- Faça login com sua conta GitHub
- Selecione os repositórios a analisar
- Gere um token em My Account → Security → Generate Tokens
Workflow com SonarCloud
Adicione .github/workflows/sonarcloud.yml:
| |
Arquivo sonar-project.properties
Crie na raiz do seu projeto:
| |
Badges de Qualidade
Adicione ao README para mostrar status:
| |
ℹ️ Informação: SonarCloud analisa Pull Requests automaticamente e coloca comentários no código com sugestões. Desenvolvedores recebem feedback em tempo real, não no final do sprint.
4. OWASP ZAP: Testes Dinâmicos de Segurança (DAST)
OWASP ZAP (Zed Attack Proxy) é um teste dinâmico — ele acessa sua aplicação como um atacante e procura vulnerabilidades em tempo de execução.
Diferença SAST vs DAST:
- SAST (Code Scanning, SonarCloud): analisa código-fonte sem executar
- DAST (ZAP): executa a aplicação e ataca como um hacker real

Workflow com OWASP ZAP
Adicione .github/workflows/owasp-zap.yml:
| |
Configuração de Regras (.zap/rules.tsv)
Customize quais vulnerabilidades ZAP deve blocar:
| |
Rodando ZAP Localmente para Teste
Antes de colocar em CI/CD, teste localmente:
| |
⚠️ Atenção: DAST só funciona se sua aplicação está rodando. Certifique-se de que o Docker build e start sejam rápidos. Scans podem levar 5-10 minutos.
5. Trivy: Scanning de Container e Dependências
Trivy verifica imagens Docker e arquivos de dependência em busca de vulnerabilidades conhecidas. É rápido (segundos), agnóstico a linguagem e integra bem em CI/CD.
O que escaneia: imagens Docker, arquivos requirements.txt, package.json, *.csproj, etc.
Workflow com Trivy
Adicione .github/workflows/trivy.yml:
| |
Executar Trivy Localmente
| |
Interpretando Saída Trivy
| |
Cada CVE tem um link para detalhes. Se for crítico, você deve atualizar o pacote imediatamente.
📝 Exemplo: Trivy encontrou CVE-2024-1234 em uma imagem base Ubuntu. Você atualiza a imagem, reconstrói e o scan passa. Tudo em menos de 1 minuto.
6. Exemplo Prático: Workflow Completo em CI/CD
Aqui está um workflow que roda todas as 5 camadas de segurança em cada push:
| |
Tempo Total de Execução
- CodeQL: ~3 minutos
- SonarCloud: ~4 minutos
- Trivy: ~30 segundos
- OWASP ZAP: ~8 minutos (apenas em main)
Total: ~10-15 minutos por push (sem paralelização). Com paralelização no GitHub Actions, rodam em paralelo.
7. Dicas e Boas Práticas
1. Balance entre falsos positivos e segurança: Não ignore todos os alertas, mas também não paralise o pipeline. Ajuste severidade mínima para CRITICAL/HIGH, não MEDIUM.
2. Roteire revisão de vulnerabilidades: Designar uma pessoa ou time responsável por revisar e fechar/resolver alertas de segurança. Não deixar acumular.
3. Integração com chat: Conecte GitHub Issues/Security Alerts ao Slack/Discord. Receba notificações em tempo real.
4. Status checks: Configure Status Checks para bloquear PRs com falhas de segurança críticas.
Actions → Settings → Status Checks.5. Testes regulares em staging: Execute DAST (ZAP) regularmente contra seu ambiente de staging (não apenas em produção). Apanhe problemas antes de deploy.
Resumo Objetivo
Dependabot — monitora dependências contra CVE em tempo real; abre PRs com atualizações de segurança automaticamente quando descobrir vulnerabilidades.
GitHub Code Scanning (CodeQL) — análise estática nativa do GitHub que detecta 300+ padrões inseguros (SQL injection, XSS, RCE) sem custo adicional.
SonarCloud — análise SAST profunda medindo code quality, security hotspots, code coverage e technical debt; gratuito para repos públicos.
OWASP ZAP — teste dinâmico (DAST) que executa a aplicação e simula ataques reais para encontrar vulnerabilidades exploráveis em runtime.
Trivy — scanning rápido de filesystems e imagens Docker para vulnerabilidades conhecidas em dependências; executa em segundos.
Leia Também
- Prevenção de DDoS: Infraestrutura e Segurança — camada anterior de defesa (infraestrutura vs código)
- Keycloak: Autenticação Grátis com Container e C# — proteja acesso a ferramentas de segurança
- Pipeline Configuração .NET 8+: IOptions, Secrets e Docker — gerenciar secrets em CI/CD com segurança
Referências
- GitHub Dependabot Documentation — referência completa de configuração e automação
- GitHub CodeQL Documentation — queries customizadas e análise avançada
- SonarCloud Official Guide — setup e interpretação de métricas
- OWASP ZAP User Guide — configuração avançada e regras customizadas
- Trivy: A Simple and Comprehensive Vulnerability Scanner — documentação oficial e examples
- OWASP Top 10 - 2021 — vulnerabilidades mais críticas que essas ferramentas detectam

Ao comentar, você concorda com nossa Política de Privacidade, Termos de Uso e Política de Exclusão de Dados.