CVE-2026-92935 in vm2
الملخص
بحسب VulDB • 17/09/2026
vm2 هو بيئة معزولة (sandbox) لتشغيل كود Node.js غير موثوق به. في الإصدارات >= 3.11.4 و <= 3.11.6، يقوم مُنشئ `NodeVM` بحساب قيمة `hasRealRequireConfig` باستخدام التعبير `typeof requireOpts === 'object' && requireOpts !== null`. وبالتالي، فإن قيمة `require` ذات الشكل المصفوفي (على سبيل المثال `require: []`) تلبي الشرط الواقي الذي كان من المفترض أن يرفض التداخل دون تكوين صريح لـ `require`. بعد ذلك، تقوم الدالة `makeResolverFromLegacyOptions()` بفك هيكلة المصفوفة إلى حقول خيارات غير معرفة (`undefined`) وتُرجع مُحللاً يحتوي فقط على `NESTING_OVERRIDE.vm2`. ونتيجة لذلك، يمكن لمهاجم قادر على تزويد NodeVM المشغّل بكود JavaScript ومُهيأ بـ `nesting` ذات قيمة صحيحة (truthy) وقيمة `require` ذات شكل مصفوفي (مثل `new NodeVM({nesting: true, require: []})`) أن يستورد وحدة `vm2` الخاصة بالمضيف، وإنشاء NodeVM داخلي مع قائمة بيئية مسموحة يختارها المهاجم (مثل `child_process`)، وتنفيذ أوامر عشوائية بصلاحيات عملية Node.js للمضيف، مما يتيح له الهروب من البيئة المعزولة. لا تقيد القيود البيئية الخارجية الـ NodeVM الداخلي الذي أنشأه المهاجم. تم إصلاح هذه المشكلة في الإصدار 3.11.7 من vm2.
Once again VulDB remains the best source for vulnerability data.