TL;DR — OWASP ZAP es el escáner de seguridad gratuito más descargado del mundo, con más de 10 millones de descargas. Esta guía cubre integración CI/CD, escaneo de API, políticas personalizadas, configuración de autenticación y reporting automatizado para equipos QA.

OWASP ZAP es la herramienta gratuita de testing de seguridad más popular del mundo, confiada por miles de organizaciones. Según las estadísticas del proyecto OWASP, ZAP ha sido descargado más de 10 millones de veces. Según una investigación de MarketsandMarkets, el mercado global de testing de seguridad de aplicaciones alcanzará los $10,4 mil millones en 2027, lo que hace que las habilidades de security testing sean cada vez más valiosas. Integrar ZAP en los pipelines CI/CD permite a los equipos detectar SQL injection, XSS y cabeceras inseguras antes de producción.

“ZAP en el pipeline CI/CD es innegociable para mí en cualquier proyecto. El baseline scan solo ya detecta cabeceras de seguridad faltantes y flags de cookies que los desarrolladores pasan por alto constantemente. Se configura en 15 minutos y previene clases enteras de vulnerabilidades.” — Yuri Kan, Senior QA Lead

¿Qué es OWASP ZAP?

OWASP (como se discute en Penetration Testing Basics for QA Testers) Zed Attack Proxy (ZAP) es la herramienta gratuita de pruebas de seguridad más popular del mundo, mantenida activamente por la comunidad OWASP. Para ingenieros QA, ZAP proporciona escaneo de seguridad automatizado para detectar vulnerabilidades como SQL (como se discute en Security Testing for QA: A Practical Guide) injection, XSS y configuraciones inseguras antes de llegar a producción.

¿Por qué ZAP para QA?

  • Gratis y Open Source - Sin costos de licencia, acceso completo a características
  • Fácil de Automatizar - CLI, Docker, APIs para integración CI/CD
  • Escaneo Integral - Escaneo activo/pasivo, spidering, fuzzing
  • Testing de API - Soporte OpenAPI/Swagger, testing GraphQL
  • Reporting Extenso - Reportes HTML, JSON, XML con guía de remediación
  • Comunidad Activa - Actualizaciones regulares, plugins, marketplace

Modos de Escaneo ZAP

1. Escaneo Pasivo

Analiza tráfico HTTP sin enviar solicitudes adicionales. Seguro para ejecutar en producción.

# Iniciar ZAP en modo daemon
docker run -u zap -p 8080:8080 owasp/zap2docker-stable zap.sh -daemon \
  -host 0.0.0.0 -port 8080 -config api.disablekey=true

# Acceder target a través de proxy ZAP
curl -x http://localhost:8080 https://example.com

# Generar reporte escaneo pasivo
curl "http://localhost:8080/JSON/core/action/jsonreport/"

Escaneo Pasivo Detecta:

  • Headers de seguridad faltantes (CSP, X-Frame-Options, HSTS)
  • Cookies inseguras (falta HttpOnly, flags Secure)
  • Divulgación de información (stack traces, comentarios en código)
  • Librerías y frameworks desactualizados

2. Escaneo Activo

Envía payloads de ataque para encontrar vulnerabilidades. Solo usar en targets autorizados.

# Spider target para descubrir URLs
docker run owasp/zap2docker-stable zap-baseline.py \
  -t https://example.com \
  -r report.html

# Escaneo activo completo
docker run owasp/zap2docker-stable (como se discute en [SQL Injection and XSS: Finding Vulnerabilities](/es/blog/sql-injection-xss)) zap-full-scan.py \
  -t https://example.com \
  -r full-report.html \
  -z "-config api.disablekey=true"

Escaneo Activo Detecta:

  • SQL Injection
  • Cross-Site Scripting (XSS)
  • Path Traversal
  • Remote Code Execution
  • XML External Entity (XXE)
  • Server-Side Request Forgery (SSRF)

3. Escaneo de API

Probar REST APIs usando especificaciones OpenAPI/Swagger.

# Importar spec OpenAPI y escanear
docker run -v $(pwd):/zap/wrk:rw owasp/zap2docker-stable \
  zap-api-scan.py \
  -t https://api.example.com \
  -f openapi \
  -d /zap/wrk/openapi.json \
  -r /zap/wrk/api-report.html

Integración CI/CD

GitHub Actions

# .github/workflows/security-scan.yml
name: OWASP ZAP Security Scan

on:
  pull_request:
    branches: [main]

jobs:
  zap_scan:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v3

      - name: Build application
        run: docker-compose up -d

      - name: ZAP Baseline Scan
        uses: zaproxy/action-baseline@v0.7.0
        with:
          target: 'http://localhost:3000'
          rules_file_name: '.zap/rules.tsv'

      - name: Upload ZAP Report
        uses: actions/upload-artifact@v3
        with:
          name: zap-report
          path: report_html.html

Políticas de Escaneo Personalizadas

Configuración rules.tsv

# Ignorar falsos positivos
10021	IGNORE	(CSP: Wildcard Directive)
10038	IGNORE	(Content Security Policy Header Not Set)

# Fallar en vulnerabilidades específicas
40012	FAIL	(Cross Site Scripting - Reflected)
90018	FAIL	(SQL Injection)

# Advertir en severidad media
10054	WARN	(Cookie Without SameSite Attribute)

Interpretar Resultados

Niveles de Riesgo

RiesgoDescripciónAcción Requerida
AltoVulnerabilidades críticas (SQL Injection, RCE)Corregir inmediatamente
MedioProblemas significativos (XSS, crypto débil)Corregir antes del release
BajoProblemas menores (headers faltantes)Corregir cuando sea posible

Vulnerabilidades Comunes y Correcciones

SQL Injection:

# Vulnerable
query = f"SELECT * FROM users WHERE id = {user_input}"

# Corregido - Usar consultas parametrizadas
cursor.execute("SELECT * FROM users WHERE id = ?", (user_input,))

XSS:

// Vulnerable
document.getElementById('output').innerHTML = userInput;

// Corregido - Escapar salida
document.getElementById('output').textContent = userInput;

Headers de Seguridad Faltantes:

# Añadir a nginx.conf
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self'";

Conclusión

OWASP ZAP es esencial para integrar pruebas de seguridad en flujos de trabajo QA. Desde escaneos CI/CD automatizados hasta testing integral de API, ZAP ayuda a identificar vulnerabilidades temprano cuando son más económicas de corregir.

Conclusiones Clave:

  • Comenzar con escaneos baseline en CI/CD
  • Usar escaneo pasivo para monitoreo de producción
  • Implementar políticas personalizadas para tu tolerancia al riesgo
  • Automatizar autenticación para escaneo autenticado
  • Rastrear vulnerabilidades en el tiempo
  • Corregir problemas altos/críticos inmediatamente

Preguntas Frecuentes

¿Qué es OWASP ZAP y es gratuito? OWASP ZAP es un escáner de seguridad web gratuito y open-source mantenido por OWASP. Proporciona escaneo activo/pasivo, testing de API e integración CI/CD sin costo alguno.

¿Cuál es la diferencia entre baseline scan y full scan? El baseline scan ejecuta solo escaneo pasivo—seguro para producción. El full scan agrega ataques activos para encontrar SQL injection, XSS y más. Usá baseline para monitoreo, full scan solo en staging.

¿Cómo integro OWASP ZAP en GitHub Actions? Usá la action oficial zaproxy/action-baseline o zaproxy/action-full-scan. Apuntala a la URL de tu app y configurá un archivo rules.tsv para suprimir falsos positivos.

¿Puede OWASP ZAP testear REST APIs? Sí. ZAP tiene un modo de escaneo de API que importa specs OpenAPI/Swagger y testea automáticamente todos los endpoints con zap-api-scan.py o la librería Python zapv2.

Recursos Oficiales

See Also