
React2Shell Scanner (CVE-2025-55182 و CVE-2025-66478)
أداة كشف غير تدخّلية لتحديد تطبيقات React Server Components (RSC) المعرّضة للخطر والمتأثرة بـ CVE-2025-55182 (React) وCVE-2025-66478 (Next.js). تقوم هذه الأداة بـالكشف النشط باستخدام حمولات غير ضارة وغير خبيثة لتحديد ما إذا كان الخادم معرّضًا للخطر دون تنفيذ أي تعليمات برمجية ضارة.
CVE-2025-55182 وCVE-2025-66478 هما ثغرتان حرجتان لتنفيذ التعليمات البرمجية عن بُعد دون مصادقة (RCE) في بروتوكول "Flight" الخاص بمكوّنات خادم React (React Server Components). تؤثر هاتان الثغرتان على:
react-server-dom 19.0.0 و19.1.0 و19.1.1 و19.2.0تنبع هذه الثغرات من إلغاء التسلسل غير الآمن في منطق معالجة حمولات RSC، مما يسمح للبيانات التي يتحكم فيها المهاجم بالتأثير على التنفيذ في جانب الخادم. الإعدادات الافتراضية معرّضة للخطر - يمكن استغلال تطبيق Next.js قياسي تم إنشاؤه باستخدام create-next-app دون أي تغييرات في التعليمات البرمجية.
تقوم هذه الأداة بـالكشف النشط عن الثغرات من خلال:
تستخدم الأداة ثلاث طرق للكشف:
loadServerReferencearrayBufferمهم: لا تقوم هذه الأداة بتنفيذ أي تعليمات برمجية خبيثة. إنها ترسل فقط حمولات غير ضارة مصمَّمة بعناية لإحداث استجابات خطأ تكشف حالة الخادم من حيث التعرض للخطر.
python react2shell_scanner.py --target https://example.com
python react2shell_scanner.py --target https://example.com --action-id YOUR_ACTION_ID
python react2shell_scanner.py --target https://example.com --verbose
[+] CVE-2025-55182 and CVE-2025-66478 Vulnerability Checker
[*] Target: https://example.com
[*] Action ID: c67c4e1a40fcc26b5e3c0d5d17f16786f4244989
[*] Test 1: Sending $F (Server Reference) payload...
Status: 500, Evidence: workers
[*] Test 2: Sending $L (Lazy) payload...
Status: 500, Evidence: arraybuffer
[+] Result:
[!] Status: LIKELY VULNERABLE
[!] Confidence: HIGH
[!] Evidence: workers
[!] Details: Server reached loadServerReference (Flight $F deserialization bypass)
[!] RECOMMENDATION: Upgrade to patched version
======================================================================
[+] CVE-2025-55182 and CVE-2025-66478 Vulnerability Checker
[*] Target: https://example.com
[*] Action ID: c67c4e1a40fcc26b5e3c0d5d17f16786f4244989
[*] Test 1: Sending $F (Server Reference) payload...
Status: 500, Evidence: could not find the module
[*] Test 2: Sending $L (Lazy) payload...
Status: 500, Evidence: in the react server manifest
[+] Result:
[+] Status: LIKELY NOT VULNERABLE
[+] Confidence: HIGH
[+] Evidence: could not find the module
[+] Details: Server rejected payload with security error (patched)
======================================================================
تبحث الأداة عن أنماط الأخطاء التالية التي تشير إلى وجود ثغرة:
workers - وصل الخادم إلى loadServerReference (ثقة عالية)arraybuffer - وصل الخادم إلى معالج النوع $L (ثقة عالية)cannot read properties of null (reading 'id') - وصل الخادم إلى loadServerReference ببيانات وصفية بقيمة null (ثقة عالية)entries - استقبل Server Action كائنًا مُعاد تسلسله بدلاً من FormData (ثقة متوسطة)temporary client reference - عالج الخادم مرجعًا من النوع $T (ثقة متوسطة)تشير أنماط الأخطاء التالية إلى أن الخادم مُصحَّح:
could not find the modulein the react server manifestInvalid server referenceServer reference not foundUnexpected tokenis probably a bug in the react server components bundler| المنتج | الإصدارات المعرّضة للخطر | الإصدارات المُصحَّحة |
|---|---|---|
react-server-dom | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| Next.js | 14.3.0-canary, 15.x, 16.x (App Router) | 14.3.0-canary.88, 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
قد تتأثر أيضًا أُطر عمل أخرى تستخدم RSC:
إجراء فوري مطلوب: قم بالترقية إلى الإصدارات المُصحَّحة:
react-server-dom 19.0.1 أو 19.1.2 أو 19.2.1react-server المضمّنةصُمِّمت هذه الأداة لـاختبار الأمن الدفاعي وتقييم الثغرات. تستخدم فقط حمولات غير ضارة لا تنفّذ تعليمات برمجية خبيثة. ومع ذلك:
هذه الأداة مقدَّمة "كما هي" دون أي ضمان. لا يتحمل المؤلفون أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة. تأكد دائمًا من حصولك على الترخيص المناسب قبل اختبار أي أنظمة.
| الوسيط | مطلوب | الافتراضي | الوصف |
|---|
--target | نعم | - | عنوان URL الهدف للفحص (يجب أن يبدأ بـ http:// أو https://) |
--action-id | لا | c67c4e1a40fcc26b5e3c0d5d17f16786f4244989 | معرف الإجراء الذي سيُستخدم في الحمولة |
--verbose, -v | لا | False | تفعيل الإخراج التفصيلي الذي يعرض محتويات الاستجابة |