Next.js — это платформа React для создания полнофункциональных веб-приложений. Начиная с версии 16.0.1 и до версии 16.1.7, запрос, содержащий заголовок next-resume: 1 (соответствующий запросу возобновления PPR), будет буферизовать тела запроса без последовательного применения maxPostponedStateSize в определенных настройках. Предыдущее средство защиты защищало развертывания в минимальном режиме, но эквивалентные неминимальные развертывания оставались уязвимыми к тому же неограниченному поведению отложенной буферизации тела возобновления.
В приложениях, использующих App Router с включенной функцией частичного предварительного рендеринга (через «experimental.ppr» или «cacheComponents»), злоумышленник может отправлять слишком большие полезные данные POST «next-resume», которые были помещены в буфер без обеспечения согласованного размера в неминимальных развертываниях, что приводило к чрезмерному использованию памяти и потенциальному отказу в обслуживании. В версии 16.1.7 это исправлено путем введения ограничений размера для всех путей буферизации отложенного тела и возникновения ошибок при превышении ограничений. Если обновление невозможно немедленно, заблокируйте запросы, содержащие заголовок next-resume, поскольку его невозможно отправить от ненадежного клиента.
Показать оригинальное описание (EN)
Next.js is a React framework for building full-stack web applications. Starting in version 16.0.1 and prior to version 16.1.7, a request containing the `next-resume: 1` header (corresponding with a PPR resume request) would buffer request bodies without consistently enforcing `maxPostponedStateSize` in certain setups. The previous mitigation protected minimal-mode deployments, but equivalent non-minimal deployments remained vulnerable to the same unbounded postponed resume-body buffering behavior. In applications using the App Router with Partial Prerendering capability enabled (via `experimental.ppr` or `cacheComponents`), an attacker could send oversized `next-resume` POST payloads that were buffered without consistent size enforcement in non-minimal deployments, causing excessive memory usage and potential denial of service. This is fixed in version 16.1.7 by enforcing size limits across all postponed-body buffering paths and erroring when limits are exceeded. If upgrading is not immediately possible, block requests containing the `next-resume` header, as this is never valid to be sent from an untrusted client.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Vercel Next.Js
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*
|
16.0.1
|
16.1.7
|