У фреймворку Next.js знайшли критичну вразливість
У Next.js, популярному React-фреймворку, який використовується для розробки веб-додатків, виявлено серйозну вразливість, яка отримала кодову назву CVE-2025-29927. Про це повідомляє GBHackers.
Критична помилка дозволяє зловмисникам обходити засоби контролю безпеки, створюючи значні ризики для авторизації. Проблема стосується версій:
- Next.js 11.x — 11.1.4 і новіші версії (без виправлень)
- Next.js 12.x — невиправлені версії
- Next.js 13.x — 13.5.6 і раніше (без виправлень)
- Next.js 14.x — до 14.02.25
- Next.js 15.x — до 15.2.3
Вразливість пов’язана з тим, як фреймворк обробляє заголовок x-middleware-subrequest. Він створений в якості внутрішнього механізму захисту від нескінченної рекурсії, але зловмисник може додати цей заголовок у звичайний запит і тим самим відключити middleware повністю.
У підсумку це дозволяє отримати доступ до захищених маршрутів – наприклад, /dashboard/admin – навіть без авторизації.
За наявності заголовка x-middleware-subrequest з потрібним значенням Next.js пропускає виконання middleware та передає запит. Приклад:
X-Middleware-Subrequest: middleware: middleware: middleware
Перевірка виконується до будь-яких інших обмежень, включаючи глибину рекурсії та логіку автентифікації. У підсумку авторизаційні механізми повністю ігноруються.
Експлуатація вразливості дозволяє:
- обійти авторизацію та отримати доступ до закритих розділів;
- обійти заголовки безпеки, наприклад, CSP;
- впливати на кешування контенту.
Для атаки не потрібні спеціальні інструменти – лише коректний заголовок у HTTP-запиті.
Щоб захиститися від уразливості, потрібно оновитись до безпечних версій – 14.2.25 або 15.2.3. Якщо оновлення неможливо, заблокувати або видалити заголовок x-middleware-subrequest, перш ніж він потрапить в Next.js. Це можна реалізувати лише на рівні:
- WAF або балансувальника (наприклад, Cloudflare);
- веб-сервера (Nginx, Apache);
- Express-сервера, якщо використовується кастомна збірка.
Відкриття CVE-2025-29927 підкреслює важливість бути пильним і підтримувати програмне забезпечення в актуальному стані, особливо якщо це стосується широко використовуваних фреймворків, таких як Next.js.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: