⭕️
تحلیل و بررسی آسیبپذیری امنیتی در Next.js (CVE-2025-29927)در واقع Next.js یکی از محبوبترین فریمورکهای
React برای توسعهی وب اپلیکیشنها است که امکانات زیادی برای بهینهسازی عملکرد ارائه میدهد.
با این حال، همانند هر فناوری دیگری، Next.js نیز ممکن است
آسیبپذیریهایی داشته باشد که در صورت عدم بهروزرسانی، میتواند به هکرها اجازهی سوءاستفاده دهد.
حالا قراره
آسیبپذیری CVE-2025-29927 را بررسی کنیم، نحوهی شناسایی آن را توضیح میدهیم و روشهایی برای پچ کردن آن ارائه میکنیم.
چگونه یک اپلیکیشن Next.js آسیبپذیر را شناسایی کنیم؟روشهای رایج برای شناسایی Next.jsبرای شناسایی اینکه آیا یک وب اپلیکیشن از Next.js استفاده میکند یا نه، میتوان از تکنیکهای زیر استفاده کرد:
1. برخی سرورها در هدرهای HTTP مقدار X-Powered-By: Next.js را ارسال میکنند.
2. فایلهای
JS و CSS تولید شده توسط Next.js معمولاً در مسیر زیر قرار دارند.
/_next/static/
3. در مرورگر، آبجکت next بهصورت
گلوبال تعریف شده است که نسخهی Next.js را نمایش میدهد.
اپلیکیشنهای Next.js معمولاً یک
آبجکت گلوبال (window.next) در سمت کلاینت دارند که شامل اطلاعات نسخهی Next.js است. این مورد را میتوان از طریق کنسول مرورگر بررسی کرد:
console.log(window.next?.version);
شناسایی نسخهی آسیبپذیربا ترکیب روشهای بالا، میتوان
اپلیکیشنهایی را که از نسخههای آسیبپذیر Next.js استفاده میکنند، شناسایی کرد. با این حال، فقط شناسایی نسخهی آسیبپذیر کافی نیست!
بلکه باید بررسی کنیم که آیا مسیرهای حساس واقعاً تحت تأثیر این آسیبپذیری قرار دارند یا خیر.
تشخیص مسیرهای آسیبپذیرمسیرهای آسیبپذیر معمولاً توسط
مکانیزم احراز هویت محافظت میشوند و پیدا کردن آنها از طریق Crawling یا FUZZING ساده کارآمد نیست. به این دلیل که:
بسیاری از اپلیکیشنهای Next.js به صورت
SPA (Single Page Application) اجرا میشوند و Crawling آن به ابزارهای پیشرفتهتری مثل
مرورگرهای Headless نیاز دارد.
مسیرهای آسیبپذیر معمولاً بهصورت
مخفی در کدهای جاوا اسکریپت تعریف میشوند و Crawler سنتی به آنها دسترسی ندارند.
روش جایگزین: استخراج مسیرهای API از فایلهای JSبه جای اتکا به Crawling، میتوان از تحلیل سورسکد جاوا اسکریپت یا استفاده از اکستنشن BurpJsLinkFinder برای استخراج مسیرهای مهم مثل API استفاده کرد. در این روش:
1- با تحلیل سورس کد JS یا استفاده از BurpJsLinkFinder میتوانیم مسیرهای مهم رو بیرون بکشیم و تو یه فایل ذخیره کنیم.
2- سپس مسیرهای استخراج شده، با یک
Nuclei template مخصوص آزمایش میشوند تا ببینیم که آیا واقعاً آسیبپذیر هستند یا خیر.
یک نمونه Template خوب برای Nuclei از
ProjectDiscoveryمثال از یک مسیر API در یک فایل جاوا اسکریپت:
const BASE_API = "/api/v1";
function getUser(id) {
http.get(BASE_API + "/user/" + id);
}
نتیجهی تحلیل این کد، مسیر زیر را مشخص میکند:
GET /api/v1/user/{id}
با استفاده از این روش، میشه مسیرهای پنهان و آسیبپذیر را شناسایی کرد و
بدون نیاز به Crawling، بهصورت دقیقتر این آسیبپذیری را تحلیل کرد.چند اقدام و راهکار در مواجه با CVE-2025-29927 برای تیم Developبهترین راهکار: آپدیت کردن به نسخهی امن Next.js
بهترین و موثرترین روش برای جلوگیری از این آسیبپذیری،
بهروزرسانی Next.js به نسخهی پچشده است.
اقدامات موقت (در صورت عدم امکان آپدیت فوری)اگر امکان
آپدیت فوری وجود ندارد، میتوان بهصورت موقت اقدامات زیر را انجام داد:
1.
بلاک کردن هدر x-middleware-subrequest در تنظیمات سرور، WAF یا پروکسی برای جلوگیری از اکسپلویت.
2.
مانیتورینگ لاگها و بررسی درخواستهای مشکوک که شامل این هدر میشوند.
@securation