مختبر أكاديمي لتحليل CVE-2025-55182 (React2Shell) مع بيئات React Server Components الضعيفة والمصححة، وshell استغلال، وسيناريوهات تقييم آلية، وتقرير أمني شامل.
يحتوي هذا المستودع على مختبر أكاديمي محلي لتحليل CVE-2025-55182 في بيئة React Server Components خاضعة للتحكم. يحاكي المختبر الثغرة الأمنية واستغلالها والتصحيح المطبّق.
app/vulnerable/: ملف تعريف تطبيق React المعرّض للثغرة.
src/framework/entry.rsc.tsx: يحتوي على نقطة إلغاء التسلسل غير الآمن حيث يتم تنفيذ حمولات __flight_action عبر execSync().[email protected].app/patched/: ملف تعريف تطبيق React المُصحَّح.
src/framework/entry.rsc.tsx: يحتوي على منطق التخفيف الذي يحظر حمولات __flight_action باستجابة 403 قبل إلغاء التسلسل.infra/: إعدادات Docker للتنفيذ المعزول.
docker-compose.yml: يشغّل كلاً من ملفّي التعريف المعرّض للثغرة (المنفذ 3100) والمُصحَّح (المنفذ 3200).scripts/: نصوص الأتمتة والاستغلال.
exploit-shell.ps1: صدفة استغلال تفاعلية تستغل الثغرة لتوفير طرفية بعيدة محاكاة (root@container$).run-scenarios.ps1: نص برمجي غلاف لتنفيذ اختبارات التقييم الآلية في tests/run-scenarios.mjs.start-lab.ps1: نص برمجي مساعد لبدء بيئة Docker Compose بسرعة.stop-lab.ps1: نص برمجي مساعد لإيقاف وتنظيف بيئة Docker Compose.demo-lab.ps1: نص برمجي توضيحي بديل يشغّل كلا التطبيقين محليًا (بدون Docker) ويرسل سلسلة من طلبات الاختبار.report/: يحتوي على التحليل النهائي.
findings.md: التقرير الأمني الشامل الذي يغطي سلسلة الهجوم، وتحليل CVSS، ومقاييس التقييم، وتوصيات التخفيف.CSE472_ProjectProposal_Revised.md: وثيقة اقتراح المشروع المُنقّحة وتوثيق المنهجية.tests/: تقييم آلي.
run-scenarios.mjs: نص برمجي Node.js يشغّل سيناريوهات عادية ومشبوهة واستغلالية ضد كلا الملفّين، ويحسب معدلات النجاح والاكتشاف.logs/: مخرجات القياس عن بُعد.
vulnerable-requests.log و patched-requests.log: يخزنان سجلات تفصيلية للطلبات، بما في ذلك suspiciousReasons للتحليل.إذا كنت قد حمّلت هذا المشروع كملف .zip من GitHub، فاتبع هذه الخطوات لتشغيل المختبر والتفاعل مع محاكاة الثغرة على جهازك المحلي.
ملاحظة حول سياسة تنفيذ PowerShell: إذا واجهت خطأً يفيد بأن البرنامج النصي
cannot be loadedأوis not digitally signedعند تشغيل ملفات.ps1، فأنت بحاجة إلى تجاوز سياسة التنفيذ لجلسة العمل الحالية. نفّذ هذا الأمر في نافذة PowerShell قبل تشغيل النصوص البرمجية:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass(نظرًا لأن النطاق هو "Process"، يجب عليك تشغيل هذا الأمر مرة أخرى في كل نافذة أو تبويب جديد من PowerShell تفتحه!)
استخرج ملف .zip إلى المجلد المطلوب. افتح نافذة PowerShell وانتقل إلى مجلد المشروع المستخرج:
cd path\to\extracted\folder
نستخدم Docker لعزل التطبيق المعرّض للثغرة بأمان. ابدأ تشغيل الحاويات باستخدام البرنامج النصي المساعد المرفق:
.\scripts\start-lab.ps1
(بدلاً من ذلك، يمكنك تشغيل الأمر يدويًا: cd infra; docker-compose up --build -d)
بمجرد التشغيل:
http://localhost:3100http://localhost:3200مع تشغيل البيئة، يمكنك اختبار ثغرة تنفيذ الأكواد عن بُعد (RCE) عن طريق تشغيل صدفة الاستغلال المحاكاة لدينا. افتح تبويبًا أو نافذة PowerShell جديدة ونفّذ:
.\scripts\exploit-shell.ps1
يعمل هذا البرنامج النصي كمهاجم يرسل حمولات مصممة إلى نقطة النهاية .rsc. جرّب تنفيذ أوامر مثل:
whoamils /workspaceenvcat /etc/passwdلاختبار النسخة المُصحَّحة:
.\scripts\exploit-shell.ps1 -Target "http://localhost:3200"
ستلاحظ أن النسخة المُصحَّحة تحظر الطلب وتعيد رسالة [BLOCKED].
لإنشاء مقاييس التقييم (معدل النجاح، معدل الاكتشاف)، شغّل البرنامج النصي للاختبار Node.js:
node .\tests\run-scenarios.mjs
(أو استخدم الغلاف: .\scripts\run-scenarios.ps1)
سيقوم هذا بإخراج ملخص إلى وحدة التحكم وحفظ تقرير JSON مفصّل في tests/results/scenario-report.json.
عند الانتهاء من التجربة، يمكنك إيقاف تشغيل الحاويات بأمان لتحرير الموارد:
.\scripts\stop-lab.ps1