آسیبپذیریهای بحرانی Next.js اکتبر ۲۰۲۶: سه RCE/DoS و آپدیت فوری
نویسنده: آرش لطیفی
سه مشکل امنیتی تازه در Next.js که با نسخههای 16.4.1 و 15.5.28 وصله شدند: RCE از طریق Image Optimization، RCE در `use cache` و DoS روی Server Actions — همراه چکلیست آپگرید.
TL;DR — روز ۱۴-۱۵ اکتبر ۲۰۲۶ سه آسیبپذیری جدی Next.js با نسخههای 16.4.1 و 15.5.28 وصله شدند؛ دو تا از آنها RCE بدون احراز هویت با امتیاز بحرانی 9.5 هستند — آپگرید را عقب ننداز.
چه اتفاقی افتاد؟
هفتهی گذشته تیم Next.js چند اعلان امنیتی همزمان منتشر کرد و نسخههای وصله 16.4.1 و 16.4.2 (روی خط 16) و 15.5.28 (روی خط LTS مربوط به 15) را داد. سه مورد از اینها واقعاً جدیاند:
| advisory | نوع | شدت | نسخههای آسیبپذیر | وصله |
| --- | --- | --- | --- | --- |
| GHSA-2464-fhr4-w9xw | RCE از طریق Image Optimization API | بحرانی 9.5 | 10.0.0 تا 15.5.27 و 16.0.0 تا 16.4.0 | 15.5.28 / 16.4.1 |
| GHSA-673q-mjm6-r5xr | RCE در توابع use cache | بحرانی 9.5 | 16.0.0 تا 16.4.0 | 16.4.1 |
| GHSA-p3m5-59mp-jv5r | DoS روی App Router با Server Actions | بالا 8.2 | 13.0.0 تا 15.5.27 و 16.0.0 تا 16.4.0 | 15.5.28 / 16.4.1 |
هر کدام به زبان آدمیزاد
۱. RCE در Image Optimization (وقتی SVG استفاده میشود). یک مشکل مرتبط با حافظه در کتابخانهی sharp که Next.js برای بهینهسازی عکس استفاده میکند؛ وقتی اپ روی لینوکس glibc-based اجرا شود، میتواند به اجرای کد از راه دور برسد. راهکار موقت برای کسانی که نمیتوانند فوراً آپگرید کنند: مطمئن شوید نسخهی sharp پروژه حداقل 0.35.5 است — نصبهای تازه خودکار نسخهی سالم میگیرند.
۲. RCE در use cache. مربوط به اپهای App Router با Cache Components فعال؛ تابع use cacheای که چند typed array برگرداند میتواند فاز اجرا را باز کند. نکتهی خطرناک: هیچ workaround شناختهشدهای وجود ندارد و توصیهی رسمی این است که حتی اگر چنین تابعی نداری، فوراً آپگرید کن.
۳. DoS روی Server Actions. درخواستهای دستکاریشده علیه هر اپی که App Router و حداقل یک Server Action دارد، CPU را قفل میکند و پردازش درخواستهای بعدی در همان پروسه را میخواباند. اپهای Pages Router یا بدون Server Action آسیبپذیر نیستند. این هم workaround ندارد — فقط آپگرید.
چرا این دفعه مهمتر از همیشه است
بعد از ماجرای «React2Shell» (RCE بحرانی React و Next.js در دسامبر ۲۰۲۵ که سروصدای زیادی در HN کرد)، یک الگو تکرار شده: این باگها بدون احراز هویت و با شبکه قابل بهرهبرداریاند و اکثر پروژهها دقیقاً ترکیبی از این کامپوننتها را دارند — next/image، Server Action، یا use cache. اگر هفتهی پیش آپدیت امنیتی Next.js (nextjs-october-2026-security-update) را خوانده باشی، این ادامهی همان ماجراست: خط 15 هم پشتیبانی LTS میگیرد، پس بهانهی «نسخهی قدیمی دارم، وصله ندارم» دیگر وجود ندارد.
چکلیست آپگرید — همین امروز
- [ ] نسخهی فعلی را چک کن:
next --versionیا درpackage.json. - [ ] روی خط 16: به
16.4.2(آخرین وصله، شامل فیکسهای Turbopack هم هست). روی خط 15: به15.5.28. - [ ] اگر موقتاً نمیتوانی آپگرید کنی، حداقل
sharp >= 0.35.5را نصب کن (فقط مشکل ۱ را پوشش میدهد). - [ ] آپگرید را در staging تست کن، بعد دیپلوی کن — این وصلهها رفتاری نیستند، امنیتی؛ معمولاً بدون breakage هستند.
- [ ] بعد از دیپلوی، نسخهی در حال اجرا را در پروداکشن تأیید کن (لاگ استارتاپ یا endpoint سلامت).
- [ ] اگر از Cache Components استفاده میکنی، اولویتت را دوبرابر کن — آن مورد
use cacheهیچ workaround ندارد. - [ ] لاگها را برای درخواستهای مشکوک به Server Actions بگرد — نشانهها: CPU spike بدون ترافیک واقعی.
برای اپهای ایرانی: چند نکتهی خاص ما
اکثر پروژههای Next.js ایران روی VPSهای خودمون اجرا میشوند، نه Vercel — یعنی دقیقاً همان سناریوی «glibc-based Linux» که ریسک RCE اول را بالاتر میبرد. و چون خودمان آپگرید میکنیم (نه پلتفرم)، هیچکس بهجز خودمان این وصله را اعمال نمیکند. یک pm2 restart بعد از npm install فراموش نشود — پروسهی قدیمی با نسخهی آسیبپذیر تا ریاستارت بالا میماند.
Q: از کجا بفهمم نسخهی پروداکشنی من آسیبپذیر است؟
خروجی next --version روی همان سرور، یا نسخه در lock file، ملاک است. محدودهها: برای مورد sharp، بین 10.0.0 تا 15.5.27 و بین 16.0.0 تا 16.4.0؛ برای مورد use cache، فقط 16.0.0 تا 16.4.0؛ برای DoS، از 13.0.0 به بعد تا 15.5.27 و 16.0.0 تا 16.4.0.
Q: آپگرید مینور امنیتی میتواند چیزی را بشکند؟
به احتمال زیاد نه — اینها patch release هستند و فقط فیکس امنیتی و چند backport دارند (مثلاً 16.4.2 چند فیکس Turbopack). ولی همیشه اول در staging اجرا کن؛ اگر از Turbopack در dev استفاده میکنی، dev را هم یک بار باز و بسته کن.
Q: اپ من Pages Router است، امنم؟
برای مورد DoS بله — Pages Router یا نبودن Server Action یعنی آسیبپذیر نیستی. ولی مورد Image Optimization مستقل از روتر است (نسخهی جالب دارد، از 10 به بعد)، پس باز هم آپگرید کن. «امن بودن از یک مورد» به معنی بیخیال شدن کل بولتن نیست.