Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-12758 | Kitploit
أدوات/GitHubGitHub/open-flaw/cve-2025-12758
تحليل الثغرات الأمنيةتحليل الكودأمن الويبالأوراق والأبحاثالتعلم والتعليم
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

عرض المستودع
منذ 8 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2025-12758: تجاوز محدد التنويع الموحّد (Unicode Variation Selector) في الدالة isLength() من Validator.js

معرّف CVE: CVE-2025-12758
درجة CVSS: 8.7 (HIGH)
الحرجية: HIGH
CWE: CWE-792 (تصفية غير مكتملة لمثيل واحد أو أكثر من العناصر الخاصة)
تاريخ النشر: 26 نوفمبر 2025
تاريخ الإفصاح: 19 أكتوبر 2025

نظرة عامة على الثغرة

تؤثر هذه الثغرة على إصدارات حزمة validator npm الأصغر من 13.15.22. لا تراعي دالة isLength() محددات التنويع الموحّد في Unicode (\uFE0F, \uFE0E) عند حساب طول السلسلة النصية، مما يؤدي إلى تحقق غير سليم من المدخلات.

الأثر

يمكن لأي تطبيق يستخدم isLength() للتحقق من المدخلات قبول سلاسل نصية أطول بكثير من المقصود، مما قد يؤدي إلى:

  • اقتطاع البيانات في قواعد البيانات
  • تجاوز سعة المخزن المؤقت في مكونات النظام الأخرى
  • هجمات حجب الخدمة (DoS)
  • تجاوز التحقق من المدخلات

السبب الجذري

لا تقوم دالة isLength() بتصفية محددات التنويع الموحّد في Unicode بشكل صحيح عند حساب طول السلسلة النصية. لا ينبغي لهذه الأحرف الخاصة (علامات الدمج) أن تساهم في الطول المرئي للسلسلة، ولكنها تُحتسب ضمن خاصية String.length في JavaScript.

إثبات المفهوم

الإعداد

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

الكود البرمجي

يوضح إثبات المفهوم (POC) الثغرة من خلال اختبار دالة isLength():

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!

المخرجات

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

يوضح المخرج الثالث الثغرة: سلسلة نصية بطول فعلي 8 تجتاز فحص تحقق بحد أقصى للطول 4.

سيناريو الاستغلال

قد يقوم أحد التطبيقات بتنفيذ التحقق من تعليقات المستخدمين:

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

الإصلاح

الترقية إلى الإصدار 13.15.22 أو أحدث

root@kitploit:~
npm install [email protected]

يتعامل الإصدار المصحح مع محددات التنويع الموحّد في Unicode بشكل صحيح من خلال استبعادها من حسابات الطول.

إجراء تخفيفي بديل (مؤقت)

إذا تعذّر عليك الترقية فورًا، فنفّذ تحققًا مخصصًا من الطول:

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

المراجع

  • قاعدة بيانات الثغرات في Snyk: https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
  • GitHub Gist (الإثبات الأصلي): https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
  • GitHub PR (الإصلاح): https://github.com/validatorjs/validator.js/pull/2616
  • سجل CVE: https://www.cve.org/CVERecord?id=CVE-2025-12758

الاكتشاف

تحقق مما إذا كان تطبيقك معرضًا للخطر:

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

ابحث عن حزمة validator بإصدار أقل من 13.15.22.

الإشادة

اكتشف الثغرة: Karol Wrótniak

الترخيص

ISC

تنزيل الأداة