Next.js — это платформа React для создания полнофункциональных веб-приложений. Начиная с версии 9.5.0 и до версий 15.5.13 и 16.1.7, когда Next.js переписывает прокси-трафик на внешний бэкэнд, созданный запрос DELETE/OPTIONS с использованием Transfer-Encoding: chunked может вызвать разногласия в границах запроса между прокси и бэкендом. Это может позволить переправлять запросы через переписанные маршруты.
Злоумышленник может переправить второй запрос на непредусмотренные внутренние маршруты (например, внутренние или административные конечные точки), минуя предположения о том, что доступен только настроенный пункт назначения/путь перезаписи. Это не влияет на приложения, размещенные у поставщиков, которые обрабатывают перезапись на уровне CDN, например Vercel. Уязвимость возникла в исходной библиотеке, предоставленной Next.js.
В Next.js 15.5.13 и 16.1.7 это исправлено путем обновления поведения этой зависимости, поэтому `content-length: 0` добавляется только тогда, когда `content-length` и `transfer-encoding` отсутствуют, а `transfer-encoding` больше не удаляется в этом пути кода. Если немедленное обновление невозможно, заблокируйте фрагментированные запросы DELETE/OPTIONS на переписанных маршрутах на границе/прокси-сервере и/или принудительно используйте аутентификацию/авторизацию на внутренних маршрутах.
Показать оригинальное описание (EN)
Next.js is a React framework for building full-stack web applications. Starting in version 9.5.0 and prior to versions 15.5.13 and 16.1.7, when Next.js rewrites proxy traffic to an external backend, a crafted `DELETE`/`OPTIONS` request using `Transfer-Encoding: chunked` could trigger request boundary disagreement between the proxy and backend. This could allow request smuggling through rewritten routes. An attacker could smuggle a second request to unintended backend routes (for example, internal/admin endpoints), bypassing assumptions that only the configured rewrite destination/path is reachable. This does not impact applications hosted on providers that handle rewrites at the CDN level, such as Vercel. The vulnerability originated in an upstream library vendored by Next.js. It is fixed in Next.js 15.5.13 and 16.1.7 by updating that dependency’s behavior so `content-length: 0` is added only when both `content-length` and `transfer-encoding` are absent, and `transfer-encoding` is no longer removed in that code path. If upgrading is not immediately possible, block chunked `DELETE`/`OPTIONS` requests on rewritten routes at the edge/proxy, and/or enforce authentication/authorization on backend routes.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 2
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Vercel Next.Js
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*
|
9.5.0
|
15.5.13
|
|
Vercel Next.Js
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*
|
16.0.0
|
16.1.7
|