VibeSense

VibeSense Security Audit

Reporte de Auditoría de Seguridad · v2.0

Proyecto: PAGWEB_InglesYa

Fecha: 5/3/2026, 6:42:44 p.m.

Motor: Semgrep + Gitleaks + Claude AI

10 / 100

🚨 Crítico

Grade: F

17346 hallazgos totales en 52 archivos · 22 tipos de vulnerabilidades

🧪 PENTEST
VULNERABILIDADES CRÍTICAS
728
🔴 Críticos
16345
🟡 Advertencias
258
🔵 Informativos
15
🔑 Secretos
52
📁 Archivos
22
⚡ Tipos

📊 OWASP Top 10 — Categorías Afectadas

📈 Historial de Score — PAGWEB_InglesYa

🛡️ Análisis por Categoría OWASP Top 10:2021
A07:2021-Identification-Auth-Failures 9934

A07:2021-Identification-Auth-Failures

A03:2021-Injection 5421

A03:2021-Injection

A01:2021-Broken-Access-Control 1015

A01:2021-Broken-Access-Control

A05:2021-Security-Misconfiguration 878

A05:2021-Security-Misconfiguration

A02:2021 41

Cryptographic Failures

A03:2021 37

Injection

A01:2021 18

Broken Access Control

A02:2021-Cryptographic-Failures 2

A02:2021-Cryptographic-Failures

🔍 Hallazgos de Seguridad
Severidad Cantidad Vulnerabilidad · Detalle · Mitigación
🟡 WARNING
HIGH
865 A01:2021-Broken-Access-Control CWE-285
API Gateway sin whitelist de rutas — todas las acciones expuestas por defecto
📁 10 archivos afectados
  • /src/ingles-ya/moleculer.config.js : L161
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-line.init.js : L822
  • /src/ingles-ya/pages/assets/js/pages/plugins/lord-icon-2.1.0.js : L1
  • /src/ingles-ya/pages/assets/js/pages/plugins/lord-icon-2.1.0.js : L1
  • /src/ingles-ya/pages/assets/js/pages/plugins/lord-icon-2.1.0.js : L1
  • /src/ingles-ya/pages/assets/js/pages/plugins/lord-icon-2.1.0.js : L1
  • /src/ingles-ya/pages/assets/libs/gmaps/lib/gmaps.geometry.js : L16
  • /src/ingles-ya/pages/assets/libs/gmaps/lib/gmaps.routes.js : L71
  • /src/ingles-ya/pages/assets/libs/gmaps/lib/gmaps.routes.js : L100
  • /src/ingles-ya/pages/assets/libs/gmaps/lib/gmaps.routes.js : L159
🛠 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
MEDIUM
9934 A07:2021-Identification-Auth-Failures CWE-208
Comparación de secretos con === — vulnerable a Timing Attack, usar crypto.timingSafeEqual
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L116
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L143
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L181
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L255
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L266
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L277
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L288
  • /src/ingles-ya/pages/assets/classes/Drawer.js : L20
  • /src/ingles-ya/pages/assets/classes/Drawer.js : L25
  • /src/ingles-ya/pages/assets/classes/Drawer.js : L25
🛠 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 266 A03:2021-Injection CWE-95
setTimeout/setInterval con string en lugar de función — eval implícito
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/js/app.js : L1122
  • /src/ingles-ya/pages/assets/js/app.js : L1704
  • /src/ingles-ya/pages/assets/js/app.js : L1712
  • /src/ingles-ya/pages/assets/js/app.js : L1797
  • /src/ingles-ya/pages/assets/js/app.js : L2015
  • /src/ingles-ya/pages/assets/js/pages/api-key.init.js : L206
  • /src/ingles-ya/pages/assets/js/pages/api-key.init.js : L223
  • /src/ingles-ya/pages/assets/js/pages/apps-nft-auction.init.js : L68
  • /src/ingles-ya/pages/assets/js/pages/apps-nft-auction.init.js : L72
  • /src/ingles-ya/pages/assets/js/pages/apps-nft-auction.init.js : L76
🟡 WARNING 4443 A03:2021-Injection CWE-1321
Asignación con propiedad dinámica puede contaminar __proto__
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/js/app.js : L1872
  • /src/ingles-ya/pages/assets/js/app.js : L1884
  • /src/ingles-ya/pages/assets/js/app.js : L1885
  • /src/ingles-ya/pages/assets/js/app.js : L1886
  • /src/ingles-ya/pages/assets/js/app.js : L1887
  • /src/ingles-ya/pages/assets/js/app.js : L1888
  • /src/ingles-ya/pages/assets/js/app.js : L1889
  • /src/ingles-ya/pages/assets/js/app.js : L1890
  • /src/ingles-ya/pages/assets/js/app.js : L1891
  • /src/ingles-ya/pages/assets/js/app.js : L1892
🟡 WARNING 14 A01:2021-Broken-Access-Control CWE-601
window.location con datos sin validar — posible Open Redirect
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/js/pages/invoicecreate.init.js : L556
  • /src/ingles-ya/pages/assets/libs/toastify-js/src/toastify-es.js : L312
  • /src/ingles-ya/pages/assets/libs/toastify-js/src/toastify.js : L234
  • /src/ingles-ya/pages/helpers/alerts.js : L83
  • /src/ingles-ya/pages/js/cambio-contra.js : L2
  • /src/ingles-ya/pages/js/cambio-contra.js : L93
  • /src/ingles-ya/pages/js/client-login.js : L362
  • /src/ingles-ya/pages/js/client_session.js : L33
  • /src/ingles-ya/pages/js/client_session.js : L115
  • /src/ingles-ya/pages/js/client_session.js : L482
🟡 WARNING 21 A03:2021-Injection CWE-1321
Object.assign con datos externos puede contaminar el prototipo
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/js/pages/plugins/lord-icon-2.1.0.js : L1
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.cjs : L563
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.cjs : L995
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.cjs : L3123
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.cjs : L3125
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.cjs : L3857
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.cjs : L10440
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.js : L561
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.js : L993
  • /src/ingles-ya/pages/assets/libs/chart.js/chart.js : L3121
🟡 WARNING 753 A05:2021-Security-Misconfiguration CWE-1333
RegExp construido con input del usuario — posible ReDoS
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/libs/choices.js/src/scripts/choices.ts : L210
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ac.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ac.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ac.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ad.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ad.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ad.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ae.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ae.js : L35
  • /src/ingles-ya/pages/assets/libs/cleave.js/addons/cleave-phone.ae.js : L35
🟡 WARNING
HIGH
1 A02:2021-Cryptographic-Failures CWE-312
Datos sensibles (token/password/secret) en localStorage — accesible por XSS
📁 1 archivo afectado
  • /src/ingles-ya/pages/js/login.js : L101
🛠 Mitigación recomendada — Tokens JWT en localStorage — accesibles por XSS

⚠️ Riesgo: localStorage es accesible por cualquier JavaScript en la página, incluyendo scripts de terceros y payloads XSS. Un token robado permite impersonar al usuario.

Pasos de remediación:

  1. Almacenar tokens en cookies httpOnly + Secure + SameSite=Strict.
  2. Si DEBE usar localStorage, implementar una CSP estricta para reducir el riesgo de XSS.
  3. Considerar el patrón 'BFF' (Backend for Frontend) para manejo de tokens.
  4. Usar tokens de corta duración y refresh tokens rotativos.
  5. Nunca almacenar contraseñas o información sensible en localStorage.

Ejemplo de código:

// Correcto — cookie httpOnly (se maneja desde el backend)
res.cookie('token', jwt, {
  httpOnly: true,
  secure: true,
  sameSite: 'strict',
  maxAge: 3600000
});

// Incorrecto
localStorage.setItem('token', jwt);

🎯 Vector de Pentest: XSS Token Theft, Session Hijacking

🟡 WARNING
HIGH
1 A02:2021-Cryptographic-Failures CWE-312
Token JWT almacenado en localStorage — accesible por XSS, usar httpOnly cookie
📁 1 archivo afectado
  • /src/ingles-ya/pages/js/login.js : L101
🛠 Mitigación recomendada — Token JWT en localStorage (React/MoRe)

⚠️ Riesgo: En apps React con Moleculer API Gateway, el token localStorage es el principal vector de ataque post-XSS. Con el token, un atacante puede invocar cualquier action del gateway.

Pasos de remediación:

  1. Usar cookies httpOnly + Secure desde el API Gateway de Moleculer.
  2. Configurar el gateway para emitir Set-Cookie en lugar de retornar el token en el body.
  3. Usar el hook de autorización del gateway para leer el token desde la cookie.
  4. Si se usa localStorage por restricciones técnicas, implementar CSP estricta y refresh frecuente.

Ejemplo de código:

// En el API Gateway de Moleculer:
async login(ctx) {
  const token = await ctx.call('auth.generateToken', { userId });
  ctx.meta.$responseHeaders = {
    'Set-Cookie': `token=${token}; HttpOnly; Secure; SameSite=Strict; Path=/`
  };
  return { success: true };
}

🎯 Vector de Pentest: XSS Token Theft, Moleculer Action Abuse

🟡 WARNING
HIGH
18 A01:2021
Action Moleculer expuesta sin autenticación
📁 10 archivos afectados
  • /src/ingles-ya/services/admin_carrusel.service.js : L19
  • /src/ingles-ya/services/authProxy.service.js : L14
  • /src/ingles-ya/services/certificaciones.service.js : L20
  • /src/ingles-ya/services/clases_muestra.service.js : L16
  • /src/ingles-ya/services/clientLogin.service.js : L11
  • /src/ingles-ya/services/compra-certificado.service.js : L8
  • /src/ingles-ya/services/contactanos.service.js : L20
  • /src/ingles-ya/services/cursos.service.js : L115
  • /src/ingles-ya/services/db.service.js : L32
  • /src/ingles-ya/services/google.service.js : L149
🛠 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
26 A02:2021
Variable de entorno usada en frontend (posible exposición)
📁 10 archivos afectados
  • /src/ingles-ya/services/api.service.js : L21
  • /src/ingles-ya/services/authProxy.service.js : L7
  • /src/ingles-ya/services/authProxy.service.js : L8
  • /src/ingles-ya/services/authProxy.service.js : L9
  • /src/ingles-ya/services/contactanos.service.js : L165
  • /src/ingles-ya/services/db.service.js : L10
  • /src/ingles-ya/services/db.service.js : L11
  • /src/ingles-ya/services/db.service.js : L12
  • /src/ingles-ya/services/db.service.js : L13
  • /src/ingles-ya/services/db.service.js : L14
🛠 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 1 A05:2021-Security-Misconfiguration CWE-942
API Gateway con CORS abierto a todos los orígenes
📁 1 archivo afectado
  • /src/ingles-ya/services/api.service.js : L36
🟡 WARNING 2 A05:2021-Security-Misconfiguration CWE-770
Ruta POST sin rate limiting — expuesta a fuerza bruta y DoS
📁 2 archivos afectados
  • /src/ingles-ya/services/google.service.js : L104
  • /src/ingles-ya/services/google.service.js : L170
🔵 INFO 122 A05:2021-Security-Misconfiguration CWE-755
JSON.parse sin try/catch puede crashear la aplicación con input malformado
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/js/app.js : L67
  • /src/ingles-ya/pages/assets/js/app.js : L368
  • /src/ingles-ya/pages/assets/js/app.js : L856
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-area.init.js : L13
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-bar.init.js : L13
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-boxplot.init.js : L13
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-bubble.init.js : L14
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-candlestick.init.js : L14
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-column.init.js : L14
  • /src/ingles-ya/pages/assets/js/pages/apexcharts-funnel.init.js : L13
🔵 INFO 136 A01:2021-Broken-Access-Control CWE-285
fetch() a API interna sin header de Authorization — petición no autenticada
📁 10 archivos afectados
  • /src/ingles-ya/pages/helpers/methods.js : L4
  • /src/ingles-ya/pages/helpers/methods.js : L17
  • /src/ingles-ya/pages/helpers/methods.js : L28
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L117
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L200
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L394
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L400
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L416
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L495
  • /src/ingles-ya/pages/js/admin-carrusel2.js : L511
🔴 ERROR
HIGH
649 A03:2021-Injection CWE-79
innerHTML/outerHTML con datos sin sanitizar — DOM XSS
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L125
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L126
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L154
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L156
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L233
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L349
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L373
  • /src/ingles-ya/pages/assets/classes/AutoComplete.js : L388
  • /src/ingles-ya/pages/assets/js/app.js : L372
  • /src/ingles-ya/pages/assets/js/app.js : L375
🛠 Mitigación recomendada — innerHTML con datos sin sanitizar — DOM XSS

⚠️ Riesgo: Asignar contenido sin sanitizar a innerHTML permite DOM-based XSS que ejecuta en el contexto del usuario, pudiendo robar cookies, tokens o realizar acciones en su nombre.

Pasos de remediación:

  1. Usar textContent en lugar de innerHTML para texto plano.
  2. Si se necesita HTML, sanitizar con DOMPurify antes de asignar.
  3. Crear elementos DOM con createElement() y appendChild() en lugar de innerHTML.
  4. Implementar una Content Security Policy (CSP) como defensa en profundidad.

Ejemplo de código:

// Correcto — texto plano
element.textContent = userInput;

// Correcto — HTML sanitizado
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);

// Incorrecto
element.innerHTML = userInput;

🎯 Vector de Pentest: DOM XSS, Cookie Theft, Session Hijacking

🔴 ERROR 18 A03:2021-Injection CWE-79
insertAdjacentHTML con datos sin sanitizar — DOM XSS
📁 10 archivos afectados
  • /src/ingles-ya/pages/assets/js/app.js : L1162
  • /src/ingles-ya/pages/assets/js/pages/card.init.js : L17
  • /src/ingles-ya/pages/assets/js/pages/card.init.js : L36
  • /src/ingles-ya/pages/assets/js/pages/card.init.js : L56
  • /src/ingles-ya/pages/assets/js/pages/chat.init.js : L732
  • /src/ingles-ya/pages/assets/js/pages/chat.init.js : L831
  • /src/ingles-ya/pages/assets/js/pages/file-manager.init.js : L270
  • /src/ingles-ya/pages/assets/js/pages/job-grid-list.init.js : L54
  • /src/ingles-ya/pages/assets/js/pages/tasks-kanban.init.js : L124
  • /src/ingles-ya/pages/assets/js/pages/tasks-kanban.init.js : L166
🔴 ERROR
CRITICAL
1 A03:2021-Injection CWE-95
eval() ejecuta código arbitrario — nunca usar con datos externos
📁 1 archivo afectado
  • /src/ingles-ya/pages/assets/js/pages/plugins/lord-icon-2.1.0.js : L1
🛠 Mitigación recomendada — eval() con datos externos — Code Injection

⚠️ Riesgo: eval() ejecuta cualquier JavaScript como código. Con datos externos, un atacante puede ejecutar código arbitrario en el contexto del usuario.

Pasos de remediación:

  1. Eliminar completamente el uso de eval().
  2. Para JSON, usar JSON.parse() en lugar de eval().
  3. Para expresiones matemáticas, usar una librería segura o parsear manualmente.
  4. Configurar CSP con 'unsafe-eval' prohibido.
  5. Para plantillas dinámicas, usar un motor de templates seguro.

Ejemplo de código:

// Correcto
const data = JSON.parse(userInput);

// Incorrecto
const data = eval(userInput);

🎯 Vector de Pentest: XSS, Code Injection, Data Exfiltration

🔴 ERROR 3 A03:2021-Injection CWE-79
document.write() con datos dinámicos — DOM XSS
📁 3 archivos afectados
  • /src/ingles-ya/pages/assets/js/plugins.js : L12
  • /src/ingles-ya/pages/assets/js/plugins.js : L13
  • /src/ingles-ya/pages/assets/js/plugins.js : L14
🔴 ERROR 2 A03:2021-Injection CWE-95
new Function() equivale a eval() — posible inyección de código
📁 2 archivos afectados
  • /src/ingles-ya/pages/assets/libs/card/card.js : L1
  • /src/ingles-ya/pages/assets/libs/card/jquery.card.js : L1
🔴 ERROR
HIGH
18 A03:2021-Injection CWE-20
Action Moleculer sin schema params definido — sin validación de tipos ni restricciones
📁 10 archivos afectados
  • /src/ingles-ya/services/admin_carrusel.service.js : L19
  • /src/ingles-ya/services/authProxy.service.js : L14
  • /src/ingles-ya/services/certificaciones.service.js : L20
  • /src/ingles-ya/services/clases_muestra.service.js : L16
  • /src/ingles-ya/services/clientLogin.service.js : L11
  • /src/ingles-ya/services/compra-certificado.service.js : L8
  • /src/ingles-ya/services/contactanos.service.js : L20
  • /src/ingles-ya/services/cursos.service.js : L115
  • /src/ingles-ya/services/db.service.js : L32
  • /src/ingles-ya/services/google.service.js : L149
🛠 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
37 A03:2021
ctx.params usado sin validación explícita
📁 10 archivos afectados
  • /src/ingles-ya/services/admin_carrusel.service.js : L139
  • /src/ingles-ya/services/admin_carrusel.service.js : L295
  • /src/ingles-ya/services/certificaciones.service.js : L38
  • /src/ingles-ya/services/certificaciones.service.js : L495
  • /src/ingles-ya/services/certificaciones.service.js : L788
  • /src/ingles-ya/services/certificaciones.service.js : L824
  • /src/ingles-ya/services/clientLogin.service.js : L23
  • /src/ingles-ya/services/clientLogin.service.js : L28
  • /src/ingles-ya/services/clientLogin.service.js : L36
  • /src/ingles-ya/services/clientLogin.service.js : L60
🛠 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)
⚠️ Acción requerida: Se encontraron 15 secreto(s) expuesto(s). Rotar inmediatamente todas las credenciales detectadas.
Severidad Tipo Archivo : Línea Descripción Preview
HIGH generic-api-key ingles-ya/pages/assets/js/pages/leaflet-map.init.js : L12 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. pk.eyJ***
HIGH generic-api-key ingles-ya/pages/assets/js/pages/leaflet-map.init.js : L25 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. pk.eyJ***
HIGH generic-api-key ingles-ya/pages/assets/js/pages/leaflet-map.init.js : L57 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. pk.eyJ***
HIGH generic-api-key ingles-ya/pages/assets/js/pages/leaflet-map.init.js : L113 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. pk.eyJ***
HIGH generic-api-key ingles-ya/pages/assets/js/pages/leaflet-map.init.js : L162 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. pk.eyJ***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L6 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. fef670***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L14 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. ed4c0d***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L22 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. 0b53e8***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L30 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. b69ee2***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L38 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. 33ec3a***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L46 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. 845403***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L54 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. aecc1e***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L62 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. 8abba6***
HIGH generic-api-key ingles-ya/pages/assets/json/api-key-list.json : L70 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. 9e6d33***
HIGH generic-api-key ingles-ya/pages/assets/libs/quill/quill.min.js : L7 Detected a Generic API Key, potentially exposing access to various services and sensitive operations. e.defa***

🤖 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
API Gateway sin whitelist de rutas — todas las acciones expuestas por defecto

865 ocurrencias en 10 archivo(s)

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

9934 ocurrencias en 10 archivo(s)

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

266 ocurrencias en 10 archivo(s)

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

4443 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A01:2021-Broken-Access-Control
window.location con datos sin validar — posible Open Redirect

14 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A03:2021-Injection
Object.assign con datos externos puede contaminar el prototipo

21 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A05:2021-Security-Misconfiguration
RegExp construido con input del usuario — posible ReDoS

753 ocurrencias en 10 archivo(s)

⏳ Pendiente
WARNING A02:2021-Cryptographic-Failures
Datos sensibles (token/password/secret) en localStorage — accesible por XSS

1 ocurrencias en 1 archivo(s)

⏳ Pendiente
WARNING A02:2021-Cryptographic-Failures
Token JWT almacenado en localStorage — accesible por XSS, usar httpOnly cookie

1 ocurrencias en 1 archivo(s)

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

18 ocurrencias en 10 archivo(s)

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

26 ocurrencias en 10 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
WARNING A05:2021-Security-Misconfiguration
Ruta POST sin rate limiting — expuesta a fuerza bruta y DoS

2 ocurrencias en 2 archivo(s)

⏳ Pendiente
ERROR A03:2021-Injection
innerHTML/outerHTML con datos sin sanitizar — DOM XSS

649 ocurrencias en 10 archivo(s)

⏳ Pendiente
ERROR A03:2021-Injection
insertAdjacentHTML con datos sin sanitizar — DOM XSS

18 ocurrencias en 10 archivo(s)

⏳ Pendiente
ERROR A03:2021-Injection
eval() ejecuta código arbitrario — nunca usar con datos externos

1 ocurrencias en 1 archivo(s)

⏳ Pendiente
ERROR A03:2021-Injection
document.write() con datos dinámicos — DOM XSS

3 ocurrencias en 3 archivo(s)

⏳ Pendiente
ERROR A03:2021-Injection
new Function() equivale a eval() — posible inyección de código

2 ocurrencias en 2 archivo(s)

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

18 ocurrencias en 10 archivo(s)

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

37 ocurrencias en 10 archivo(s)

⏳ Pendiente
📋 Histórico de Auditorías
Fecha Proyecto Score Estado Críticos Secretos Reporte
05/03/2026 18:42 PAGWEB_InglesYa 10 (F) 🚨 Crítico 728 15 Ver
05/03/2026 18:25 PAGWEB_Beyserin26 88 (A) 🟢 Excelente 0 0 Ver
05/03/2026 18:21 SISTWEB_TrackIt_Back 10 (F) 🚨 Crítico 546 18 Ver
05/03/2026 16:57 SISTWEB_Masterlock 10 (F) 🚨 Crítico 508 15 Ver
05/03/2026 16:31 SISTWEB_ChecadorVLIM 10 (F) 🚨 Crítico 676 39 Ver
05/03/2026 16:16 SISTWEB_ChecadorVLIM 100 (A) 🟢 Excelente 0 0 Ver
03/03/2026 15:23 SISTWEB_Test 100 (A) 🟢 Excelente 0 0 Ver
03/03/2026 14:25 SISTWEB_HenP_26 100 (A) 🟢 Excelente 0 0 Ver
03/03/2026 14:10 TEST_Proyecto 100 (A) 🟢 Excelente 0 0 Ver