آخرین اخبار
همهٔ اخبار
امنیت وب و نرم‌افزار گزارش بحرانیت ۵/۱۰

کشف آسیب‌پذیری بحرانی در Next.js؛ امکان اجرای کد روی سرور از طریق ImageResponse

کشف آسیب‌پذیری بحرانی در Next.js؛ امکان اجرای کد روی سرور از طریق ImageResponse

شرکت Vercel از وجود یک آسیب‌پذیری امنیتی بحرانی در فریم‌ورک Next.js خبر داد که به مهاجمان اجازه می‌دهد از طریق قابلیت ImageResponse (که برای تولید تصاویر Open Graph و پیش‌نمایش‌های شبکه‌های اجتماعی استفاده می‌شود)، کدهای مخرب را روی سرور اجرا کنند.

جزئیات فنی و مکانیسم حمله

این نقص امنیتی که با شناسه CVE-2026-94545 ردیابی می‌شود، زمانی رخ می‌دهد که یک اپلیکیشن مقادیر تحت کنترل مهاجم (مانند متون استخراج شده از URL درخواست) را مستقیماً در تصویر قرار دهد. در این فرآیند، ImageResponse از کتابخانه Satori برای تبدیل چیدمان تصویر به کد SVG پیش از تولید نهایی PNG استفاده می‌کند.

در نسخه‌های آسیب‌پذیر، برخی مقادیر بدون Escape شدن مناسب به خروجی SVG می‌رسند. این امر به مهاجم اجازه می‌دهد تا مقادیر specially crafted را به جای متن ساده، به عنوان کد SVG تزریق کند. این کدها می‌توانند از طریق کتابخانه‌های وابسته دیگر در Next.js، منجر به Remote Code Execution (RCE) شوند.

نسخه‌های تحت تأثیر و شدت خطر

  • نسخه‌های آسیب‌پذیر: Next.js 16.2.0 تا 16.3.5 (در صورتی که روی Node.js runtime اجرا شوند).
  • امتیاز CVSS: عدد 9.5 (بحرانی).
  • موارد غیر آسیب‌پذیر: نسخه Edge از ImageResponse و همچنین Next.js 15 تحت تأثیر این نقص نیستند.

راهکارهای مقابله و رفع آسیب‌پذیری

تنها نسخه اصلاح شده در شاخه 16، نسخه 16.3.6 است. کاربرانی که از نسخه 16.2 استفاده می‌کنند باید مستقیماً به نسخه 16.3.6 ارتقا یابند. همچنین برای کاربران نسخه 15، آپدیت 15.5.26 لایه‌های امنیتی اضافی برای next/og فراهم کرده است.

راهکار موقت (Workaround): در صورتی که ارتقای فوری امکان‌پذیر نیست، باید از قرار دادن مقادیر کنترل شده توسط کاربر در محتوا، ویژگی‌ها (Attributes) و استایل‌های SVG که توسط Node.js ImageResponse رندر می‌شوند، خودداری کنید.

نکات مهم برای تیم‌های SOC و مهندسین امنیت

برای شناسایی نقاط آسیب‌پذیر در کد، باید تمامی موارد Import شده از next/og در Route Handlerها و فایل‌های opengraph-image بررسی شوند. لازم به ذکر است که به دلیل نحوه بسته‌بندی Satori در داخل Next.js، این کتابخانه در Lockfile به عنوان یک Dependency مجزا ظاهر نمی‌شود و باید نسخه خودِ Next.js بررسی گردد.