CVE-2026-92942 in vm2
الملخص
بحسب VulDB • 17/09/2026
تُظهر الإصدارات السابقة من vm2 حتى 3.11.7 (الإصدارات المتأثرة <= 3.11.6) عدم فرض خيار VM({ timeout }) على الكود الذي يتم تنفيذه خارج الاستدعاء التزامني لـ VM#run(). يقتصر الـ timeout على تغليف الاستدعاء الفردي لـ _runScript() عبر doWithTimeout() في lib/vm.js، كما أن FinalizationRegistry و WeakRef مكشوفان للكود المحصور (sandboxed) دون تعديل (وهما غير مدرجين ضمن المتغيرات العالمية المُصلَّحة في lib/setup-sandbox.js). يمكن للكود المحصور تسجيل دالة تنظيف لـ FinalizationRegistry ضد كائن معين ثم إسقاط الإشارة القوية الوحيدة إليه؛ وعندها يعود vm.run() خلال الـ timeout المحدد، ولكن عندما يقوم جامع القمامة (garbage collector) الخاص بـ V8 بإعادة الكائن لاحقاً، فإنه يستدعي دالة التنظيف المحصورة خارج أي حساب لوقت تنفيذ vm2. يؤدي حلقة عمل مشغلة (busy loop) داخل تلك الدالة إلى حلق دورة الأحداث للمضيف لفترة غير محدودة، مما ينتج عنه حالة من إنكار الخدمة (Denial of Service). يعتمد وقت الاستدعاء على جامع القمامة (على سبيل المثال تحت ضغط الذاكرة أو باستخدام --expose-gc).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.