CVE-2026-93603 in vm2
الملخص
بحسب VulDB • 18/09/2026
تعرض الإصدارات من vm2 حتى 3.12.0 (تم إصلاحها في الإصدار 3.12.1) قصوراً في التعامل بشكل صحيح مع مستقبل `this` الذي يحتوي على قيمة nullish في فخ apply الخاص بجسر البرمجة (lib/bridge.js): عندما يستدعي الكود المحصور (sandboxed) دالة غير صارمة (sloppy-mode) مقدمة من المضيف دون تحديد مستلم — مثل `fn()`، أو طريقة مفصولة (detached method)، أو `fn.call()`، أو `fn.apply(undefined)`، أو `Reflect.apply(fn, undefined, [])`، أو `fn.bind()()` — فإن المستلم غير المحدد يتم تمريره مباشرة إلى استدعاء المضيف، ويقوم V8 باستبدال الكائن العالمي لبيئة عمل المضيف (host realm) بدلاً من `this`. ثم يقوم vm2 بتغليف هذا الكائن وإعادته إلى البيئة المحصورة، مما يمنح السكربت المحصور وسيطاً حياً للكائن العالمي للمضيف. وهذا يتيح هروباً كاملاً من العزل (sandbox escape): يمكن للسكربت غير الموثوق الوصول إلى `process` وتنفيذ أكواد/أوامر عشوائية على المضيف (على سبيل المثال عبر `process.getBuiltinModule('child_process').execSync`). تتطلب عملية الاستغلال أن تعرض تطبيق التضمين دالة مضيف واحدة على الأقل غير صارمة للبيئة المحصورة؛ ولا تتأثر الدوال المضيفة التي تعمل في الوضع الصارم أو وحدات ES.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.