Reporte de Auditoría de Seguridad · v2.0
Grade: F
1431 hallazgos totales en 25 archivos · 12 tipos de vulnerabilidades
A07:2021-Identification-Auth-Failures
1091
A07:2021-Identification-Auth-Failures
A01:2021-Broken-Access-Control
120
A01:2021-Broken-Access-Control
A02:2021
104
Cryptographic Failures
A03:2021-Injection
82
A03:2021-Injection
A03:2021
18
Injection
A01:2021
14
Broken Access Control
A05:2021-Security-Misconfiguration
2
A05:2021-Security-Misconfiguration
| Severidad | Cantidad | Vulnerabilidad · Detalle · Mitigación |
|---|---|---|
| 🟡 WARNING | 29 |
A01:2021-Broken-Access-Control
CWE-285
Ruta protegida sin componente PrivateRoute o guard de autenticación 📁 10 archivos afectados
|
|
🟡 WARNING
MEDIUM |
1091 |
A07:2021-Identification-Auth-Failures
CWE-208
Comparación de secretos con === — vulnerable a Timing Attack, usar crypto.timingSafeEqual 📁 10 archivos afectados
🛠 Mitigación recomendada — Timing Attack en comparación de secretos⚠️ Riesgo: La comparación con === tiene tiempo variable según el punto de fallo, permitiendo a un atacante adivinar tokens o hashes bit a bit mediante análisis de tiempo de respuesta. Pasos de remediación:
Ejemplo de código: const crypto = require('crypto');
const expected = Buffer.from(process.env.API_TOKEN);
const received = Buffer.from(req.headers['x-api-key'] || '');
if (expected.length !== received.length || !crypto.timingSafeEqual(expected, received)) {
return res.status(401).json({ error: 'Unauthorized' });
}
🎯 Vector de Pentest: Timing Attack, Token Brute Force |
| 🟡 WARNING | 48 |
A03:2021-Injection
CWE-95
setTimeout/setInterval con string en lugar de función — eval implícito 📁 10 archivos afectados
|
| 🟡 WARNING | 20 |
A03:2021-Injection
CWE-1321
Asignación con propiedad dinámica puede contaminar __proto__ 📁 10 archivos afectados
|
|
🟡 WARNING
HIGH |
104 |
A02:2021
Variable de entorno usada en frontend (posible exposición) 📁 10 archivos afectados
🛠 Mitigación recomendada — Variable de entorno sensible expuesta en frontend⚠️ Riesgo: Las variables de entorno en frontend pueden exponer secretos, claves de API o configuración interna al cliente y a atacantes. Pasos de remediación:
Ejemplo de código: const apiUrl = import.meta.env.VITE_PUBLIC_API_URL; 🎯 Vector de Pentest: Client-Side Secret Extraction, Bundle Analysis |
|
🟡 WARNING
HIGH |
14 |
A01:2021
Action Moleculer expuesta sin autenticación 📁 10 archivos afectados
🛠 Mitigación recomendada — Action Moleculer expuesta sin autenticación⚠️ Riesgo: Acciones sin autenticación permiten acceso no autorizado a la lógica del sistema. Pasos de remediación:
Ejemplo de código: actions: { myAction: { visibility: 'protected', handler(ctx) { if (!ctx.meta.user) throw new MoleculerError('Unauthorized', 401); }}}
🎯 Vector de Pentest: Unauthorized API Access, Privilege Escalation |
|
🟡 WARNING
HIGH |
2 |
A01:2021-Broken-Access-Control
CWE-285
API Gateway sin whitelist de rutas — todas las acciones expuestas por defecto 📁 2 archivos afectados
🛠 Mitigación recomendada — API Gateway Moleculer sin whitelist de rutas⚠️ Riesgo: Sin whitelist, el gateway expone automáticamente todas las acciones de todos los servicios registrados, incluyendo acciones internas o de administración. Pasos de remediación:
Ejemplo de código: // Correcto
{
path: '/api',
whitelist: [
'users.login',
'users.register',
'products.list'
],
aliases: {
'POST /login': 'users.login',
'GET /products': 'products.list'
}
}
🎯 Vector de Pentest: Unauthorized API Access, Internal Action Exposure |
| 🟡 WARNING | 1 |
A05:2021-Security-Misconfiguration
CWE-942
API Gateway con CORS abierto a todos los orígenes 📁 1 archivo afectado
|
| 🔵 INFO | 1 |
A05:2021-Security-Misconfiguration
CWE-755
JSON.parse sin try/catch puede crashear la aplicación con input malformado 📁 1 archivo afectado
|
| 🔵 INFO | 89 |
A01:2021-Broken-Access-Control
CWE-285
fetch() a API interna sin header de Authorization — petición no autenticada 📁 10 archivos afectados
|
|
🔴 ERROR
HIGH |
14 |
A03:2021-Injection
CWE-20
Action Moleculer sin schema params definido — sin validación de tipos ni restricciones 📁 10 archivos afectados
🛠 Mitigación recomendada — Action Moleculer sin schema de validación⚠️ Riesgo: Sin schema, Moleculer acepta cualquier parámetro sin validar tipo, rango ni presencia. Permite mass assignment, inyección de datos y errores de lógica de negocio. Pasos de remediación:
Ejemplo de código: params: {
id: 'number|positive|integer',
name: 'string|min:2|max:100',
email: 'email',
role: { type: 'enum', values: ['user', 'admin'], optional: true },
$$strict: true
}
🎯 Vector de Pentest: Mass Assignment, Parameter Pollution, Business Logic Bypass |
|
🔴 ERROR
MEDIUM |
18 |
A03:2021
ctx.params usado sin validación explícita 📁 10 archivos afectados
🛠 Mitigación recomendada — ctx.params sin validación de esquema⚠️ Riesgo: La falta de validación permite inyección de datos, errores de negocio y acceso a campos no autorizados. Pasos de remediación:
Ejemplo de código: params: { id: 'number|positive', name: 'string|min:3|max:100', $$strict: true }
🎯 Vector de Pentest: Mass Assignment, Parameter Pollution |
| Severidad | Tipo | Archivo : Línea | Descripción | Preview |
|---|---|---|---|---|
| ✅ No se detectaron secretos expuestos | ||||
El agente IA analiza los hallazgos del proyecto y genera un reporte ejecutivo con contexto, priorización y recomendaciones de remediación específicas al stack detectado.
Registra el estado de cada remediación aplicada. Los datos se guardan en el navegador.
29 ocurrencias en 10 archivo(s)
1091 ocurrencias en 10 archivo(s)
48 ocurrencias en 10 archivo(s)
20 ocurrencias en 10 archivo(s)
104 ocurrencias en 10 archivo(s)
14 ocurrencias en 10 archivo(s)
2 ocurrencias en 2 archivo(s)
1 ocurrencias en 1 archivo(s)
14 ocurrencias en 10 archivo(s)
18 ocurrencias en 10 archivo(s)
| Fecha | Proyecto | Score | Estado | Críticos | Secretos | Reporte |
|---|