VibeSense

VibeSense Security Audit

Reporte de Auditoría de Seguridad · v2.0

Proyecto: Luma-dev

Fecha: 5/3/2026, 8:34:16 p.m.

Motor: Semgrep + Gitleaks + Claude AI

10 / 100

🚨 Crítico

Grade: F

1431 hallazgos totales en 25 archivos · 12 tipos de vulnerabilidades

🧪 PENTEST
VULNERABILIDADES CRÍTICAS
32
🔴 Críticos
1309
🟡 Advertencias
90
🔵 Informativos
0
🔑 Secretos
25
📁 Archivos
12
⚡ Tipos

📊 OWASP Top 10 — Categorías Afectadas

📈 Historial de Score — Luma-dev

🛡️ Análisis por Categoría OWASP Top 10:2021
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

🔍 Hallazgos de Seguridad
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
  • /src/src/App.tsx : L82
  • /src/src/App.tsx : L111
  • /src/src/App.tsx : L112
  • /src/src/App.tsx : L119
  • /src/src/App.tsx : L121
  • /src/src/App.tsx : L123
  • /src/src/App.tsx : L125
  • /src/src/App.tsx : L127
  • /src/src/App.tsx : L135
  • /src/src/App.tsx : L137
🟡 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
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L151
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L151
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L170
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L185
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L198
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L214
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L244
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L274
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L290
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L294
🛠 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:

  1. Usar crypto.timingSafeEqual() para comparar tokens y hashes.
  2. Convertir ambos strings a Buffer antes de comparar.
  3. Nunca comparar tokens JWT o API keys con === o ==.
  4. Para contraseñas, usar bcrypt.compare() que ya es timing-safe.

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
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L616
  • /src/src/components/ABClogistica/Operaciones/ChecklistDescargasModal.tsx : L103
  • /src/src/components/ABClogistica/Operaciones/ChecklistModal.tsx : L133
  • /src/src/components/ABClogistica/Operaciones/Descargas.tsx : L396
  • /src/src/components/ABClogistica/Operaciones/Descargas.tsx : L508
  • /src/src/components/ABClogistica/Operaciones/Embarques.tsx : L375
  • /src/src/components/ABClogistica/Operaciones/Embarques.tsx : L484
  • /src/src/components/ABClogistica/Operaciones/Embarques.tsx : L2224
  • /src/src/components/ABClogistica/Operaciones/Embarques.tsx : L2247
  • /src/src/components/ABClogistica/SAC/ConfiguracionesSAC.tsx : L201
🟡 WARNING 20 A03:2021-Injection CWE-1321
Asignación con propiedad dinámica puede contaminar __proto__
📁 10 archivos afectados
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L937
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L951
  • /src/src/components/ABClogistica/Operaciones/ChecklistDescargasModal.tsx : L167
  • /src/src/components/ABClogistica/Operaciones/DashboardDescargas.tsx : L308
  • /src/src/components/ABClogistica/Operaciones/DashboardDescargas.tsx : L322
  • /src/src/components/ABClogistica/Operaciones/DashboardEmbarques.tsx : L286
  • /src/src/components/ABClogistica/Operaciones/DashboardEmbarques.tsx : L298
  • /src/src/components/BBVA/CreateActividadBBVAModal.tsx : L51
  • /src/src/components/BBVA/CreateFolioModal.tsx : L104
  • /src/src/components/BBVA/Inbound.tsx : L239
🟡 WARNING
HIGH
104 A02:2021
Variable de entorno usada en frontend (posible exposición)
📁 10 archivos afectados
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L58
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L59
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L60
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L61
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L62
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L9
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L10
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L11
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L12
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L13
🛠 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:

  1. Solo exponer variables con prefijo público (VITE_PUBLIC_*, REACT_APP_PUBLIC_*).
  2. Nunca colocar secretos, tokens privados ni credenciales en el frontend.
  3. Mover toda lógica sensible al backend.
  4. Auditar el bundle de producción para verificar exposición.
  5. Usar un proxy backend para llamadas a APIs externas.

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
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L74
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L22
  • /src/src/services/ABClogisticaServices/bbva.modal.sac.service.cjs : L29
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L22
  • /src/src/services/ABClogisticaServices/conversacionesSAC.service.cjs : L174
  • /src/src/services/ABClogisticaServices/descargas.service.cjs : L8
  • /src/src/services/ABClogisticaServices/distribucion.service.cjs : L8
  • /src/src/services/ABClogisticaServices/embarques.service.cjs : L8
  • /src/src/services/ABClogisticaServices/folios-dispatcher.service.cjs : L29
  • /src/src/services/ABClogisticaServices/folios.sac.service.cjs : L9
🛠 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:

  1. Validar autenticación verificando ctx.meta.user.
  2. Usar middlewares de autorización globales en el broker.
  3. Definir visibility: 'protected' o 'private' en acciones sensibles.
  4. Separar acciones públicas de privadas explícitamente.

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
  • /src/src/services/api.service.cjs : L12
  • /src/src/services/api.service.cjs : L24
🛠 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:

  1. Definir whitelist explícita con las rutas permitidas.
  2. Usar aliases para mapear rutas HTTP a acciones específicas.
  3. Marcar acciones internas con visibility: 'protected' o 'private'.
  4. Revisar periódicamente qué acciones están expuestas en el gateway.
  5. Implementar el hook authorize() para verificar permisos por ruta.

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
  • /src/src/services/api.service.cjs : L15
🔵 INFO 1 A05:2021-Security-Misconfiguration CWE-755
JSON.parse sin try/catch puede crashear la aplicación con input malformado
📁 1 archivo afectado
  • /src/src/App.tsx : L57
🔵 INFO 89 A01:2021-Broken-Access-Control CWE-285
fetch() a API interna sin header de Authorization — petición no autenticada
📁 10 archivos afectados
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L378
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L408
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L552
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L571
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L607
  • /src/src/components/ABClogistica/Distribucion/Distribucion.tsx : L653
  • /src/src/components/ABClogistica/Huawei/CreateFolioHuaweiModal.tsx : L183
  • /src/src/components/ABClogistica/Huawei/CreateFolioHuaweiModal.tsx : L218
  • /src/src/components/ABClogistica/Huawei/CreateFolioHuaweiModal.tsx : L322
  • /src/src/components/ABClogistica/Huawei/Pernocta&Resguardo.tsx : L217
🔴 ERROR
HIGH
14 A03:2021-Injection CWE-20
Action Moleculer sin schema params definido — sin validación de tipos ni restricciones
📁 10 archivos afectados
  • /src/src/services/ABClogisticaServices/InboundArrival.service.cjs : L74
  • /src/src/services/ABClogisticaServices/actividades.wms.service.cjs : L22
  • /src/src/services/ABClogisticaServices/bbva.modal.sac.service.cjs : L29
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L22
  • /src/src/services/ABClogisticaServices/conversacionesSAC.service.cjs : L174
  • /src/src/services/ABClogisticaServices/descargas.service.cjs : L8
  • /src/src/services/ABClogisticaServices/distribucion.service.cjs : L8
  • /src/src/services/ABClogisticaServices/embarques.service.cjs : L8
  • /src/src/services/ABClogisticaServices/folios-dispatcher.service.cjs : L29
  • /src/src/services/ABClogisticaServices/folios.sac.service.cjs : L9
🛠 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:

  1. Definir params schema en cada action con tipos y restricciones.
  2. Usar $$strict: true para rechazar campos no definidos en el schema.
  3. Usar $$root: true para schemas de tipo primitivo en la raíz.
  4. Especificar min/max para strings y números.
  5. Marcar campos opcionales con optional: true explícitamente.

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
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L107
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L131
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L155
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L179
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L203
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L237
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L269
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L300
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L340
  • /src/src/services/ABClogisticaServices/config.sacops.service.cjs : L365
🛠 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:

  1. Definir schema params en cada action con tipos y restricciones.
  2. Usar FastestValidator o Zod para validación estricta.
  3. Rechazar parámetros no definidos en el esquema ($$strict: true).
  4. Sanitizar datos de entrada antes de procesarlos.

Ejemplo de código:

params: { id: 'number|positive', name: 'string|min:3|max:100', $$strict: true }

🎯 Vector de Pentest: Mass Assignment, Parameter Pollution

🔑 Secretos y Credenciales Expuestas (Gitleaks)
Severidad Tipo Archivo : Línea Descripción Preview
✅ No se detectaron secretos expuestos

🤖 Análisis Inteligente

Powered by Claude

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.

✅ Tracker de Remediaciones

Registra el estado de cada remediación aplicada. Los datos se guardan en el navegador.

WARNING A01:2021-Broken-Access-Control
Ruta protegida sin componente PrivateRoute o guard de autenticación

29 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A07:2021-Identification-Auth-Failures
Comparación de secretos con === — vulnerable a Timing Attack, usar crypto.timingSafeEqual

1091 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A03:2021-Injection
setTimeout/setInterval con string en lugar de función — eval implícito

48 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A03:2021-Injection
Asignación con propiedad dinámica puede contaminar __proto__

20 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A02:2021
Variable de entorno usada en frontend (posible exposición)

104 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A01:2021
Action Moleculer expuesta sin autenticación

14 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A01:2021-Broken-Access-Control
API Gateway sin whitelist de rutas — todas las acciones expuestas por defecto

2 ocurrencias en 2 archivo(s)

⏳ Pendiente
WARNING A05:2021-Security-Misconfiguration
API Gateway con CORS abierto a todos los orígenes

1 ocurrencias en 1 archivo(s)

⏳ Pendiente
ERROR A03:2021-Injection
Action Moleculer sin schema params definido — sin validación de tipos ni restricciones

14 ocurrencias en 10 archivo(s)

⏳ Pendiente
ERROR A03:2021
ctx.params usado sin validación explícita

18 ocurrencias en 10 archivo(s)

⏳ Pendiente
📋 Histórico de Auditorías
Fecha Proyecto Score Estado Críticos Secretos Reporte