CVE-2026-92944: اختراق خطير لصندوق العزل في vm2 لـ Node.js 26
ثغرة خطيرة (CVSS 9.3) في vm2 تتيح الخروج من صندوق العزل في Node.js 26. ما هي، ومن تؤثر، وكيف تحمي نفسك.
CVE-2026-92944: اختراق خطير لصندوق العزل في vm2 لـ Node.js 26
باختصار
تم الإعلان عن ثغرة خطيرة (CVE-2026-92944، بدرجة CVSS 9.3) في مكتبة vm2، المستخدمة لتنفيذ التعليمات البرمجية في بيئات معزولة ("sandbox") داخل تطبيقات Node.js [1]. يسمح هذا الخلل للتعليمات البرمجية غير الموثوقة بالخروج من صندوق العزل والسيطرة على العملية المضيفة عند التشغيل على Node.js 26 [1][2]. إذا كانت شركتك تطوّر أو تستخدم تطبيقات تُنفّذ تعليمات برمجية من أطراف ثالثة أو من المستخدمين عبر vm2، فإن الخطوة الأولى اليوم هي تحديد أين تُستخدم هذه المكتبة والتحقق من الإصدار المثبّت.
ما هي ولماذا هي مهمة
vm2 هي أداة يستخدمها المطورون على نطاق واسع لتنفيذ تعليمات برمجية بلغة JavaScript من مصدر غير موثوق داخل بيئة من المفترض أنها معزولة عن باقي التطبيق: إضافات (plugins) المستخدمين، نصوص برمجية مخصصة، أدوات تصحيح تمارين البرمجة، محركات القواعد، وغيرها. الفكرة هي أنه بغضّ النظر عمّا يحدث داخل تلك التعليمات البرمجية، لا ينبغي أن تتمكن من "الخروج" أو لمس النظام الحقيقي.
وفقًا للوصف الرسمي للثغرة، في إصدارات vm2 الممتدة بين 3.10.2 و 3.11.6، تصبح آلية داخلية في محرك V8 (الحامي المسمى PromiseThenLookupChain) قديمة وغير متوافقة مع Node.js 26، وهذا يسمح لدالة غير متزامنة (asynchronous) مُصممة بعناية من قِبل مهاجم بتجاوز حماية صندوق العزل عبر طريقة Promise.prototype.finally() [1]. والنتيجة هي أن التعليمات البرمجية "المعزولة" يمكن أن تصل إلى دوال داخلية في النظام وتنفّذ تعليمات برمجية عشوائية بصلاحيات العملية الرئيسية [1][2].
تصنّف رادار OCIRIA الخاص، الذي يرصد الثغرات ذات الصلة ببُنى التطوير والإنتاج، هذه الحالة ضمن فئة تنفيذ التعليمات البرمجية عن بعد، وتشير إلى أن أهميتها تكمن بالضبط في أنها تكسر فرضية العزل: إذا فشل صندوق العزل، يصبح التطبيق بأكمله - وربما بيانات وخدمات أخرى في نفس العملية - معرّضًا للخطر [2].
وفيما يتعلق بوجود استغلال فعلي في العالم الحقيقي، فإنه حتى تاريخ نشر هذا المقال، لا تظهر هذه الثغرة في كتالوج الثغرات المستغَلة المعروفة (KEV) الذي تحتفظ به الوكالة الأمريكية CISA [3]. وهذا لا يعني أنها غير خطيرة - فدرجتها البالغة 9.3 تضعها بين الأكثر خطورة [1] - بل يعني أنه لا يوجد دليل موثّق على حملات هجوم نشطة في هذه اللحظة.
من تؤثر عليهم
تؤثر هذه الثغرة على المؤسسات التي:
- تطوّر أو تصون تطبيقات Node.js تستخدم مكتبة vm2 لعزل تنفيذ التعليمات البرمجية من أطراف ثالثة أو من المستخدمين.
- قامت بالتحديث إلى Node.js 26 أو هي في طور نشر بيئات تعمل عليه، إذ يظهر هذا الخلل تحديدًا في هذا الإصدار من بيئة التشغيل بسبب تغيير في محرك V8 [1].
- تُشغّل منصات من نوع "التعليمات البرمجية كخدمة": محررات عبر الإنترنت، صناديق عزل للاختبار، محركات أتمتة، إضافات أو امتدادات تعمل على الخادم، أدوات تصحيح تلقائي، وغيرها.
لا تحدد الحقيقة البنيوية التي تعتمدها OCIRIA بائعين محددين متأثرين بخلاف حزمة vm2 نفسها، لذا ننصح بعدم افتراض تعرّض أو عدم تعرّض مزوّد معيّن دون التحقق المباشر من ذلك.
كيف تعرف إن كنت معرّضًا للخطر
لا توجد طريقة عامة "لمعرفة ذلك بنظرة سريعة": الأمر يعتمد على التبعيات التي يستخدمها الكود الخاص بك وعلى البيئة التي يتم تشغيله فيها. نوصي بما يلي:
1. مراجعة قائمة تبعيات تطبيقات Node.js الخاصة بكم (package.json / package-lock.json) للبحث عن vm2 والتحقق من الإصدار الدقيق المثبّت.
2. التأكد من إصدار Node.js الذي يُشغّل كل خدمة في بيئة الإنتاج، مع الانتباه بشكل خاص إلى الخدمات التي تعمل بالفعل على Node.js 26.
3. فحص مساحة التعرّض الخاصة بخدماتكم وبيئات التطوير، خصوصًا تلك التي تقبل أو تنفّذ تعليمات برمجية خارجية، للكشف عن نقاط تعرّض غير مُراقَبة أو غير مُدرجة في الجرد.
كيف تحمي نفسك
- حدّث vm2 إلى إصدار مُصحَّح بمجرد أن ينشره القائمون على المشروع؛ وفي الوقت نفسه، فكّر في تقييد أو تعطيل مؤقت للوظائف التي تنفّذ تعليمات برمجية غير موثوقة إذا كان الخطر مرتفعًا [2].
- راجع استخدام صناديق العزل بشكل عام: بما أن هذه الفئة من الثغرات (الخروج من صندوق العزل) تتكرر غالبًا، قيّم ما إذا كانت بنيتكم المعمارية تعتمد بشكل مفرط على آلية عزل واحدة على مستوى العملية، أو ما إذا كان من المناسب تعزيزها بعزل إضافي (حاويات، أجهزة افتراضية خفيفة، صلاحيات نظام تشغيل مقيّدة).
- دقّق التعليمات البرمجية التي تُنفَّذ في صندوق العزل والقادمة من مصادر غير موثوقة: مستخدمون خارجيون، إضافات من أطراف ثالثة، أو تكاملات غير مُراقَبة بشكل كافٍ.
- راقب تنبيهات الأمان الخاصة بالمكتبات الحرجة التي تشكّل جزءًا من سلسلة توريد برمجياتكم، وليس فقط أطر العمل (frameworks) الرئيسية.
- رتّب الأولويات بحسب التعرّض الفعلي: إذا كانت خدماتكم لا تنفّذ تعليمات برمجية من أطراف ثالثة في صندوق عزل أو لا تستخدمون Node.js 26، فإن الخطر المباشر أقل، لكن يُستحسن توثيق ذلك لمراجعات مستقبلية.
الأسئلة الشائعة
ما مدى خطورة هذه الثغرة؟
وفقًا لـ NVD، تحمل درجة CVSS قدرها 9.3، وهي مصنّفة كثغرة خطيرة (critical) [1].
هل يتم استغلال هذه الثغرة بنشاط حاليًا؟
حتى تاريخ نشر هذا المقال، لا تظهر في كتالوج الثغرات المستغَلة المعروفة (KEV) التابع لـ CISA، لذا لا يوجد دليل موثّق على استغلال نشط [3].
هل تؤثر على أي تطبيق Node.js؟
لا. تؤثر تحديدًا على التطبيقات التي تستخدم مكتبة vm2 (الإصدارات من 3.10.2 إلى 3.11.6) لتنفيذ التعليمات البرمجية في صندوق عزل، ويحدث الاختراق الموصوف في سياق Node.js 26 [1].
ماذا يجب أن أفعل إذا لم أكن أعرف ما إذا كنت أستخدم vm2؟
راجع قائمة تبعيات مشاريع Node.js الخاصة بك، وإذا كانت لديك شكوك حول التعرّض الفعلي لأنظمتك، فمن المستحسن إجراء مراجعة أوسع لمساحة التعرّض الخاصة بك.
المصادر
- [1] https://nvd.nist.gov/vuln/detail/CVE-2026-92944
- [2] https://github.com/advisories/GHSA-27g9-p43v-cw3v
- [3] https://raw.githubusercontent.com/cisagov/kev-data/develop/known_exploited_vulnerabilities.json