Критична вразливість RCE в компонентах React Server та Next.js (CVE-2025-55182, CVE-2025-66478)

3 грудня 2025 року команда React оголосила про CVE-2025-55182 – критичну вразливість віддаленого виконання коду в компонентах React Server.

Її вплив посилюється тим, наскільки легко її експлуатувати: одного шкідливого HTTP-запиту достатньо, щоб зловмисник отримав повний контроль над вразливим сервером.

Ключові моменти

Вразливі системи: Будь-яка програма, що використовує компоненти React 19 Server або дії сервера Next.js, піддається впливу, включаючи нові проєкти create-next-app без змін коду.

Ступінь серйозності: Обидві вразливості мають оцінку CVSS 10.0. Публічні proof-of-concept, вже демонструють виконання довільних команд.

Деталі експлойту: Проблема виникає через ненадійну десеріалізацію в протоколі React Flight. Атаки вперше були виявлені 4 грудня, і очікується ширша експлуатація.

Дії постачальників хмарних послуг: Cloudflare запровадила фільтрацію запитів на рівні мережі, щоб блокувати відомі шаблони експлойтів для клієнтів, які використовують її WAF. Інші хмарні платформи можуть пропонувати подібні тимчасові засоби захисту, але жодна з них не повинна розглядатися як заміна виправлень.

Покриття Invicti: Сканери Invicti DAST тепер включають перевірки для виявлення та повідомлення про кінцеві точки, вразливі до цієї проблеми.

Негайні дії: Виправлення уражених версій React та Next.js, відновлення розгортань, оцінка вразливості додатків та перевірка журналів на наявність незвичайних або підозрілих запитів на дії сервера.

Офіційні рекомендації React та Next.js налічують останні версії виправлень.

Вразливі версії

ПакетВразливі версіїВиправлені версії
React19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1
Next.js14.3.0-canary, а також усі версії 15.x та 16.x до виходу версій із патчами15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

Інші потенційно вразливі фреймворки

  • Vite з плагіном RSC
  • Parcel з плагіном RSC
  • React Router (попередні версії RSC)
  • RedwoodJS
  • Waku

Детальніше про проблему

React 19 запровадив компоненти React Server (RSC) та серверні дії (server actions, server functions). Ці можливості залежать від кастомного бінарного протоколу Flight, який обробляє серіалізацію даних компонентів між сервером і клієнтом. У вразливих версіях декодер на стороні сервера довіряє кільком типам записів Flight, які можна підробити, що дозволяє зловмисникам надсилати шкідливі корисні навантаження, які сервер оброблятиме та виконуватиме.

Next.js вразливий, оскільки реалізує свої серверні дії безпосередньо на базі того ж середовища виконання RSC. І навіть програми, які не реалізують жодних кінцевих точок функцій React Server, можуть бути вразливими через підтримку RSC. Це також стосується уражених версій Next.js, оскільки вони за замовчуванням включають функції RSC як частину стандартного шаблону проєкту.

Вразливість існує в основному коді фреймворку, який обробляє корисні навантаження RSC, і цей код виконується щоразу, коли програма обробляє запити, навіть якщо ніхто не створив дії сервера.

Це створює серйозну загрозу безпеці. Недолік полягає не в коді програми, а в базових бібліотеках, від яких вона залежить. Це особливо непокоїть, враховуючи те, наскільки широко React та Next.js використовуються в сучасних вебдодатках.

Таким чином будь-який публічний маршрут, який викликає обробку серверних дій, може стати вектором для атаки. Wiz Research оцінює, що до 39% хмарних середовищ можуть використовувати принаймні один вразливий додаток.

“Враховуючи поширеність Next.js, це може бути найбільша вразливість додатків у 2025 році”

Bogdan Calin

головний дослідник безпеки в Invicti

Про небезпечну десеріалізацію

Проблема виникає через три тісно пов’язані пакети, що складають стек рендерингу на стороні сервера React:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

Ці компоненти відповідають за декодування та обробку корисних навантажень протоколу Flight, що надсилаються до кінцевих точок серверних дій. У вразливих версіях (React 19.0.0, 19.1.0, 19.1.1 та 19.2.0) містять логіку десеріалізації, яка не перевіряє структуру та вміст вхідних корисних навантажень.

Виклик серверної дії працює так:

  1. Сервер серіалізує результат та надсилає його назад
  2. Клієнт серіалізує аргументи функції у формат протоколу Flight
  3. Клієнт надсилає POST-запит до кінцевої точки серверної дії
  4. Сервер отримує та десеріалізує корисне навантаження
  5. Сервер викликає функцію з наданими аргументами

Коли сервер десеріалізує корисне навантаження, його можна обманом змусити інтерпретувати шкідливий payload як виконувані інструкції, а не як прості аргументи функції.

Основна проблема полягає в тому, що ця небезпечна десеріалізація відбувається до виконання будь-якого коду програми. Навіть бездоганна перевірка вхідних даних всередині не може запобігти цій проблемі, оскільки вразливість спрацьовує раніше.

Кроки з виправлення CVE-2025-55182 та CVE-2025-66478

Виправлення для серверних компонентів React 19

На додаток впливає проблема, якщо він використовує версії React 19.0.0, 19.1.0, 19.1.1 або 19.2.0 для будь-якого з наступних модулів:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
Необхідні дії:
  • Оновлення до виправлених версій, випущених командою React. Станом на 4 грудня виправлені версії – це 19.0.1, 19.1.2 та 19.2.1.
  • Перебудова та повторне розгортання всіх середовищ.
  • Забезпечення того, що жоден кастомний бандлер (bundler) або фреймворк не фіксує старі залежності RSC.

Виправлення для Next.js

Проєкт є вразливим, якщо він використовує версію 15.x або 16.x без патчів.

Необхідні дії:
  • Оновлення до останньої версії Next.js з патчем, що зазначений в офіційних рекомендаціях. Станом на 4 грудня ці збірки включають 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 та 16.0.7.
  • Відновлення артефактів продакшну для видалення вразливих шляхів коду серверних дій.
  • Забезпечення того, щоб проєкт не використовував зафіксовану версію React, яка блокує оновлення компонентів RSC.
  • Перевірка Vercel, контейнера та self-hosted образів (для власного хостингу), щоб підтвердити, що вони підтягують оновлені пакети.
  • Перевірки безпеки Invicti на наявність CVE-2025-55182 та CVE-2025-66478

Станом на 5 грудня, рішення DAST від Invicti включають тести на наявність вразливостей компонентів React Server (CVE-2025-55182 та CVE-2025-66478).

Висновок

Цей випадок показує, що навіть широко довірені та активно підтримувані фреймворки все ще можуть мати серйозні недоліки безпеки. З максимальним балом CVSS 10.0, легкістю експлуатації та вразливими конфігураціями за замовчуванням, це створює значний ризик.

Підписатися на новини