Automação de Varredura de Segurança com GHAS e CodeQL

Resume a automação de varredura de segurança em DevSecOps com GitHub Advanced Security, CodeQL, Dependabot e Microsoft Defender for DevOps.

O exame AZ-400 avalia se você sabe qual ferramenta colocar em qual etapa do pipeline de segurança. Os pilares principais são as diferenças entre SAST, SCA e DAST; os componentes do GitHub Advanced Security (GHAS); os dois modos do Dependabot; e o papel do conector do Microsoft Defender for DevOps. O princípio shift-left — incorporar segurança desde o primeiro commit em vez de tratá-la como barreira final — permeia quase todas as questões deste domínio.

 

Categorias de Varredura de Segurança — SAST, DAST, SCA, IaC

Pense nos controles de segurança de um aeroporto. A bagagem despachada passa por raio-X no check-in, o carry-on é revistado na porta e os comissários monitoram a cabine durante o voo. Cada ponto verifica uma ameaça diferente. A varredura de segurança em DevSecOps funciona igual: nenhuma ferramenta cobre tudo sozinha.

SAST (Static Application Security Testing): Analisa o código-fonte sem executá-lo. Detecta SQL Injection, XSS, credenciais embutidas e vulnerabilidades no nível do código. Executa no build. CodeQL é o exemplo principal. DAST (Dynamic Application Security Testing): Envia requisições HTTP reais para uma aplicação em execução, buscando vulnerabilidades na perspectiva de um atacante. Requer ambiente de staging, portanto fica após o CD. SCA (Software Composition Analysis): Analisa CVEs e conformidade de licenças em bibliotecas open-source. Parsea , e similares contra o GitHub Advisory Database. Dependabot é o exemplo principal. Varredura de IaC: Detecta configurações incorretas em ARM, Bicep e Terraform antes da implantação — portas abertas, criptografia desativada, permissões excessivas. Checkov, tfsec e Template Analyzer cobrem isso. Varredura de containers: Detecta CVEs em pacotes do SO e dependências em imagens Docker. Necessária no push da imagem e no runtime.

SAST cobre código que você escreveu; SCA cobre bibliotecas que importou; DAST cobre fraquezas que só aparecem em execução. São complementares.

!4 categorias de varredura de segurança: SAST, DAST, SCA, IaC

GitHub Advanced Security — CodeQL e Secret Scanning

Imagine uma fábrica de alimentos: matérias-primas testadas na recepção, linha de produção monitorada, produtos acabados inspecionados antes do envio. O GitHub Advanced Security (GHAS) aplica o mesmo modelo. CodeQL analisa o código, secret scanning monitora credenciais e dependency review inspeciona cada nova biblioteca via pull request.

CodeQL é o principal motor SAST do GHAS. Converte o código-fonte em banco de dados relacional e busca padrões de vulnerabilidades com a linguagem QL. O fluxo: Init (criar banco CodeQL), Autobuild (compilar Ce Java), Analyze (executar consultas e emitir SARIF). Um arquivo ativa tudo. Os resultados aparecem na aba Security como code scanning alerts e como comentários inline nos PRs.

Ponto crítico de operação: a comparação de code scanning em PRs exige resultados do CodeQL na branch base (). Sem eles, retorna . A solução é um trigger de push na branch padrão para rodar o CodeQL ao menos uma vez.

Secret scanning alerts detecta credenciais confirmadas. O secret scanning partner program monitora repositórios públicos por tokens de 100+ provedores e notifica o emissor via API para revogação automática. Push protection (exclusivo do GHAS) bloqueia o push antes de a credencial chegar ao repositório. Distinção para o exame: → partner program; → push protection.

 

Dependabot — Atualizações de Segurança e de Versão

Dois tipos de manutenção de veículos: um recall de segurança traz contato imediato do fabricante (atualizações de segurança); a inspeção anual segue calendário fixo (atualizações de versão). O Dependabot gerencia ambos de forma independente — confundi-los é erro frequente no exame.

Dependabot alerts disparam quando um CVE é registrado ou atualizado no GitHub Advisory Database ou no NVD. Push ou pull request não são disparadores diretos. Gravidade: Critical, High, Medium, Low (CVSSv3).

Security updates abrem PR automático atualizando o pacote vulnerável e acionam CI para verificar compatibilidade. Version updates seguem — defina ecossistemas (npm, Maven, NuGet, pip) e cadência (diária, semanal). Os dois modos se ativam independentemente. Sem , dezenas de PRs se acumulam e a equipe passa a ignorar até os críticos. Cadência semanal e escopo nas dependências principais evitam isso.

 

Microsoft Defender for DevOps e Varredura de Containers

Imagine câmeras cobrindo uma cidade inteira com feed em uma única central. O Microsoft Defender for DevOps oferece visibilidade consolidada sobre repositórios, pipelines e infraestrutura em nuvem no painel do Defender for Cloud. Conecte uma organização do Azure DevOps ou GitHub pelo conector DevOps Security e adicione a task do Microsoft Security DevOps (MSDO) ao pipeline.

MSDO agrupa Credential Scanner (credenciais expostas), Binskim (análise de binários) e Template Analyzer (configurações incorretas em ARM e Bicep). O Microsoft Defender for Containers varre imagens no push para o Azure Container Registry (ACR) e monitora o runtime do AKS continuamente. Ambas as fases aparecem no Defender for Cloud. GHAS cuida de código e repositório; Defender for Cloud cuida de infraestrutura e runtime; o conector une os dois.

 

Integração no Pipeline — Gates, Fail-Fast e Baselines

Controle de acesso por camadas em um edifício: lobby com crachá, sala de servidores com biometria, áreas classificadas bloqueadas. Gates de segurança em pipeline seguem o mesmo princípio: a resposta escala com a gravidade.

Critical e High reprovam o build imediatamente (fail-fast). Medium gera aviso mas continua. Low e informational ficam apenas no relatório. Baseline é essencial em código legado: bloquear todos os achados existentes paralisa a equipe. A opção bloqueia só achados de novos commits. Para Azure Policy, a task após o deploy aciona avaliação on-demand sem esperar 24 horas. Audit registra não conformidade; Deny bloqueia a implantação.

 

Resumo do Exame

"Vulnerabilidades no nível do código, sem execução" -- SAST (CodeQL) "App em execução, requisições HTTP, perspectiva do atacante" -- DAST (OWASP ZAP) "CVEs de dependências open-source e conformidade de licenças" -- SCA (Dependabot, Mend Bolt) "Bloquear push com credenciais antes de chegar ao repositório" -- GHAS Push Protection "Notificar emissor e revogar automaticamente após o commit" -- Secret Scanning Partner Program "Disparado por atualização no Advisory DB, não por push ou PR" -- Dependabot alerts "Manter dependências atualizadas, sem relação com segurança" -- Dependabot version updates "Configurações incorretas em ARM / Bicep / Terraform antes da implantação" -- Template Analyzer / Checkov / tfsec "ACR push + AKS runtime, varredura de container em duas fases" -- Microsoft Defender for Containers "Azure DevOps + GitHub resultados de segurança em painel único" -- Microsoft Defender for DevOps "Imagem assinada / Content Trust / ACR" -- Somente ACR Premium SKU "Feedback antecipado na fase de PR, onde posicionar SAST" -- Build pipeline (não Release pipeline)

Shift-left = varredura de segurança desde o primeiro commit; GHAS = a plataforma de segurança integrada no nível do repositório.

Voltar à lista do blog