
هذا البيئة المخبرية قمت بإنشائها بنفسي من الصفر. قمت بإعداد صفحات تسجيل الدخول والصفحة الرئيسية وصفحات الإدارة داخل تطبيق Next.js. بعد إعداد آلية التفويض باستخدام Middleware، قمت بعرض ثغرة CVE-2025-29927 في بيئة خاضعة للتحكم باستخدام Burp Suite.
في تطبيقات Next.js، يعمل الـ middleware قبل وصول الطلبات إلى التطبيق، وينفذ عمليات التحقق مثل المصادقة والتفويض.
أما في ثغرة CVE-2025-29927، فبسبب ترويسة HTTP المضافة خصيصًا x-middleware-subrequest، قد يعتبر الـ middleware في بعض الحالات أن الطلب موثَّق. وهذا يمكن أن يؤدي إلى وصول المستخدمين غير المصرح لهم إلى الصفحات المحمية.
في هذا المشروع، عرضت ثغرة CVE-2025-29927 التي تؤثر على تطبيقات Next.js في بيئة مختبرية أنشأتها باستخدام Docker.
قمت بإنشاء بيئة المختبر من الصفر بنفسي. جهزت صفحات login وindex وadmin باستخدام Next.js، ثم أضفت التحكم في التفويض لصفحة admin باستخدام middleware.
من خلال التقاط طلبات HTTP باستخدام Burp Suite، أضفت ترويسة x-middleware-subrequest وأظهرت الوصول غير المصرح به إلى صفحة admin عبر تجاوز تحكم الـ middleware.
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
قبل تشغيل المشروع، يجب تثبيت ما يلي:
قم بتنزيل المستودع على جهازك.
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
ادخل إلى المجلد.
cd nextjs-middleware-auth-bypass-lab
أنشئ صورة Docker.
docker build -t nextjs-auth-bypass .
شغّل الحاوية.
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
من المتصفح، انتقل إلى العنوان التالي:
http://localhost:3000
يحتوي المشروع على الصفحات التالية:
يتم التحكم في الوصول إلى صفحة Admin عبر الـ middleware.
أولاً، حاول الوصول إلى صفحة /admin من المتصفح.
نظرًا لعدم امتلاكك الصلاحية، سيتم توجيهك إلى صفحة login.
التقط الطلب باستخدام Burp Suite.
أضف ترويسة HTTP التالية إلى الطلب:
x-middleware-subrequest: middleware
أرسل الطلب مرة أخرى.
يمكن ملاحظة أنه عند تجاوز تحكم الـ middleware، يمكن الوصول إلى صفحة admin.
بعد اكتمال التثبيت:
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
لإصلاح هذه الثغرة، يُنصح باستبدال إصدارات Next.js المتأثرة بالإصدارات الحديثة.
كما يجب ألا يقتصر التفويض على الـ middleware فقط، بل ينبغي تطبيق عمليات تحقق إضافية للصلاحيات على جانب الخادم أيضًا.