Next.js: июльский патч безопасности 2026 — 9 CVE

20 июля 2026 года команда Next.js выпустила первый в истории фреймворка плановый, заранее анонсированный релиз безопасности: девять уязвимостей закрыты одним пакетом — четыре высокой и пять средней степени серьёзности — в обеих поддерживаемых ветках, 16.2 и 15.5. Новость не только в самих CVE, но и в процессе: неделей раньше (13 июля) Vercel объявила о переходе Next.js на ежемесячную программу релизов безопасности с предварительным уведомлением — по модели, давно принятой в Django, Node.js и OpenSSL.

Проблема: внезапные патчи и гонка с атакующими

Каждый, кто держит Next.js в продакшене, знает этот сценарий: патч безопасности выходит без предупреждения, и вечер команды превращается в аврал из обновлений и аудита. За последние полтора года это случилось дважды и болезненно: обход middleware в марте 2025-го (CVE-2025-29927, CVSS 9.1), затем React2Shell в декабре 2025-го — идеальные 10.0 в React Server Components.

Давление только растёт. Объём исследований уязвимостей во всей индустрии резко увеличился благодаря LLM-инструментам: одна только Mozilla раскрыла 271 проблему в одном релизе Firefox — все найдены инструментами Anthropic. ИИ не заменил исследователей безопасности, а умножил их возможности — и то же уравнение работает для атакующих. Vercel запускает инструменты того же класса против самого Next.js — через собственный проект deepsec и расширенную bug-bounty-программу.

Что изменилось

  • Предсказуемый ежемесячный график: анонс в блоге Next.js с ожидаемыми сроками и максимальной прогнозируемой серьёзностью. Для уязвимостей, уже эксплуатируемых в дикой природе, остаются внеплановые патчи.
  • Координация с платформами: запас времени позволяет хостинг-провайдерам развернуть митигации вроде WAF-правил до того, как все приложения обновятся.

Главные уязвимости релиза:

  • CVE-2026-64641 (высокая): отказ в обслуживании через Server Actions в App Router за счёт исчерпания CPU.
  • CVE-2026-64642 (высокая): обход middleware/прокси в приложениях, собранных Turbopack с единственной локалью в i18n, — любая проверка аутентификации в middleware пропускается полностью.
  • CVE-2026-64645 (высокая): SSRF в rewrites(), когда хост назначения строится из данных запроса.
  • CVE-2026-64649 (высокая): SSRF через Server Actions на кастомных серверах.
Next.js July 2026 security release: four high and five medium severity CVEs

Практическая часть

Сначала обновление:

bash
npm install next@16.2.11   # Active LTS
npm install next@15.5.21   # Maintenance LTS

Затем главный урок повторяющихся обходов middleware: middleware — слой оптимизации, а не единственная линия обороны. Проверка сессии должна жить в самом слое доступа к данным:

ts
// lib/dal.ts
import 'server-only'
import { verifySession } from './session'

export async function getOrders() {
  const session = await verifySession()
  if (!session) throw new Error('unauthorized')

  return db.orders.findMany({
    where: { userId: session.userId },
  })
}

При таком паттерне даже обход middleware (как в CVE-2026-64642) не даст атакующему без валидной сессии добраться до данных.

Оговорки из реальной практики

  • Self-hosted-развёртывания уязвимее. Приложения на хостинге Vercel получили автоматическую WAF-защиту во время React2Shell, а те, кто хостится сам, несут всё окно между раскрытием и патчем целиком. Ежемесячный график сокращает это окно, но не убирает его.
  • Интернет-магазин на App Router с Server Actions? Исправления DoS и SSRF касаются вас напрямую — это обновление не косметика.
  • Фиксируйте зависимости lockfile-ом и автоматизируйте оповещения (Renovate или Dependabot), чтобы ежемесячный день патчей стал короткой рутиной, а не проектом.
  • Это то же уравнение, что и в статье об аутентификации MCP-агентов: чем мощнее интеллектуальные системы, тем больше безопасность — непрерывный процесс, а не событие.

Вывод

Next.js перешёл от реактивных патчей к планируемому ритму безопасности — прямой ответ эпохе, когда ИИ умножает скорость поиска уязвимостей. Практический шаг на сегодня: обновиться до 16.2.11 или 15.5.21 и убедиться, что аутентификация не держится на одном middleware.

Первоисточник: July 2026 Security Release — блог Next.js