Next.js: Крах безопасности

Разрушительный выпуск безопасности выявил 13 новых уязвимостей в Next.js, шесть из которых имеют высокую степень серьезности. Мы разбираем эксплойты и задаем критический вопрос: были ли серверные компоненты ошибкой?

Stork.AI
Hero image for: Next.js: Крах безопасности
💡

Кратко / Главное

Разрушительный выпуск безопасности выявил 13 новых уязвимостей в Next.js, шесть из которых имеют высокую степень серьезности. Мы разбираем эксплойты и задаем критический вопрос: были ли серверные компоненты ошибкой?

День, когда сработали оповещения

Новая волна паники охватила сообщество разработчиков после резкого объявления от Vercel: 13 новых общеизвестных уязвимостей и эксплойтов (CVEs) одновременно затронули Next.js и React. Этот беспрецедентный выпуск безопасности, подробно описанный в журнале изменений за май 2026 года, немедленно поставил под угрозу бесчисленные производственные приложения. Огромное количество недостатков заставило видных деятелей, таких как канал Better Stack, заявить «I'm Done With NextJS...», что сигнализировало о широком разочаровании среди разработчиков.

Рейтинги серьезности нарисовали мрачную картину; шесть из этих уязвимостей получили классификацию «высокой» серьезности, требуя срочного внимания. Критические недостатки включали множественные векторы Denial of Denial of Service of Denial of Service, серьезные эксплойты Server-Side Request Forgery (SSRF) — некоторые отмечены как наивысшей серьезности — и различные возможности Cross-Site Scripting (XSS). Это были не теоретические слабости, а конкретные пути для злоумышленников, чтобы скомпрометировать пользовательские данные, отключить Denial of Services и обойти меры безопасности.

Влияние этих CVEs распространилось на несколько недавних версий Next.js, что сделало немедленные обновления обязательными практически для каждого активного проекта. Патчи устраняли проблемы, начиная от обхода middleware, такие как уязвимость i18n с серьезностью 7.5/10 в Pages Router, которая раскрывала server-side props, до отравления кэша и других коварных проблем. Решение Vercel было ясным: немедленно обновить все установки Next.js для снижения риска.

Эта последняя бомба безопасности вновь разжигает постоянные, тревожные дебаты в экосистеме React: были ли серверные компоненты ошибкой? Многие из критических уязвимостей, особенно атаки Denial of Denial of Service of Denial of Service с серьезностью 7.5/10, напрямую проистекают из React Flight Protocol, базового формата сериализации для серверных компонентов. Это знаменует третью значительную волну CVEs, связанных с серверными компонентами, в этом году, поднимая серьезные вопросы о фундаментальной архитектуре безопасности этой парадигмы. Фреймворки, такие как TanStack Start, которые избегают пакета React Server DOM, остаются незатронутыми, подчеркивая растущее расхождение в профилях безопасности.

Разблокированный бэкдор: обход i18n Middleware

Иллюстрация: Разблокированный бэкдор: обход i18n Middleware
Иллюстрация: Разблокированный бэкдор: обход i18n Middleware

Критический обход i18n middleware раскрыл приложения, созданные с помощью Pages Router Next.js, для несанкционированного доступа к данным. Идентифицированная как CVE с серьезностью 7.5 из 10, эта уязвимость позволяла злоумышленникам обходить логику аутентификации, предназначенную для защиты конфиденциальных данных на стороне сервера. Уязвимость специально затронула приложения, использующие функции интернационализации (i18n) Next.js.

Эксплуатация обхода требовала минимальных усилий. Злоумышленник сначала получал уникальный build ID приложения, обычно находящийся в скрипте `_next/data` на любой отображаемой странице. С этим ID они могли создать прямой URL, такой как `/_next/data/[build ID]/[page].json`, нацеленный на страницы, которые полагались на `getServerSideProps` для получения данных. Этот прямой доступ извлекал полезную нагрузку данных страницы в формате JSON, полностью обходя любые проверки аутентификации, реализованные в middleware приложения.

Анализ первопричин выявил ошибочную логику в интеграции i18n Next.js. Когда i18n был включен, `middleware matcher` фреймворка не смог адекватно защитить базовый маршрут страницы (например, `/secret`). В то время как варианты, специфичные для локали, такие как `/en/secret` или `/fr/secret`, правильно запускали аутентификацию `middleware`, необработанная, нелокализованная конечная точка данных оставалась незащищенной. Это создало огромную дыру, позволяющую прямой доступ к информации, которая в противном случае была бы защищена.

Последствия были значительными для приложений, передающих конфиденциальную информацию через `getServerSideProps`. Неавторизованные пользователи могли получить конфиденциальные данные — такие как электронные письма пользователей, внутренние флаги или проприетарные заголовки — без входа в систему. Это подорвало основные предположения о безопасности, демонстрируя, как незначительная ошибка в конфигурации может привести к серьезной утечке данных в производственных средах.

Ваша логика аутентификации — ложь

Недавний обход `middleware` i18n, уязвимость CVE с рейтингом серьезности 7.5, выявил более глубокую архитектурную уязвимость во многих приложениях Next.js. Разработчики часто ошибочно принимают `middleware` за окончательный периметр безопасности, заблуждение, которое видео "I'm Done With NextJS" напрямую оспаривает. Сама документация Next.js предостерегает от использования только `middleware` для критической авторизации.

Функции `middleware` по своей сути служат в основном для модификации запросов, перенаправления или базового контроля доступа. Они работают на граничном уровне, что делает их уязвимыми для определенных векторов обхода, таких как уязвимость i18n или прямой доступ к конечным точкам получения данных. Это присущее ограничение требует стратегии глубокой защиты для надежной безопасности приложений.

Истинная безопасность требует проверок на каждом уровне, а не только на начальном конвейере запросов. Внедряйте комплексную аутентификацию и авторизацию непосредственно в ваших серверных API-маршрутах и функциях `getServerSideProps` или `getStaticProps`. Это гарантирует, что даже если `middleware` выйдет из строя или будет обойдено, конфиденциальные данные останутся защищенными явной проверкой на уровне сервера.

Исключительное использование `middleware` для критической авторизации создает опасные уязвимости. Злоумышленники могут использовать обходы для: - Доступа к конфиденциальным пользовательским данным, таким как электронные письма или внутренние флаги, из JSON-полезных нагрузок `_next/data`. - Обхода контроля доступа на основе ролей, получая несанкционированный доступ к административным интерфейсам. - Манипулирования состоянием приложения или выполнения действий, обычно ограниченных для аутентифицированных пользователей.

Для получения дополнительной информации о том, как такие уязвимости могут влиять на веб-приложения, обратитесь к таким ресурсам, как Security Update: Multiple vulnerabilities in Next.js and React - Netlify. Этот многоуровневый подход предотвращает компрометацию целостности всего вашего приложения из-за одной точки отказа.

Обрушение серверов одним запросом

Злоумышленники также обнаружили критическую уязвимость Denial of Denial of Service of Denial of Service, нацеленную на серверные компоненты Next.js и любой фреймворк, использующий пакет React Server DOM. Этот недостаток, которому присвоен рейтинг серьезности 7.5 из 10, делает приложения уязвимыми к изнурительным замедлениям с минимальными усилиями. Разработчики, использующие даже простейшие серверные действия в своих приложениях Next.js, были уязвимы.

Механизм эксплойта включает отправку на сервер массово раздутой полезной нагрузки. Злоумышленники создают запросы, содержащие тысячи ключей и указателей, специально разработанных для перегрузки вычислительных мощностей сервера на этапе десериализации React Flight Protocol. Этот протокол стандартизирует способ сериализации деревьев компонентов и данных между сервером и клиентом в React.

Эта, казалось бы, безобидная структура данных вызывает сбой алгоритма. Процесс десериализации, сталкиваясь с такой чрезмерно большой и сложной полезной нагрузкой, превращается в квадратичную сложность (K * N) сравнений строк. Это приводит к поразительным 200 миллионам операций для одного некорректно сформированного запроса, что значительно превышает ожидаемые нагрузки на обработку.

Воздействие немедленное и серьезное. Запрос, который обычно обрабатывался бы всего за 0,02 секунды, растягивается до шести секунд после всего одного запуска эксплойта. Объединение нескольких таких запросов может эффективно блокировать потоки сервера, делая приложение неотзывчивым и недоступным для легитимных пользователей.

Исправление, которое спасло протокол React

Иллюстрация: Исправление, которое спасло протокол React
Иллюстрация: Исправление, которое спасло протокол React

Инженеры React и Next.js оперативно разработали сложное исправление для устранения уязвимости Denial of Denial of Service of Denial of Service (DoS) в протоколе React Flight. Этот эксплойт ранее позволял злоумышленникам перегружать серверы одним злонамеренно сформированным запросом. Исправление в первую очередь было направлено на процесс десериализации, который ранее испытывал трудности со сложными структурами данных.

Разработчики внедрили новую систему на основе курсора для десериализации входящих потоков данных. Этот остроумный подход обрабатывает сложные деревья компонентов и данные протокола с поразительной эффективностью. Вместо многократного анализа всей полезной нагрузки система курсора интеллектуально перемещается по данным, оптимизируя использование ресурсов.

Этот инженерный подвиг значительно улучшил вычислительную сложность. Старый метод десериализации страдал от сложности K * N, где K представляло глубину вложенных объектов, а N — общее количество элементов, что приводило к экспоненциальным замедлениям. Новая система достигает высокоэффективной линейной сложности, работая со скоростью N + K. Это фундаментальное изменение коренным образом изменило способ обработки полезных нагрузок сервером.

Влияние на производительность и безопасность было немедленным и глубоким. Бенчмарки показали ошеломляющее сокращение операций для вредоносных полезных нагрузок. То, что ранее вызывало более 200 миллионов операций, доводя серверы до предела, теперь требовало всего около 200 000 операций. Это решительное действие эффективно нейтрализовало угрозу DoS, защитив приложения, построенные на протоколе React Flight, от подобных атак.

Высшее Предательство: Server-Side Request Forgery

Среди множества уязвимостей одна выделялась наивысшим баллом серьезности: 8.6/10 Server-Side Request Forgery (SSRF), затрагивающая саморазмещаемые приложения Next.js. Этот критический недостаток представлял собой глубокое нарушение доверия, позволяя злоумышленникам превратить общедоступный сервер в невольного сообщника для внутренней разведки и эксплуатации.

SSRF по сути обманывает сервер, заставляя его выполнять запросы от имени злоумышленника к недоступным внутренним Denial of Services. Представьте себе сервер, обычно защищенный надежными брандмауэрами, который внезапно устанавливает соединения со своими внутренними базами данных, уровнями кэширования или частными API, и все это по команде внешнего злоумышленника. В этом суть атаки SSRF.

Эксплуатация этой уязвимости в Next.js оказалась на удивление простой. Злоумышленники создали `curl`-запрос, содержащий заголовок `Upgrade: websocket` и пользовательский целевой объект запроса. Эта, казалось бы, безобидная комбинация заставила сервер инициировать произвольные соединения внутри своих internal networks, обходя внешнюю защиту.

Опасность, которую представлял этот SSRF, была катастрофической. Он обеспечил прямой firewall bypass, предоставив злоумышленникам беспрецедентный доступ к наиболее чувствительной инфраструктуре организации. Внутренние базы данных, экземпляры Redis и другие частные APIs, обычно изолированные и защищенные, стали напрямую доступны через скомпрометированное приложение Next.js.

Эта уязвимость означала, что злоумышленник мог составить карту внутренней сети, извлечь конфиденциальные данные или даже инициировать действия во внутренних системах, никогда напрямую не затрагивая эти Denial of Services. Для разработчиков, ищущих дальнейшие рекомендации по обеспечению безопасности своих приложений, такие ресурсы, как Guides: Data Security - Next.js, предлагают ценную информацию. Легкость эксплуатации в сочетании с потенциалом глубокого внутреннего доступа сделала этот SSRF одним из наиболее тревожных раскрытий в выпуске безопасности Next.js.

«Налог на безопасность» Server Component

Видео Better Stack «I'm Done With NextJS... 13 NEW vulnerabilities» провокационно задало вопрос, были ли server components ошибкой. Этот вопрос кристаллизует растущую обеспокоенность в сообществе разработчиков относительно присущих React Server Components (RSCs) накладных расходов на безопасность. Смена парадигмы вводит значительный «налог на безопасность» — неоспоримое увеличение архитектурной сложности и расширение поверхности атаки.

Внедрение RSCs фундаментально переопределяет контракт между сервером и клиентом, выходя за рамки традиционных циклов HTTP-запрос-ответ. Эта новая модель требует тщательной обработки сериализации и десериализации данных, часто через пользовательские протоколы. Едкий твит Primeagen, цитируемый в видео, прекрасно отражает эту проблему: «It's hard to make custom serialization protocols.» Протокол React Flight, являющийся ядром RSCs, служит именно таким пользовательским уровнем, и его сложная природа делает надежную, безопасную реализацию исключительно трудной.

Анализ последних 13 CVEs выявляет отчетливую закономерность. Многие уязвимости, включая критические недостатки Denial of Denial of Service of Denial of Service, напрямую связаны с новой архитектурой RSCs и сложностями протокола Flight. Уязвимость DoS, например, эксплуатировала пакет `React Server DOM`, являющийся основополагающим элементом для RSCs. Это не был обычный баг API; он использовал то, как деревья компонентов и данные передаются между сервером и клиентом.

Эта закономерность подчеркивает уникальные проблемы безопасности, присущие системам, которые размывают логику сервера и клиента. Обход middleware, хотя и не является напрямую проблемой протокола Flight, вносит свой вклад в общий «налог на безопасность», демонстрируя, как новые парадигмы маршрутизации, особенно с такими функциями, как i18n, могут вводить неожиданные векторы атаки в сложной структуре. Разработчики теперь должны учитывать угрозы, глубоко укоренившиеся в сериализации и гидратации компонентов, помимо традиционной проверки HTTP-запросов. Это требует повышенного уровня контроля и более широкого понимания потенциальных эксплойтов по всему стеку, перенося бремя анализа безопасности на гораздо более глубокий, более абстрактный уровень приложения.

Повесть о двух фреймворках: The TanStack Exemption

Иллюстрация: Повесть о двух фреймворках: The TanStack Exemption
Иллюстрация: Повесть о двух фреймворках: The TanStack Exemption

TanStack Start вышел из недавней волны уязвимостей Next.js совершенно невредимым. В то время как Next.js боролся с 13 CVEs, включая критические обходы middleware и Server-Side Request Forgery, TanStack Start остался незатронутым. Этот поразительный контраст предлагает важное тематическое исследование архитектуры фреймворка и ее прямого влияния на состояние безопасности.

Различие заключается в фундаментальных философиях проектирования. Next.js часто отдает приоритет удобству разработчика через «магию», абстрагируя границы сервера и неявные потоки данных. Этот подход, хотя и мощный, может создавать скрытые поверхности атаки, когда базовые механизмы — такие как React Flight protocol или i18n routing — ведут себя неожиданно.

TanStack Start, напротив, отстаивает явный, типобезопасный подход с четко определенными loaders и действиями. Разработчики явно объявляют операции на стороне сервера, делая границу между сервером и клиентом недвусмысленной. Эта архитектурная ясность минимизирует потенциал для неправильных конфигураций или непреднамеренных утечек данных, поскольку поведение фреймворка более предсказуемо соответствует ожиданиям разработчиков.

Фреймворки, которые уменьшают «магию», часто повышают безопасность, заставляя разработчиков напрямую сталкиваться с потоком данных и средами выполнения. Выбор дизайна TanStack Start, подчеркивающий явные серверные функции и надежную проверку типов, по своей сути способствует более безопасному и проверяемому опыту разработки. Эта предсказуемость становится мощной защитой от типов обходов и уязвимостей утечки данных, которые преследовали Next.js в его недавнем выпуске безопасности.

В конечном итоге, это не объявление об общем превосходстве одного фреймворка, а архитектурный урок. Исключение TanStack подчеркивает, как явный дизайн, четкие границы сервера и надежная типобезопасность могут радикально уменьшить поверхность атаки фреймворка. Это призывает как разработчиков, так и авторов фреймворков учитывать последствия для безопасности, связанные с удобством против контроля.

Ваш немедленный план действий

Разработчики Next.js сталкиваются с неотложной задачей. Недавнее раскрытие 13 CVEs требует немедленных, решительных действий для защиты приложений и пользовательских данных. Промедление создает неприемлемый риск, учитывая серьезность таких проблем, как обходы middleware и Server-Side Request Forgery.

Во-первых, точно определите ваши текущие версии Next.js и React. Этот основополагающий шаг определяет ваш уровень подверженности недавно исправленным уязвимостям. Используйте `npm list next` и `npm list react` или проверьте ваш `package.json`, чтобы подтвердить эти критические зависимости.

Немедленно обновите все затронутые приложения до исправленных версий. Цель — Next.js 15.5.18 или выше, и React 19.0.6 или выше. Эти выпуски содержат критические исправления для широко распространенных недостатков безопасности, включая Denial of Denial of Service of Denial of Service через React Flight protocol. Для получения дополнительных технических сведений о таких уязвимостях обратитесь к таким ресурсам, как CVE-2026-23864: React and Next.js Denial of Denial of Service of Denial of Service via Memory Exhaustion | Akamai.

Проведите тщательный аудит кода вашего приложения, сосредоточившись на областях, где безопасность зависит от абстракций фреймворка. Уделите особое внимание логике middleware, проверяя, что проверки аутентификации и авторизации надежны и не подвержены обходам, таким как уязвимость i18n. Критически изучите шаблоны получения данных, чтобы предотвратить Server-Side Request Forgery и другие риски утечки данных.

Инициируйте всестороннее командное обсуждение architectural risk и будущего выбора фреймворков. Этот инцидент подчеркивает необходимость глубокого понимания безопасности, выходящего за рамки поверхностного использования API. Оцените, соответствуют ли текущие выбранные фреймворки политике безопасности и допустимому риску вашей организации.

Перекресток для веб-разработки

Недавние откровения, в частности беспрецедентный поток из 13 CVEs, затронувших Next.js и React, знаменуют собой критический перекресток для веб-разработки. Это событие вынуждает к существенной переоценке архитектурных парадигм, которые стали доминировать в создании современных приложений. Широта уязвимостей, от тонких обходов middleware до серьезных Server-Side Request Forgery, требует самоанализа.

Интегрированные, управляемые сервером UI-фреймворки обещают беспрецедентный опыт для разработчиков и производительность, но не опередили ли они случайно фундаментальные лучшие практики безопасности? Тезис о «налоге на безопасность» серверных компонентов приобретает значительный вес, когда один некорректно сформированный запрос может вызвать Denial of Denial of Service of Denial of Service через React Flight protocol, или ошибка конфигурации i18n раскрывает конфиденциальные server-side props.

Разработчики приняли удобство объединения серверной и клиентской логики, однако эта тесная связь по своей сути создает новые поверхности для атак. Размывание границ между тем, что выполняется где и в каком контексте, вносит сложности, которые текущие модели безопасности могут не полностью учитывать. Это делает надежное моделирование угроз более сложным, чем когда-либо.

Будущее развитие может привести к возобновлению акцента на явные, декомпозированные архитектуры. Четкие границы между клиентом и сервером, возможно, с четко определенными контрактами API и отдельными доменами безопасности, могут вновь стать популярными как способ упрощения рассуждений о безопасности и снижения системного риска. Простота часто напрямую коррелирует с безопасностью.

И наоборот, фреймворки, такие как Next.js, могут созреть и стабилизироваться, включив в себя более надежные примитивы безопасности и пройдя более строгий, проактивный аудит. Умное инженерное решение, реализованное для уязвимости Denial of Denial of Service of Denial of Service в React Flight protocol, демонстрирует способность команды к быстрой и эффективной ликвидации последствий под давлением.

Заметное исключение TanStack Start из этих широко распространенных уязвимостей предлагает убедительную альтернативную перспективу. Его архитектурные решения, в частности отказ от пакета React Server DOM, предполагают, что различные философии дизайна по своей сути приводят к разным профилям безопасности. Это является сильным аргументом в пользу разнообразия подходов к фреймворкам.

Какой бы путь в конечном итоге ни выбрала экосистема, этот эпизод служит суровым напоминанием: безопасность не может оставаться второстепенной задачей. Оспаривайте каждое архитектурное решение, тщательно проверяйте каждую зависимость и приоритизируйте устойчивую политику безопасности с самой первой строки кода в вашем следующем проекте. Ответственность лежит на каждом разработчике.

Часто задаваемые вопросы

Какие наиболее критические уязвимости Next.js из выпуска мая 2026 года?

Наиболее критические уязвимости включают Server-Side Request Forgery (SSRF) высокой степени серьезности (8.6/10), множественные Middleware Bypasses (7.5/10) и атаку Denial of Service (DoS), нацеленную на React Flight protocol (7.5/10).

Являются ли React Server Components (RSCs) по своей сути небезопасными?

RSCs не являются по своей сути небезопасными, но они вводят новую, сложную парадигму, которая значительно расширяет поверхность атаки. Этот «налог на безопасность» требует большей бдительности как от авторов фреймворков, так и от разработчиков для предотвращения таких уязвимостей, как unsafe deserialization.

Как защитить мое приложение Next.js от этих уязвимостей?

Единственное гарантированное исправление — немедленно обновить ваши зависимости Next.js и React до исправленных версий, указанных в официальном бюллетене безопасности Vercel. Использование только WAF недостаточно.

Затронули ли эти уязвимости Next.js TanStack Start?

Нет, TanStack Start не был затронут этими конкретными CVE, потому что он не использует пакет React Server DOM или те же архитектурные шаблоны, что и Next.js, что подчеркивает преимущества безопасности его более явного дизайна.

Часто задаваемые вопросы

Какие наиболее критические уязвимости Next.js из выпуска мая 2026 года?
Наиболее критические уязвимости включают Server-Side Request Forgery высокой степени серьезности , множественные Middleware Bypasses и атаку Denial of Service , нацеленную на React Flight protocol .
Являются ли React Server Components (RSCs) по своей сути небезопасными?
RSCs не являются по своей сути небезопасными, но они вводят новую, сложную парадигму, которая значительно расширяет поверхность атаки. Этот «налог на безопасность» требует большей бдительности как от авторов фреймворков, так и от разработчиков для предотвращения таких уязвимостей, как unsafe deserialization.
Как защитить мое приложение Next.js от этих уязвимостей?
Единственное гарантированное исправление — немедленно обновить ваши зависимости Next.js и React до исправленных версий, указанных в официальном бюллетене безопасности Vercel. Использование только WAF недостаточно.
Затронули ли эти уязвимости Next.js TanStack Start?
Нет, TanStack Start не был затронут этими конкретными CVE, потому что он не использует пакет React Server DOM или те же архитектурные шаблоны, что и Next.js, что подчеркивает преимущества безопасности его более явного дизайна.
🚀Узнать больше

Будьте в курсе трендов ИИ

Откройте лучшие инструменты ИИ, агенты и MCP-серверы от Stork.AI.

Все статьи