PT-2026-28569
CVE-2026-33937
·
تاريخ النشر
2026-03-26
·
تاريخ التحديث
2026-10-30
الوصف من
CVSS 2.0
10
حرجةالمقاييسAV:N/AC:L/Au:N/C:C/I:C/A:C
اسم البرنامج المعرض للخطر والإصدارات المتأثرة
إصدارات Handlebars من 4.0.0 إلى 4.7.8
الوصف
يسمح Handlebars بتنفيذ التعليمات البرمجية عن بُعد (RCE) من خلال كائن شجرة الصياغة المجردة (AST) المصمم خصيصًا. تقبل الدالة
Handlebars.compile() إما سلسلة قالب أو شجرة AST تم تحليلها مسبقًا. عند توفير شجرة AST، يتم إرسال الحقل value الخاص بعقدة NumberLiteral في شجرة AST مباشرةً إلى JavaScript الذي تم إنشاؤه دون تنقية مناسبة. وهذا يسمح للمهاجم الذي يمكنه تزويد compile() بكائن AST مُصمم خصيصًا بحقن وتنفيذ كود JavaScript تعسفي على الخادم. يقع مسار الكود المعرض للخطر في lib/handlebars/compiler/javascript-compiler.js، حيث تُلحق قيم NumberLiteral بالكود المُنشأ دون إجراء عملية الهروب. أي نقطة نهاية تقوم بإلغاء تسلسل JSON الذي يتحكم فيه المستخدم وتمرر النتيجة مباشرةً إلى Handlebars.compile() تكون عرضة للاستغلال. يمكن للمهاجم استغلال هذا لتنفيذ أوامر على الخادم، كما يتضح من إثبات المفهوم الذي يستخدم process.getBuiltinModule(’child process‘).execFileSync(’id‘) لتنفيذ الأمر ’id‘.التوصيات
تتأثر إصدارات Handlebars الأقدم من 4.7.9 بهذه الثغرة.
تحقق من نوع المدخلات قبل استدعاء
Handlebars.compile(): تأكد من أن الوسيطة هي دائمًا string، وليست أبدًا كائنًا عاديًا أو قيمة تم فك تسلسلها من JSON.استخدم إصدار Handlebars المخصص لوقت التشغيل فقط (
handlebars/runtime) على الخادم إذا كانت القوالب مُجمَّعة مسبقًا في وقت البناء؛ حيث لن تكون compile() متاحة.قابلية الاستغلال
استغلال
إصلاح
التأثيرات
المورّدون
المنتجات المتأثرة
وجدت خطأً في الوصف؟ لديك ما تضيفه؟ لا تتردد في مراسلتنا 👾