flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce
CVE-2025-55182: уязвимость React2Shell в RSC
CVE-2025-55182 — удалённое выполнение кода без аутентификации при декодировании payload React Server Components (RSC). React подтвердил ошибку; Google Threat Intelligence описала кампании с загрузчиками, бэкдорами и майнерами.[1], [4], [5]
Представьте администратора, который сверяет запрос со списком разрешённых служб. Ошибочный поиск принимает унаследованное из шаблона имя за запись, добавленную владельцем списка. Исправление React проверяет, что запрошенный экспорт принадлежит самому модулю; публичное уведомление не раскрывает полную последовательность эксплуатации. Обновите затронутые пакеты.[1]
Ключевые понятия и термины
React Server Components (RSC)- React Server Components: протокол и пакеты React для серверного рендеринга и обмена данными Flight.[1]
Связи со стандартами
- Ссылка CWE для слабого места, описанного в этом руководстве: CWE-502
- CISA KEV — добавлено 2025-12-05 — CVE-2025-55182
Анализ первопричины
React подтвердил RCE из-за ошибки декодирования payload для React Server Functions; поддержки RSC могло быть достаточно. Первое предупреждение не раскрыло деталей. Открытый upstream-патч проверяет собственные свойства в requireModule() и обрабатывает ошибки multipart. Это конкретное исправление, а не полное воспроизведение декодера или всей цепочки.[1], [2]
Затронутые версии React2Shell и область развертывания
| Компонент или конфигурация | Оценка применимости | Мера исправления |
|---|---|---|
react-server-dom-webpack, react-server-dom-parcel или react-server-dom-turbopack версий 19.0, 19.1.0, 19.1.1 или 19.2.0. | Поддержка RSC на сервере может сделать приложение уязвимым даже без явно объявленной конечной точки Server Function; серверная граница должна быть доступна. | Обновите соответствующую ветку пакета до 19.0.1, 19.1.2 или 19.2.1 либо новее. Пересоберите и повторно разверните серверный артефакт. |
| Next.js App Router в затронутых версиях 15.x/16.x или начиная с 14.3.0-canary.77 в последующих canary-сборках. | Затронутые интеграции фреймворка включают уязвимые пакеты RSC. Не считайте систему безопасной только потому, что приложение не объявляет собственную конечную точку Server Function. | Используйте исправленную версию соответствующей ветки: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 или 16.0.7 либо новее. Это минимальные версии из указанного уведомления; перед развертыванием проверьте текущую ветку поставщика. |
| Клиентское React-приложение без серверной поддержки RSC. | Не входит в документированную область CVE: на сервере нет границы декодирования. | Для этой конфигурации серверное исправление React2Shell не требуется. Пересмотрите оценку, если появятся RSC или серверные компоненты. |
| Развертывание помечено как исправленное. | Версия в манифесте не подтверждает, что все рабочие регионы, preview-сервисы, worker-процессы и контейнеры используют исправленный артефакт. | Проверьте digest образов и разрешенные версии пакетов в production, preview и worker-средах; расследуйте предыдущие периоды воздействия. |
| Рекомендации по веткам Next.js в обновлении React от 2026-01-26 | В более поздних рекомендациях React указаны новые версии с исправлениями безопасности; это не минимальные версии, впервые исправившие CVE-2025-66478. Связанные уведомления RSC и поддерживаемые ветки могут менять целевую версию обновления. | Для связанных уведомлений RSC CVE-2025-55183, CVE-2025-55184, CVE-2025-67779 и CVE-2026-23864 React указал исправленные версии 19.0.4, 19.1.5 и 19.2.4. Рекомендации Next.js от 2026-01-26: 14.2.35 для стабильных 13.3.x–14.x; 15.0.8 для 15.0.x; 15.1.12 для 15.1.x; 15.2.9 для 15.2.x; 15.3.9 для 15.3.x; 15.4.11 для 15.4.x; 15.5.10 для 15.5.x; 16.0.11 для 16.0.x; 16.1.5 для 16.1.x. Это более поздние рекомендации для связанных проблем, а не минимальные версии Next.js, исправляющие CVE-2025-66478. Перед развертыванием проверьте последнее уведомление поставщика и поддерживаемую ветку. |
CVE-2026-23869 — отказ в обслуживании RSC (2026-04-08). | По данным React, специально сформированные HTTP-запросы к конечным точкам Server Function могут вызывать чрезмерную нагрузку на CPU до минуты, после чего возникает перехватываемая ошибка. Затронутые ветки пакетов react-server-dom-* включают версии до 19.0.4, 19.1.5 и 19.2.4. | React указывает исправленные версии 19.0.5, 19.1.6 и 19.2.5 соответственно. |
CVE-2026-23870 — отказ в обслуживании RSC (2026-05-06). | По данным React, специально сформированные HTTP-запросы могут вызвать нехватку памяти или чрезмерную загрузку CPU. Затронутые ветки пакетов react-server-dom-* включают версии до 19.0.5, 19.1.6 и 19.2.5. | React указывает исправленные версии 19.0.6, 19.1.7 и 19.2.6 соответственно. |
CVE-2026-44907 — отказ в обслуживании Server Functions (2026-07-21). | По данным React, специально сформированные HTTP-запросы могут вызвать нехватку памяти или чрезмерную загрузку CPU. Затронутые ветки пакетов react-server-dom-* включают версии до 19.0.7, 19.1.8 и 19.2.7. | React указывает исправленные версии 19.0.8, 19.1.9 и 19.2.8 соответственно. |
Пошаговый сценарий атаки
Исходный код: Уязвимый vs Защищённый вариант
Этот точный фрагмент upstream-патча возвращает только собственный экспорт модуля; он не воспроизводит всю ошибку декодера и не является самостоятельным исправлением. Обновите React Server Components или затронутый фреймворк.[2], [1]
Фрагмент исходного кода: Метод requireModule() в Parcel-клиенте React
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
return moduleExports[metadata[NAME]];
}
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
return moduleExports[metadata[NAME]];
}
return (undefined: any);
}
Чек-лист по защите системы для инженеров
- ✓Проверьте lock-файлы, образы и серверные сборки.[1], [4]
- ✓Обновите React RSC до 19.0.1, 19.1.2 или 19.2.1 и новее и используйте исправленные версии фреймворков. Для более поздних уведомлений RSC сверьтесь с матрицей и обновите разрешённые пакеты
react-server-dom-*до последней подходящей исправленной версии; фреймворки могут включать эти пакеты.[1], [4], [8], [9], [10] - ✓Пересоберите и разверните; WAF не заменяет исправление.[1]
- ✓Проверьте фактические работающие версии.[1]
- ✓После экспозиции без исправления проверьте процессы и соединения, затем смените секреты.[5], [6]
Источники
- React Security Advisory — CVE-2025-55182
- React upstream patch — commit 7dc903c
- NVD — CVE-2025-55182, CWE-502 and KEV status
- Next.js Security Advisory — CVE-2025-66478
- Google Threat Intelligence — React2Shell exploitation
- CISA Known Exploited Vulnerabilities Catalog
- Уведомление безопасности React — дополнительные уязвимости RSC
- Предупреждение React — CVE-2026-23869 (DoS в RSC)
- Предупреждение React — CVE-2026-23870 (DoS в RSC)
- Предупреждение React — CVE-2026-44907 (DoS в Server Functions)