
أداة إثبات المفهوم لإظهار الثغرة الحرجة React2Shell
أداة إثبات مفهوم لإظهار الثغرة الحرجة React2Shell (CVE-2025-55182 / CVE-2025-66478) في بيئات الاختبار المحلية المصرّح بها فقط.
CVE-2025-55182 (React2Shell) هي ثغرة حرجة لتنفيذ الأوامر عن بُعد (RCE) بدون مصادقة مسبقة في بروتوكول "Flight" الخاص بمكونات خادم React (RSC). تم تعيين معرف منفصل، CVE-2025-66478، لـ Next.js لكن تم رفضه لاحقًا باعتباره مكررًا لـ CVE-2025-55182، حيث يشتركان في نفس السبب الجذري.
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# استهداف عنوان URL محدد
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
تنشأ الثغرة من حزم React محددة، مما يؤثر على أي إطار عمل يقوم بتجميعها.
غير متأثر: Next.js 13.x، الإصدارات الثابتة من Next.js 14.x، تطبيقات موجه الصفحات، وبيئة تشغيل Edge غير متأثرة.
يقوم بروتوكول RSC Flight بتسلسل البيانات للاتصال بين العميل والخادم. تكمن الثغرة في منطق إلغاء التسلسل على الخادم، والذي يقوم بتوسيع خصائص الكائن من الحمولة الواردة بشكل غير آمن دون تحقق كافٍ. يسمح هذا للمهاجم بحقن مفاتيح ضارة (مثل __proto__ أو constructor) في الطلب، مما يؤدي إلى تلوث النموذج الأولي.
بمجرد تلوث سلسلة النموذج الأولي، يتبع الخادم مسارات تنفيذ متأثرة بالمهاجم. يمكن ربط هذا لتنفيذ كود JavaScript عشوائي بصلاحيات الخادم، مما يؤدي إلى تنفيذ أوامر عن بُعد كامل (RCE).
لاحظ باحثو الأمن استغلالات ناجحة أدت إلى:
.aws/credentials).التصحيح إلزامي وهو الطريقة الوحيدة للقضاء على الثغرة تمامًا. لا يوجد إعداد تكوين لتعطيل مسار الكود المعرض للثغرة.
# لمستخدمي Next.js، قم بالترقية إلى أحدث إصدار مصحح في خط الإصدار الخاص بك.
# مثال: إذا كنت على Next.js 15.5.x:
npm install [email protected]
# تأكد أيضًا من تحديث تبعيات React:
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.توضح هذه الأداة ثغرة ذات درجة CVSS 10.0 (أقصى شدة) وهي قيد الاستغلال النشط من قبل جهات حكومية.
تذكر: توضح هذه الأداة لماذا التصحيح عاجل. استخدم هذه المعرفة لتحسين الأمن والدفاع عن الأنظمة، وليس لاختراقها. تأكد من تحديث جميع تبعياتك إلى الإصدارات المصححة المذكورة أعلاه.
طه منير
| المكوّن | الإصدارات المتأثرة | الإصدارات المصححة | ملاحظات |
|---|
| حزم 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 (موجه التطبيق) | 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 | التحديث إلى إصدارات تستخدم حزم React المصححة (>19.0.1, 19.1.2, 19.2.1). | تكون عرضة للثغرة إذا كانت تستخدم حزم React المتأثرة. |