Критична вразливість у фреймворку Next.js, офіційно виявлена 21 березня 2025 року, дозволяє зловмисникам обходити засоби безпеки middleware (функції проміжної обробки) шляхом простої маніпуляції заголовком (header). У цій статті розглянуто, що відомо про CVE-2025-29927, як можна зменшити ризики, та як продукти Invicti (раніше Netsparker) допомагають виявити й підтвердити наявність вразливості у вебдодатках.
Загальна інформація
Ця вразливість (CVE-2025-29927) була підтверджена Next.js, одним з найпопулярніших фреймворків для створення вебсайтів на базі React.
Middleware (функції проміжної обробки) – це ланцюжок обробки, який дозволяє програмним модулям аналізувати, змінювати або перенаправляти HTTP-запит до того, як він потрапить до кінцевого обробника коду. Туди часто впроваджується автентифікація.
Недолік дозволяє повністю обійти функціонал Next.js в додатку, включно з критичними функціями безпеки, як-от автентифікація та авторизація.
Станом на 25 березня 2025 року всі продукти Invicti можуть виявляти та звітувати про CVE.
Вразливість впливає на такі версії Next.js:
- Next.js 11.1.4 – 13.5.6 (без патчів)
- Next.js 14.x до 14.2.25
- Next.js 15.x до 15.2.3
Єдиним надійним способом усунення вразливості є оновлення до безпечної версії. Можна тимчасово увімкнути блокування за допомогою WAF на рівні проксі, однак це не є довготривалим рішенням.
Ризик обходу middleware в Next.js
Вразливість дозволяє зловмисникам повністю обійти функціонал middleware, додаючи заголовок x-middleware-subrequest до HTTP-запитів.
Особливо критичною ця проблема є тому, що middleware в Next.js широко використовується для автентифікації, авторизації, переписування шляхів (path rewriting), застосування заголовків безпеки, які злочинний хакер може легко обійти.
Хто в зоні ризику?
Якщо відповіді на обидва запитання – “так”, то застосунок є вразливим (якщо він не оновлений):
- Чи покладається вебсайт на Next.js middleware для реалізації засобів безпеки?
- Чи запускається додаток за допомогою next start з конфігурацією output: ‘standalone’?
Ризик особливо великий, якщо:
- Middleware використовується для перевірки авторизації або автентифікації.
- Вебсайт покладається на middleware для впровадження заголовків безпеки (наприклад, Content Security Policy – CSP), які обмежують місця, куди дозволено завантажувати ресурси.
- Middleware застосовується для переписування шляхів для обмеження доступу до певних маршрутів.
Не вразливі:
- Програми, розміщені на Vercel або Netlify, оскільки ці платформи впровадили запобіжні заходи на своїх крайових (edge) рівнях.
- Програми, розгорнуті як статичні експорти (де middleware не виконується).
Якщо команда не знає подробиць щодо використання Next.js або хоче мати можливість провести перевірку на цю вразливість, то використання автоматизованого рішення DAST добре для цього підходить.
Як працює вразливість middleware Next.js
Внутрішній заголовок x-middleware-subrequest використовується у Next.js, щоб запобігти запуску нескінченних циклів рекурсивних запитів. Натомість вразливість дозволяє зловмиснику маніпулювати ним так, щоб Next.js не виконував middleware.
Для різних версій Node.js експлойт відрізняється:
- Для версій до 12.2: x-middleware-subrequest: pages/_middleware
- Для новіших версій: x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
- (або src/middleware:src/middleware:src/middleware:src/middleware:src/middleware якщо використовується директорія src)
Коли цей заголовок містить відповідне значення, middleware повністю обходиться, дозволяючи запиту не проходити перевірки безпеки чи модифікації.
Як продукти Invicti виявляють CVE-2025-29927
Пасивне виявлення через дослідження трафіку з динамічним аналізом програмних компонентів (Invicti)
Вразливість виявляється шляхом пасивного моніторингу вебтрафіку під час сканування. Invicti Enterprise використовує цю техніку зі своєю базою даних вразливостей для виявлення недоліку. Цей метод шукає у відповідях заголовок x-powered-by: Next.js, який дає зрозуміти, що програма використовує Next.js. Наявність вразливої версії додатково підтверджується оцінкою функції next.version у контексті JavaScript браузера для отримання точної версії.
Потім рішення порівнює це значення з постійно оновлюваною базою даних відомих CVE і сигнатур мережевого виявлення, щоб визначити, чи вразлива ця версія.
Станом на 25 березня 2025 року ця перевірка доступна в Invicti Enterprise, Standard та Acunetix 360.
Активне виявлення (Acunetix)
З понеділка, 24 березня 2025 року, перевірка доступна для всіх клієнтів Acunetix Premium.
Як вона працює:
1. Визначення використання middleware в Next.js: пошук характерних ознак middleware Next.js, зокрема 307-перенаправлення, коли тіло (body) відповіді дорівнює значенню заголовка location. Цей патерн унікальний для редіректів middleware Next.js.
2. Підтвердження наявності фреймворку Next.js: пошук заголовка x-powered-by: Next.js. у відповідях.
3. Перевірка з корисними навантаженнями:
- Для новіших версій (13.2.0+): middleware:middleware:middleware:middleware:middleware (і варіант для src)
- Для версій до 12.2: pages/_middleware
- Для проміжних версій (від 12.2 до 13.2.0): middleware
4. Додаткові перевірки:
- Надіслання запиту із потенційним заголовком обходу – чи повертається відповідь 200 OK.
- Контрольний запит із дещо зміненим заголовком, наприклад Y-Middleware-Subrequest, щоб підтвердити, що все ще відбувається редірект (307).
- Інший запит із неправильним значенням, щоб підтвердити належну поведінку.
- Повторення успішного обходу.
5. Підтвердження вразливості відбувається після проходження всіх етапів перевірки, що зменшує ризик помилкових спрацювань.
Як усунути CVE-2025-29927
1. Негайне оновлення Next.js:
- 15.x → ≥ 15.2.3
- 14.x → ≥ 14.2.25
- 13.x → ≥ 13.5.9
- 12.x → ≥ 12.3.5
2. Тимчасові заходи, якщо одразу оновити не можливо:
- Блокування заголовка x-middleware-subrequest на крайовому рівні або проксі (не в самому middleware!).
- Користувачі Cloudflare можуть увімкнути відповідне правило WAF (зараз воно позначене як необов’язкове в рішенні, бо впливає на сторонні фреймворки автентифікації).
Компанія Invicti дякує Rachid Allam і Yasser Allam за їхнє дослідження, а також внутрішнім командам за оперативну реалізацію перевірки за один робочий день.
Команда безпеки Invicti продовжує моніторинг ситуації й оновлюватиме інформацію в міру її надходження.







