program-owasp-zap
Guia Definitivo e Padrões de Engenharia para OWASP ZAP (zaproxy.org), cobrindo o scanner dinâmico de segurança de aplicações web e APIs (DAST), ZAP Automation Framework (planos AF em YAML), scans empa
SKILL.mdskills/programs/program-owasp-zap/SKILL.md
GitHubHabilidade de IA: Guia e Engenharia com OWASP ZAP (Zed Attack Proxy)
Esta skill fornece orientação técnica canônica, comandos operacionais e padrões de engenharia para o OWASP ZAP (Zed Attack Proxy) (zaproxy.org), a ferramenta de código aberto mais utilizada no mundo para Dynamic Application Security Testing (DAST) e inspeção de tráfego HTTP/HTTPS.
🧭 Visão Geral e Modos de Operação do ZAP
O OWASP ZAP opera como um proxy de interceptação e scanner dinâmico de vulnerabilidades, operando em três modalidades principais:
┌────────────────────────────────────────────────────────────────────────┐
│ MODOS DE EXECUÇÃO DO ZAP │
└────────────────────────────────────────────────────────────────────────┘
1. Desktop GUI / HUD: Auditoria interativa, exploração manual e depuração.
2. Headless Daemon: Serviço de segundo plano expondo REST API (porta 8080).
3. ZAP Automation Framework (AF): Execução headless dirigida por arquivo YAML.
4. Docker Packaged Scans: Contêineres efêmeros para pipelines de CI/CD.
📄 ZAP Automation Framework (AF) — Padrão Canônico em YAML
O Automation Framework (AF) é o padrão moderno recomendado pela equipe do ZAP para orquestrar varreduras completas sem necessidade de scripts externos.
1. Estrutura Canônica de um Plano de Automação (zap-scan-plan.yaml)
---
env:
contexts:
- name: "Ecommerce-Staging"
urls:
- "https://staging.empresa.com"
includePaths:
- "https://staging.empresa.com/.*"
excludePaths:
- "https://staging.empresa.com/logout.*"
- "https://staging.empresa.com/admin/delete.*"
authentication:
method: "json"
parameters:
loginUrl: "https://staging.empresa.com/api/v1/auth/login"
loginRequestData: '{"username": "{%username%}", "password": "{%password%}"}'
verification:
method: "response"
loggedInRegex: '"authenticated":\s*true'
loggedOutRegex: '"error":\s*"unauthorized"'
users:
- name: "test-user"
credentials:
username: "qa-sec-user"
password: "SecurePassword123!"
parameters:
failOnError: true
failOnWarning: false
progressToStdout: true
jobs:
# 1. Spider Tradicional (Crawling de HTML)
- type: spider
parameters:
context: "Ecommerce-Staging"
user: "test-user"
maxDuration: 10
maxDepth: 5
# 2. Ajax Spider (Navegação Headless em SPAs React/Vue via Chromium)
- type: spiderAjax
parameters:
context: "Ecommerce-Staging"
user: "test-user"
maxDuration: 15
browserId: "firefox-headless"
# 3. Configuração de Varredura Passiva
- type: passiveScan-config
parameters:
maxAlertsPerRule: 5
scanOnlyInScope: true
# 4. Aguardar Conclusão da Análise Passiva
- type: passiveScan-wait
parameters:
maxDuration: 10
# 5. Varredura Ativa (Fuzzing de Parâmetros e Injeções)
- type: activeScan
parameters:
context: "Ecommerce-Staging"
user: "test-user"
policy: "Default Policy"
maxRuleDurationInMins: 5
maxScanDurationInMins: 30
# 6. Geração de Relatórios (HTML, JSON e SARIF)
- type: report
parameters:
template: "traditional-html"
reportDir: "/zap/wrk/reports"
reportFile: "zap-report.html"
- type: report
parameters:
template: "sarif-json"
reportDir: "/zap/wrk/reports"
reportFile: "zap-report.sarif"
2. Execução do Plano via CLI:
# Executar o plano YAML em modo headless
./zap.sh -cmd -autorun zap-scan-plan.yaml
# Gerar template mínimo de plano YAML
./zap.sh -cmd -autogenmin template-min.yaml
# Gerar template com todos os parâmetros possíveis
./zap.sh -cmd -autogenmax template-max.yaml
🐳 Execução via Scans Empacotados em Docker
Para pipelines rápidos de CI/CD, o ZAP disponibiliza três scripts empacotados em sua imagem oficial zaproxy/zap-stable:
1. Baseline Scan (zap-baseline.py)
Executa spider rápido e análise passiva (cabeçalhos, cookies, CSP, SSL). Não envia payloads agressivos.
docker run --rm -v $(pwd):/zap/wrk:rw -t zaproxy/zap-stable zap-baseline.py \
-t https://staging.empresa.com \
-r zap-baseline-report.html \
-J zap-baseline-report.json \
-I
2. Full Active Scan (zap-full-scan.py)
Executa spider completo, Ajax spider e varredura ativa profunda com injeções de parâmetros.
docker run --rm -v $(pwd):/zap/wrk:rw -t zaproxy/zap-stable zap-full-scan.py \
-t https://staging.empresa.com \
-r zap-full-report.html \
-n zap.context \
-m 30
3. API Scan (zap-api-scan.py)
Projetado especificamente para APIs REST (OpenAPI/Swagger), GraphQL e SOAP.
# Varredura de contrato OpenAPI v3
docker run --rm -v $(pwd):/zap/wrk:rw -t zaproxy/zap-stable zap-api-scan.py \
-t https://staging.empresa.com/api/v3/openapi.json \
-f openapi \
-r zap-api-report.html
# Varredura de endpoint GraphQL
docker run --rm -v $(pwd):/zap/wrk:rw -t zaproxy/zap-stable zap-api-scan.py \
-t https://staging.empresa.com/graphql \
-f graphql \
-r zap-graphql-report.html
🔑 Autenticação Avançada e Injeção de Headers
1. Injeção de Bearer Token / API Key Estática:
# Injetar cabeçalho Authorization em todas as requisições disparadas pelo ZAP
docker run --rm -v $(pwd):/zap/wrk:rw -t zaproxy/zap-stable zap-api-scan.py \
-t https://api.empresa.com/openapi.json \
-f openapi \
-z "-config replacer.full_list(0).description=AuthHeader \
-config replacer.full_list(0).enabled=true \
-config replacer.full_list(0).matchtype=REQ_HEADER \
-config replacer.full_list(0).matchstr=Authorization \
-config replacer.full_list(0).regex=false \
-config replacer.full_list(0).replacement='Bearer eyJhbGciOiJIUzI1Ni...'"
🚀 Integração em CI/CD (GitHub Actions Workflow)
name: DAST Dynamic Security Scan (OWASP ZAP)
on:
schedule:
- cron: '0 2 * * *' # Execução noturna diária às 02:00
workflow_dispatch:
jobs:
dast_scan:
name: OWASP ZAP Full Scan
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Create Reports Directory
run: mkdir -p reports
- name: Run OWASP ZAP Automation Plan
uses: zaproxy/action-full-scan@v0.12.0
with:
target: 'https://staging.empresa.com'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'
- name: Upload ZAP HTML Report
if: always()
uses: actions/upload-artifact@v4
with:
name: zap-scan-report
path: report_html.html
🔗 Integração com Outras Skills do Repositório
- dast-application-testing: Teoria e metodologia formal de Testes Dinâmicos de Segurança de Aplicações.
- pentester-owasp-wstg: Aplicação do ZAP em conjunto com a metodologia de pentest OWASP WSTG.
- program-containers: Execução segura de contêineres Docker isolados em runners de CI/CD.
- devsecops-engineer: Gestão de Quality Gates e mitigação de vulnerabilidades DAST.