CVE-2025-29927 مجوز مجوز در Next.js Middleware

CVE-2025-29927 مجوز مجوز در Next.js Middleware
در روز جمعه ، 21 مارس 2025 ، ساعت 9:00 صبح UTC ، یک مشاوره امنیتی که به عنوان CVE-2025-29927 مشخص شده است ، منتشر شد. این یک آسیب پذیری بحرانی 9.1 برای برنامه های کاربردی اصلی بعدی را ذکر کرد.
نسخه های Next.js آسیب پذیر تلقی می شوند:
- نسخه های بعدی. js 15.x قبل از 1515.2.3
- نسخه های بعدی. js 14.x قبل از 14.2.25
- نسخه های بعدی. js 13.x قبل از 13.5.9
- تمام نسخه های Next.js تا زمان ثابت بعدی. JS 13.5.9 آسیب پذیر تلقی می شوند ، اما اعلامیه آسیب پذیری Vercel به یک راه حل احتمالی آینده یا رفع پشتیبان اشاره کرد.
ما از همه توسعه دهندگان می خواهیم که آخرین نسخه از Next.js را که برای جلوگیری از تحمل مجوزهای مهم و سایر دوربرد منطق میان افزار ، به روزرسانی و مستقر می کنند ، به روز کنند و مستقر کنند.بشر
دامنه ضربه CVE-2025-29927
Vercel اعلام کرد که این آسیب پذیری بر برنامه های میزبانی شده در پلت فرم میزبانی Vercel تأثیر نمی گذارد.
NetLify ، یکی دیگر از پلت فرم های محبوب میزبانی وب ، اعلام کرد که این آسیب پذیری بر برنامه های مستقر در NetLify تأثیر نمی گذارد.
CloudFlare ، که اغلب به عنوان CDN استفاده می شود اما قادر به میزبانی برنامه های بعدی است. JS ، به توسعه دهندگان این امکان را می دهد تا یک قانون مدیریت شده WAF را به عنوان یک راه حل انتخابی روشن کنند.
در مورد Middleware Next.js
Next.JS مفهوم Middleware از چارچوب برنامه کاربردی وب Express وام گرفته شده است. ایده Middleware یک محمول HTTP است که می تواند تزئین ، تغییر شکل مجدد و تصمیم گیری در مورد چگونگی درخواست HTTP ورودی به یک سرور Node.js را انجام دهد.
تعریف Middleware Next.js از یک امضای عملکرد مشابه با Express ، دریافت یک شیء درخواست HTTP (NextRequest) و بازگرداندن یک NextResponse برای مجبور کردن یک رفتار خاص مانند بازگشت پاسخ HTTP 401 ، تغییر مسیر HTTP یا اجازه دادن منطق دست زدن به درخواست از طریق یک Nextrespense.next () پیروی می کند.
export function middleware(req: NextRequest) {
const token = req.cookies.get("auth-token")?.value;
// Define protected routes
const protectedRoutes = ["/admin"];
if (protectedRoutes.some((route) => req.nextUrl.pathname.startsWith(route))) {
if (!token) {
// Redirect to login page if not authorized
const loginUrl = new URL("/login", req.nextUrl.origin);
return NextResponse.redirect(loginUrl);
}
}
// Allow request to proceed
return NextResponse.next();
}
همانطور که در مستندات رسمی Next.js ذکر شد ، توسعه دهندگان اغلب از میان افزار برای انجام تصمیمات احراز هویت و مجوز استفاده می کنند ، مانند اعتبارسنجی یک کوکی یا JWT در درخواست قبل از اجازه دسترسی به مسیرهای دروازه دار و محافظت شده.
مجوز بای پس در Next.js
محققان امنیتی Allam Rachid و Allam Yasser ، که این آسیب پذیری را مطالعه و گزارش داده اند (و آسیب پذیری های گذشته) ، نشان داده اند که چگونه مشتریان خارجی می توانند هنگام صدور درخواست به مسیرهای محافظت شده توسط Next.js از طریق میان افزار ، منطق میان افزار را دور بزنند.
دور زدن میان افزار ، مشتری ها را ملزم می کند تا عنوان HTTP زیر را به درخواست ها مشخص کنند:
x-middleware-subrequest: middleware
منطق بعدی. js ، X-Middleware-Subrequest HTTP را مدیریت می کند تا تصمیم بگیرد که چگونه و چه موقع اجازه می دهد درخواست ها بدون عبور از منطق میان افزار ، از حلقه های بی نهایت عبور کنند. با این حال ، منطق گفته شده در نسخه های آسیب پذیر فوق الذکر Next.js معیوب است و به هر درخواست ورودی به یک سرور بعدی اجازه می دهد تا در صورتی که X-Middleware-Subrequest HTTP با یک مقدار خاص وجود داشته باشد ، دور شود.
توجه داشته باشید برای تولید مثل که مقدار دقیق هدر HTTP متفاوت است و به نسخه شما از Next.js. بستگی دارد.
آیا من تحت تأثیر CVE-2025-29927 Next.js مجوز قرار گرفته ام؟
توسعه دهندگان که از منبع باز SNYK برای تشخیص آسیب پذیری های وابستگی در IDE ، GIT SCM ، CI یا گردش کار Snyk خود استفاده می کنند ، به CVE-2025-29927 هشدار داده می شوند ، همانطور که در این مخزن GitHub وارد شده به پروژه های SNYK نشان داده شده است:
جزئیات آسیب پذیری برای Next.js در SNYK یک مسیر ارتقاء (به عنوان مثال: next@14.2.25 ، مانند مورد من) و کاربران SNYK همچنین می توانند به سرعت آسیب پذیری را با کلیک یک دکمه (یا انتخاب خودکار آن را انتخاب کنند) به سرعت برطرف کنند:
شما به احتمال زیاد تحت تأثیر قرار دادن مجوز در Next.js قرار دارید.
- شما نسخه های بعدی را اجرا می کنید. js 11.1.4 تا 13.5.6
- شما نسخه های بعدی آسیب پذیر هستید.
اصلاح CVE-2025-29927 و راه حل
بسته به اینکه نسخه های بعدی شما استفاده می کنید و در کجا آنها را مستقر می کنید ، رفع یا اصلاح در دسترس است:
- با استفاده از آخرین شاخه های نسخه 14.x یا 15.x ، به نسخه Next.JS ثابت ارتقا دهید.
- یک قانون فایروال را اعمال کنید که از درخواست های HTTP خارجی با عنوان Header X-Middleware-Subrequest جلوگیری می کند تا به زیرساخت های برنامه داخلی بعدی برسد.
- همانطور که این سیستم عامل های میزبانی ابری اظهار داشتند ، استقرار به Vercel و Netlify بی تأثیر است