
ثغرة أمنية في React2Shell (CVE-2025-55182 / CVE-2025-66478)
أداة إثبات مفهوم (PoC) لعرض الثغرة الحرجة React2Shell (CVE-2025-55182 / CVE-2025-66478) على بيئات الاختبار المحلية المصرَّح بها فقط.
تُستغل هذه الثغرة (درجة 10.0 على مقياس CVSS) بنشاط من قبل جهات تهديد متطورة. تشير تقارير الاستخبارات التهديدية من أمازون إلى أن مجموعات متعددة ترعاها دول ومرتبطة بالصين، بما فيها Earth Lamia وJackpot Panda، بدأت في تسليح الاستغلالات العامة خلال ساعات من الإفصاح عنها. وقد أضافت وكالة الأمن السيبراني والبنية التحتية الأمريكية (CISA) هذه الثغرة إلى كتالوج الثغرات المستغلة المعروفة (KEV) لديها.
CVE-2025-55182 (React2Shell) هي ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد (RCE) قبل المصادقة في بروتوكول "Flight" الخاص بمكونات خادم React (React Server Components - RSC). تم تخصيص معرّف منفصل، CVE-2025-66478، لـ Next.js إلا أنه رُفض لاحقًا باعتباره مكررًا لـ CVE-2025-55182، حيث يشتركان في السبب الجذري نفسه.
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# Target specific URL
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
تنشأ الثغرة من حزم React محددة، وتؤثر على أي إطار عمل يضمّنها.
| المكوّن | الإصدارات المتأثرة | الإصدارات المصححة | ملاحظات |
|---|---|---|---|
| حزم React ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | مصدر الخلل الأساسي. |
| Next.js (App Router) | 15.x, 16.x, 14.3.0-canary.77 فما بعد | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | إطار العمل الرئيسي المتأثر. |
| إطارات عمل أخرى | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Vite RSC Plugin | حدّث إلى الإصدارات التي تستخدم حزم React المصححة (>19.0.1, 19.1.2, 19.2.1). | عرضة للثغرة إذا كانت تستخدم حزم React المتأثرة. |
غير المتأثرة: إصدارات Next.js 13.x، والإصدارات المستقرة من Next.js 14.x، وتطبيقات Pages Router، وبيئة تشغيل Edge Runtime غير متأثرة.
يسلسل بروتوكول RSC Flight البيانات للاتصال بين العميل والخادم. تكمن الثغرة في منطق إلغاء التسلسل على الخادم، الذي يوسّع خصائص الكائنات من الحمولة الواردة بطريقة غير آمنة دون تحقق كافٍ. وهذا يسمح للمهاجم بحقن مفاتيح خبيثة (مثل __proto__ أو constructor) في الطلب، مما يؤدي إلى تلوث النماذج الأولية (Prototype Pollution).
بمجرد تلوث سلسلة النماذج الأولية، يتبع الخادم مسارات تنفيذ متأثرة بالمهاجم. ويمكن ربط ذلك لتنفيذ كود JavaScript عشوائي بصلاحيات الخادم، مما يؤدي إلى تنفيذ كامل للتعليمات البرمجية عن بُعد (RCE).
لاحظ الباحثون الأمنيون استغلالات ناجحة تؤدي إلى:
.aws/credentials).التحديث إلزامي وهو الطريقة الوحيدة للقضاء على الثغرة بشكل كامل. لا يوجد إعداد تكوين لتعطيل مسار الكود المعرض للثغرة.
# For Next.js users, upgrade to the latest patched version in your release line.
# Example: If you are on Next.js 15.5.x:
npm install [email protected]
# Also ensure React dependencies are updated:
npm install react@latest react-dom@latest
تحقق من أن ملفات package-lock.json أو yarn.lock لديك تعكس إصدارات حزم react-server-dom-* المصححة (19.0.1 أو 19.1.2 أو 19.2.1).
أثناء عملية التحديث، انشر قواعد جدار حماية تطبيقات الويب (WAF) لحظر محاولات الاستغلال:
AWSManagedRulesKnownBadInputsRuleSet (الإصدار 1.24+) قواعد لهذه الثغرة CVE.cve-canary.ملاحظة: تعد قواعد WAF إجراءً تخفيفيًا مؤقتًا وغير مكتمل. إنها لا تغني عن الحاجة إلى التحديث.
راجع السجلات بحثًا عن علامات محاولات الاستغلال التالية:
next-action أو rsc-action-id. ونصوص طلبات تتضمن أنماطًا مثل $@ أو "status":"resolved_model".whoami, id, uname)، أو قراءة ملف /etc/passwd، أو كتابة ملفات إلى /tmp/ (مثلًا pwned.txt) بواسطة عمليات Node.js.تعرض هذه الأداة ثغرة بدرجة 10.0 على مقياس CVSS (أقصى خطورة) وهي قيد استغلال نشط برعاية دول.
تذكر: توضح هذه الأداة لماذا التحديث أمر عاجل. استخدم هذه المعرفة لتحسين الأمن والدفاع عن الأنظمة، وليس لاختراقها. تأكد من تحديث جميع تبعياتك إلى الإصدارات المصححة المذكورة أعلاه.