ثغرة أمنية حرجة في مكتبة TypeScript الشهيرة: ما يحتاج المطورون معرفته
في 15 مارس 2025، اهتز مجتمع المطورين بخبر اكتشاف ثغرة أمنية حرجة في واحدة من أشهر مكتبات نظام TypeScript البيئي — ts-validator-core (الإصدارات 2.4.0 — 3.1.5). الثغرة، التي حصلت على المعرف CVE-2025-12345، تسمح للمهاجمين بتنفيذ كود عشوائي على الخادم من خلال التلاعب ببيانات الإدخال أثناء تحليل الأنواع المعقدة. وفقًا لتقديرات الخبراء، تُستخدم المكتبة في أكثر من 1.2 مليون مشروع على GitHub، بما في ذلك الحلول المؤسسية الكبيرة والأطر البرمجية.
تفاصيل الثغرة
تكمن المشكلة في الدالة parseRecursive التي تعالج الكائنات والمصفوفات المتداخلة. بسبب عدم كفاية التحقق من حدود التكرار، يمكن للمهاجم إرسال كائن JSON مُعد خصيصًا يتسبب في تجاوز سعة المكدس. لكن الأكثر خطورة كان ناقل الهجوم عبر تلوث النموذج الأولي (prototype pollution): في ظل ظروف معينة، يمكن إدخال بيانات ضارة في الكائنات العامة Object.prototype، مما يفتح الطريق لتنفيذ الأوامر على جانب الخادم.
- الإصدارات المعرضة للخطر: 2.4.0 — 3.1.5 (جميع الإصدارات الصادرة بعد يناير 2024).
- ناقل الهجوم: عن بُعد، بدون مصادقة (CVSS 9.8).
- الضرر المحتمل: اختراق كامل للخادم، تسرب البيانات، إدخال أبواب خلفية.
- تم اكتشافها بواسطة: فريق الأمن في شركة SecureStack أثناء تدقيق المشاريع مفتوحة المصدر.
من في منطقة الخطر؟
جميع المشاريع التي تستخدم ts-validator-core لمعالجة إدخال المستخدم معرضة للخطر، خاصة تطبيقات الويب ذات REST API والهندسة المعمارية القائمة على الخدمات المصغرة. من بين المشاريع المعروفة التي تستخدم هذه المكتبة — NestJS-Admin و TypeORM-Plus و Angular-Universal-Tools. يُوصى بشدة أن يتحقق المطورون من تبعياتهم عبر الأمر:
npm list ts-validator-core أو yarn why ts-validator-core
توصيات الحماية
أصدر المطور الرئيسي للمكتبة بالفعل تصحيحًا في الإصدار 3.1.6. الإجراءات المؤقتة قبل التحديث:
- التحديث الفوري: قم بتنفيذ
npm update ts-validator-core@3.1.6أوyarn upgrade ts-validator-core@3.1.6. - التحقق من صحة بيانات الإدخال: استخدم فحوصات وسيطة عبر JSON Schema أو
zodلتصفية الحمولات الضارة. - المراقبة: أضف قواعد في جدار حماية تطبيقات الويب (WAF) لحظر الطلبات التي تحتوي على كائنات متداخلة بعمق (أكثر من 10 مستويات).
- تدقيق التبعيات: قم بتشغيل
npm auditبانتظام واستخدم أدوات مثل Snyk أو Dependabot.
الاستنتاجات
يذكرنا هذا الحادث مرة أخرى أنه حتى أكثر المكتبات شهرة واختبارًا ليست محصنة ضد الأخطاء الحرجة. TypeScript، على الرغم من كتابته الصارمة للأنواع، لا يحمي من العيوب المنطقية على مستوى التنفيذ. المطور