Avançado DevSecOps

Pipeline seguro — SAST, DAST, SCA no CI/CD e gates de qualidade

Um pipeline seguro não é um pipeline com mais etapas — é um pipeline onde cada etapa tem critérios claros de aprovação e falha. SAST, DAST e SCA são as três ferramentas centrais que transformam um CI/CD comum em uma barreira de segurança automatizada.

SAST — Análise Estática de Segurança

Analisa o código-fonte sem executá-lo. Detecta padrões inseguros como injeção SQL, XSS, uso de funções perigosas.

# GitHub Actions — Semgrep SAST
jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Semgrep
        uses: returntocorp/semgrep-action@v1
        with:
          config: "p/owasp-top-ten"
        env:
          SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_TOKEN }}

Ferramentas populares: Semgrep, SonarQube, Checkmarx, CodeQL (GitHub nativo).

SCA — Análise de Composição de Software

Verifica dependências de terceiros em busca de CVEs conhecidos.

  sca:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Trivy SCA
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: "fs"
          scan-ref: "."
          severity: "HIGH,CRITICAL"
          exit-code: "1"   # falha o pipeline se encontrar HIGH/CRITICAL
Exemplo de saída SCA:
  lodash@4.17.15  CVE-2021-23337  CRITICAL  Prototype Pollution
  log4j@2.14.0    CVE-2021-44228  CRITICAL  RCE (Log4Shell)
  → pipeline bloqueado até atualização das dependências

DAST — Análise Dinâmica de Segurança

Testa a aplicação em execução, simulando ataques reais. Executa em ambiente de staging, nunca em produção.

  dast:
    runs-on: ubuntu-latest
    needs: [deploy-staging]
    steps:
      - name: OWASP ZAP Baseline Scan
        uses: zaproxy/action-baseline@v0.10.0
        with:
          target: "https://staging.example.com"
          rules_file_name: ".zap/rules.tsv"
          fail_action: true
O que o DAST encontra que o SAST não encontra:
  - Falhas de configuração do servidor (headers ausentes)
  - Lógica de autenticação bypassável em runtime
  - Exposição de endpoints não documentados
  - Problemas de CORS e CSP mal configurados

Gates de qualidade (Quality Gates)

Gates são critérios automáticos que bloqueiam o avanço do pipeline:

Exemplo de política de gate:
  SAST   → nenhuma vulnerabilidade CRITICAL ou HIGH
  SCA    → nenhum CVE CRITICAL; HIGH aceito com exceção documentada
  DAST   → nenhum alerta de risco ALTO na baseline
  Secrets → zero segredos detectados no diff
  Coverage → cobertura de testes ≥ 80%

Se qualquer gate falhar → merge bloqueado, PR anotado com os achados.

Ordem recomendada no pipeline

push → pre-commit hooks (local)
     → secrets scan (rápido, < 30s)
     → SAST (paralelo com testes unitários)
     → SCA (paralelo com build)
     → build da imagem
     → scan da imagem (Trivy)
     → deploy em staging
     → DAST
     → aprovação manual (opcional, para prod)
     → deploy em produção

Exceções e falsos positivos

Ferramentas de análise produzem falsos positivos. O processo de exceção deve ser rastreável:

1. Desenvolvedor abre issue documentando o falso positivo
2. Security team revisa e aprova
3. Regra adicionada ao arquivo de supressão (versionado no repo)
4. Exceção revisada a cada 90 dias

# .semgrepignore ou equivalente — nunca suprimir sem justificativa

Resumo

SAST encontra problemas no código. SCA expõe dependências vulneráveis. DAST valida o comportamento real da aplicação. Os três juntos, com gates claros, formam uma malha de segurança automatizada que não depende de revisão manual para funcionar.