CVE-2026-93606 in vm2المعلومات

الملخص

بحسب VulDB • 18/09/2026

تحتوي إصدارات vm2 (npm) حتى الإصدار 3.12.0 على ثغرة هروب من الصندوق الرملي (sandbox escape) في `VM` و `NodeVM`. عندما يعرّف المُضمّن (embedder) واجهة برمجة تطبيقات للمضيف تُرجع وعداً (Promise) ضمن نطاق المضيف، فإن مُصحح الرفض الخاص بالجسر (bridge's rejection sanitizer)، المتمثل في الدوال `hostPromiseSanitizeReject` / `makeSanitizedPromiseCallback` / `normalizeHostPromiseCallbacks` الموجودة في ملف `lib/bridge.js`، يقوم فقط بتغليف خانات رفض `then`/`catch` التي تحتوي على دالة. كما أن تعادل `Symbol.species`/.then` من جانب الصندوق الرملي يُثبّت فقط على الكائن الجوهري للصندوق الرملي `Promise.prototype`، وبالتالي لا ينطبق أبداً على وعد المضيف (host Promise). يمكن للكود الذي يعمل داخل الصندوق الرملي تجاوز خاصية `p.constructor[Symbol.species]` في وعد المضيف، ثم استدعاء `p.then()` دون معالج رفض (`onRejected`)؛ عندها يحل V8 محلها بـ Thrower الداخلي الخاص به، مما يعيد رمي قيمة الرفض الخام (raw host rejection value) داخل إغلاق resolve/reject الذي التقطه المهاجم. يؤدي هذا إلى توفير وكيل جسر غير مُصحح ومكتمل الوظائف للكائن المضيف للرموز الموجودة في الصندوق الرملي، متجاوزاً دالتي `handleException` و `hostPromiseSanitizeReject`. إذا كانت قيمة الرفض قابلة للتحوّل نحو كائن مضيف (مثل كائن `process`)، فإن ذلك يؤدي إلى تنفيذ عشوائي للأوامر على المضيف. تم الإصلاح في الإصدار 3.12.1.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

VulnCheck

حجز

18/09/2026

إفشاء

18/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-407498

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!