
Bu laboratuvar ortamını sıfırdan kendim oluşturdum. Next.js uygulaması içerisinde giriş, ana sayfa ve admin sayfalarını hazırladım. Middleware ile yetkilendirme mekanizmasını kurduktan sonra Burp Suite kullanarak CVE-2025-29927 zafiyetini kontrollü ortamda gösterdim.
В приложениях Next.js middleware выполняется до того, как запросы достигают приложения, и осуществляет такие проверки, как аутентификация и авторизация.
В случае уязвимости CVE-2025-29927 из-за специально добавленного HTTP-заголовка x-middleware-subrequest middleware в некоторых случаях может считать запрос проверенным. Это может привести к тому, что неавторизованные пользователи получат доступ к защищённым страницам.
В этом проекте я продемонстрировал уязвимость CVE-2025-29927, затрагивающую приложения Next.js, в лабораторной среде, созданной с помощью Docker.
Лабораторную среду я создал с нуля самостоятельно. На Next.js я подготовил страницы login, index и admin. Затем с помощью middleware добавил контроль доступа к странице admin.
Перехватив HTTP-запросы с помощью Burp Suite, я добавил заголовок x-middleware-subrequest и показал неавторизованный доступ к странице admin, обойдя проверку middleware.
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
Перед запуском проекта необходимо установить следующее.
Скачайте репозиторий на свой компьютер.
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
Перейдите в папку.
cd nextjs-middleware-auth-bypass-lab
Создайте Docker-образ.
docker build -t nextjs-auth-bypass .
Запустите контейнер.
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
В браузере перейдите по следующему адресу.
http://localhost:3000
В проекте имеются следующие страницы.
Доступ к странице admin контролируется через middleware.
Сначала попробуйте получить доступ к странице /admin через браузер.
Поскольку у вас нет прав, вы будете перенаправлены на страницу login.
Перехватите запрос с помощью Burp Suite.
Добавьте в запрос следующий HTTP-заголовок.
x-middleware-subrequest: middleware
Отправьте запрос снова.
Когда проверка middleware обойдена, видно, что страница admin становится доступной.
После завершения установки:
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
Для устранения этой уязвимости рекомендуется заменить затронутые версии Next.js на актуальные.
Кроме того, авторизация не должна выполняться только в middleware — на серверной стороне также следует применять дополнительные проверки прав доступа.