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
| Riesgo | Descripción | Acción Requerida |
|---|---|---|
| Alto | Vulnerabilidades críticas (SQL Injection, RCE) | Corregir inmediatamente |
| Medio | Problemas significativos (XSS, crypto débil) | Corregir antes del release |
| Bajo | Problemas 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
- OWASP ZAP Documentation — Guías oficiales de configuración, tipos de escaneo y referencia de API
- OWASP — OWASP Top 10, estándares de seguridad y recursos de la comunidad
- GraphQL Documentation
- OpenAPI Specification
- Swagger Documentation
See Also
- Burp Suite para Ingenieros QA: Guía Completa Testing Seguridad - Testing seguridad con Burp: configuración proxy, scanner,…
- Security Testing para QA: OWASP Top 10 - Vulnerabilidades OWASP Top 10 para QA: inyección, autenticación…
- API Security Testing: Guía Completa OAuth, JWT y API Keys - Testing seguridad APIs: flujos OAuth, validación JWT, gestión API…
- Grafana y Prometheus: Stack Completo de Monitoreo de Rendimiento - Stack de monitoreo: recolección de métricas con Prometheus,…
