Informe de muestra

Esto es lo que recibirás.

Un informe de ejemplo basado en un análisis real (todos los datos son ficticios).

oykli-informe-muestra.pdf
ejemplo.com — Análisis Standard
Muestra
10 de abril de 2026

Resumen ejecutivo

Este informe documenta el análisis de seguridad realizado sobre ejemplo.com entre el 8 y el 10 de abril de 2026. Hemos identificado 17 hallazgos en total, distribuidos en 4 niveles de severidad. El hallazgo crítico requiere atención inmediata: una vulnerabilidad de control de acceso permite a un usuario autenticado acceder a las facturas de cualquier otro cliente. Recomendamos seguir el orden de prioridad que detallamos en la sección "Próximos pasos" — desde el hallazgo crítico, que requiere atención en las próximas 48 horas, hasta los de menor severidad, que pueden abordarse en los próximos 30 días.

1
Crítico
3
Alto
5
Medio
8
Bajo

Alcance y metodología

El análisis cubrió la superficie pública de ejemplo.com, las funcionalidades autenticadas accesibles mediante un usuario de prueba estándar, y la API REST documentada en el Swagger proporcionado por el cliente. Se analizaron específicamente las áreas de gestión de facturas, panel de usuario, formularios de contacto y endpoints públicos.

Combinamos múltiples agentes de IA especializados en ciberseguridad con la supervisión y validación de un experto humano. Los agentes ejecutaron pruebas automatizadas para detectar vulnerabilidades comunes, errores de configuración y exposición de datos. El experto validó cada hallazgo manualmente, descartó falsos positivos y analizó casos específicos del contexto del cliente.

Hallazgos detallados

IDOR en /api/facturas/:id

CríticoCVSS 9.1
Descripción

El endpoint /api/facturas/:id no valida que el usuario autenticado tenga permiso para acceder al recurso solicitado. Cualquier usuario con sesión iniciada puede acceder a las facturas de otros clientes simplemente cambiando el ID en la URL.

Impacto

Un atacante autenticado podría descargar todas las facturas históricas del sistema, incluyendo datos personales (nombre, dirección, NIF), información de pago e historial de compras. Esto supone un riesgo grave de exposición de datos personales bajo el RGPD y podría resultar en sanciones regulatorias además del daño reputacional.

Pasos para reproducir
1. Iniciar sesión como usuario A (cliente legítimo)
2. Acceder a una factura propia: GET /api/facturas/12345
3. Modificar el ID en la URL: GET /api/facturas/12346
4. La respuesta devuelve la factura del cliente B sin error de autorización
Recomendación

Implementar comprobación de propiedad en el endpoint: validar que el user_id del usuario autenticado coincide con el user_id asociado a la factura solicitada antes de devolver los datos. Aplicar el mismo patrón a todos los endpoints que reciben IDs de recursos en la URL.

XSS almacenado en mensaje de soporte

AltoCVSS 7.4
Descripción

El campo "mensaje" del formulario de soporte no escapa correctamente el HTML enviado por el usuario. Un atacante puede inyectar código JavaScript que se ejecuta cuando un agente de soporte abre el ticket en el panel de administración.

Impacto

Un atacante puede secuestrar la sesión de un agente de soporte, robando cookies de autenticación y obteniendo acceso al panel de administración. En el peor escenario, esto podría escalar a control completo del sistema y de los datos de todos los clientes.

Pasos para reproducir
1. Crear un ticket de soporte con el mensaje: '<script>alert(document.cookie)</script>'
2. El agente de soporte abre el ticket en el panel de administración
3. El JavaScript se ejecuta en el contexto del agente, exponiendo sus cookies de sesión
Recomendación

Escapar todos los outputs de usuario en el HTML del panel de administración. Usar una librería de sanitización como DOMPurify o aplicar codificación HTML estándar al renderizar texto del usuario. Establecer una Content-Security-Policy estricta como defensa adicional.

JWT sin expiración

MedioCVSS 6.5
Descripción

Los tokens JWT generados por el endpoint /api/auth/login no incluyen el claim "exp" (expiration). Los tokens son válidos indefinidamente una vez emitidos, sin posibilidad de invalidación individual.

Impacto

Si un token es comprometido (mediante phishing, malware en el dispositivo del usuario, etc.), el atacante mantiene acceso al sistema permanentemente. No hay forma de invalidar el token sin rotar la clave de firma del JWT, lo cual cerraría sesión a todos los usuarios simultáneamente.

Pasos para reproducir
1. Hacer login a través de POST /api/auth/login
2. Capturar el token JWT en la respuesta
3. Decodificar el token (jwt.io)
4. Confirmar que falta el campo "exp"
5. Usar el token 30 días después: sigue siendo válido
Recomendación

Añadir un claim "exp" con un tiempo de vida razonable (15-60 minutos para tokens de acceso). Implementar un sistema de refresh tokens para sesiones de larga duración. Establecer una rotación periódica de la clave de firma del JWT.

Cabeceras de seguridad ausentes

BajoCVSS 4.3
Descripción

El servidor web no devuelve cabeceras de seguridad importantes en las respuestas HTTP: Content-Security-Policy, Strict-Transport-Security, X-Frame-Options y Referrer-Policy. Estas cabeceras son la primera línea de defensa contra varios tipos de ataques cliente.

Impacto

Aumenta el riesgo de ataques de clickjacking, XSS, downgrade a HTTP y filtración de información mediante el referrer. No son ataques directos pero reducen las defensas en profundidad y dejan al usuario expuesto a vectores de ataque que podrían mitigarse fácilmente.

Pasos para reproducir
1. Acceder a https://ejemplo.com con curl
2. Inspeccionar las cabeceras de respuesta: curl -I https://ejemplo.com
3. Verificar la ausencia de las cabeceras mencionadas
Recomendación

Configurar el servidor web (nginx/apache) o el proxy/CDN (Cloudflare, Vercel) para enviar las cabeceras de seguridad recomendadas. Validar la configuración usando securityheaders.com.

+ 13 hallazgos más en el informe completo, todos explicados con el mismo nivel de detalle.

Próximos pasos

Recomendamos abordar los hallazgos siguiendo este orden de prioridad:

  1. URGENTE — próximas 48 horas

    Aplicar la corrección del hallazgo crítico (IDOR en /api/facturas/:id). Mientras se aplica el fix, considerar limitar temporalmente el acceso a la API de facturas a través del WAF.

  2. ALTA PRIORIDAD — próxima semana

    Sanitizar el campo de mensajes de soporte para prevenir el XSS almacenado. Como medida preventiva, rotar todas las cookies de sesión activas del panel de administración.

  3. PRIORIDAD MEDIA — próximos 30 días

    Implementar expiración en JWTs (claim "exp") y considerar refresh tokens para sesiones de larga duración. Establecer una política de rotación de tokens.

  4. MEJORAS GENERALES — próximos 60 días

    Configurar las cabeceras de seguridad recomendadas (CSP, HSTS, X-Frame-Options, Referrer-Policy). Validar la configuración con securityheaders.com.

Si tienes dudas sobre cualquiera de las recomendaciones o necesitas ayuda priorizando los arreglos, responde al email del informe y te ayudamos.

¿Quieres un informe así para tu web?

Solicita tu auditoría ahora y recibe un informe así para tu web.

Informe de muestra — oykli