Escaneo ZAP Basico - target-domain.example.com
Fecha: 2026-05-13 19:40 CEST Herramienta: OWASP ZAP (escaneo básico) Objetivo: https://target-domain.example.com Resultado general: LIMPIO — sin vulnerabilidades criticas ni altas
- Resumen
| Metrica | Valor |
|---|---|
| Peticiones totales | 18 |
| Alertas criticas | 0 |
| Alertas altas | 0 |
| Alertas medias | 8 |
| Alertas bajas | 1 |
| Codigos de respuesta | Todos 200 OK |
- Alertas medias (8) — Todas informativas / falsos positivos
1. Comentarios HTML en respuestas (6 recursos)
ZAP marca la presencia de comentarios HTML como severidad media.
Recursos afectados:
target-domain.example.com/(pagina principal, 23KB)fonts.gstatic.com/...ibmplexsans...woff2(x2)fonts.gstatic.com/...ibmplexmono...woff2
Evaluación: Los comentarios HTML son generados por Quartz al compilar el contenido. No exponen información sensible (no hay credenciales, rutas internas, ni configuración). Es comportamiento normal de un sitio estatico generado por SSG.
Accion: Ninguna requerida. Se puede considerar eliminar comentarios HTML del output de Quartz en builds de produccion si se quiere una superficie mas limpia en futuros escaneos.
2. Script vacio: prescript.js
- URL:
https://target-domain.example.com/prescript.js - Código: 200 OK
- Tamano del cuerpo: 0 bytes
Evaluación: Es un placeholder de Quartz que se carga antes del contenido principal. ZAP lo marca porque un script que devuelve 200 pero está vacio puede indicar configuración incorrecta. En este caso es intencional — Quartz genera este archivo vacio para la fase de pre-renderizado.
Accion: Ninguna requerida. Funcionamiento correcto de Quartz.
3. Script grande: postscript.js
- URL:
https://target-domain.example.com/postscript.js - Código: 200 OK
- Tamano del cuerpo: 113,933 bytes (111 KB)
Evaluación: ZAP marca scripts grandes como potencialmente analizables. Es el JavaScript compilado de Quartz que contiene toda la lógica del sitio (SPA navigation, explorer, search, darkmode, etc.). No es una vulnerabilidad.
Accion: Considerar minificacion mas agresiva o code splitting en futuras optimizaciones, pero no es un problema de seguridad.
4. CSS grande: index.css
- URL:
https://target-domain.example.com/index.css - Código: 200 OK
- Tamano del cuerpo: 39,569 bytes (39 KB)
Evaluación: Similar al postscript.js, ZAP marca recursos grandes. Es el CSS compilado de Quartz con todos los estilos del sitio.
Accion: Ninguna requerida.
5. Feed RSS externo: api.rss2json.com
- URL:
https://api.rss2json.com/v1/api.json?rss_url=...TheHackersNews - Código: 200 OK
- Tamano: 15,646 bytes
- Tags: JSON
Evaluación: ZAP marca llamadas a APIs externas. Está permitido en la CSP (connect-src incluye api.rss2json.com y api.codetabs.com). Es el feed de noticias del homepage.
Accion: Ninguna requerida. Dominio explicitamente permitido en CSP.
- Alerta baja (1) — Irrelevante
6. Extension de Firefox (newtab.xpi)
- URL:
https://archive.mozilla.org/pub/system-addons/newtab/newtab-151.4.0-build1/newtab.xpi - Tamano: 1,908,141 bytes (1.8 MB)
Evaluación: Esto es ZAP cargando una extension del navegador Firefox, no es trafico del sitio target-domain.example.com. Es un artefacto del escaneo, no una vulnerabilidad.
Accion: Ignorar completamente.
- Recursos estaticos cargados (sin alertas)
Los siguientes recursos se cargaron correctamente sin generar alertas:
katex@0.16.11/dist/contrib/copy-tex.min.js(1,673 bytes) — CDN jsdelivr con SRIkatex@0.16.11/dist/katex.min.css(23,335 bytes) — CDN jsdelivr con SRIstatic/contentIndex.json(548,024 bytes) — Indice de contenido del Explorerfonts.googleapis.com/css2?family=IBM+Plex+...(16,003 bytes) — Fuentes webapi.rss2json.com/...cisa.gov/news.xml(4,106 bytes) — Feed CISAapi.rss2json.com/...krebsonsecurity.com/feed/(91,204 bytes) — Feed Krebs
- CSP activa durante el escaneo
default-src 'self';
script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com;
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
font-src https://fonts.gstatic.com;
img-src 'self' data: https://example.com https://docs.example.com https://blogger.com https://bp.blogspot.com https://images.amazon.com;
connect-src 'self' https://api.rss2json.com https://api.codetabs.com;
frame-src 'none';
object-src 'none';
base-uri 'self';
form-action 'self';
upgrade-insecure-requests;
-
Headers de seguridad (inyectados por CF + _headers)
-
Content-Security-Policy: (ver arriba)
-
Cross-Origin-Opener-Policy: same-origin
-
Cross-Origin-Resource-Policy: same-site
-
X-Permitted-Cross-Domain-Policies: none
-
X-Download-Options: noopen
-
Referrer-Policy: strict-origin-when-cross-origin
-
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
-
X-Frame-Options, X-Content-Type-Options, Strict-Transport-Security, X-XSS-Protection: inyectados automáticamente por Cloudflare
- Conclusion
El escaneo básico de ZAP no revela vulnerabilidades explotables. Las 8 alertas medias son informativas (comentarios HTML, recursos grandes, APIs externas permitidas por CSP). La única alerta baja es un artefacto del navegador de ZAP.
Evaluación de seguridad del blog post-hardening: 8.5/10
Perdida de puntos por:
unsafe-inlineen script-src y style-src (necesario para Quartz, no eliminable sin refactor)- Comentarios HTML en output (informativo, no explotable)
- Mermaid sin SRI (usa dynamic import, no soporta integrity)
Recomendaciones futuras:
- Escaneo ZAP completo (active scan) para validar mas a fondo
- Considerar eliminación de comentarios HTML en produccion
- Considerar code splitting para reducir tamano de postscript.js