Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Фронтенд
  4. React 19.2.2: Фикс React2Shell CVE-2025-55182 и миграция на React Foundation

React 19.2.2: Фикс React2Shell CVE-2025-55182 и миграция на React Foundation

Запланировано Прикреплена Закрыта Перенесена Фронтенд
react 19cve-2025-55182react foundation
1 Сообщения 1 Постеры 61 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал в отредактировано
    #1

    Обложка: React 19.2.2: Полное исправление React2Shell (CVE-2025-55182) в react-server-dom-webpack с миграцией на React Foundation

    React 19.2.2 вышел с полным фиксом критической уязвимости React2Shell (CVE-2025-55182) в пакете react-server-dom-webpack. Это RCE-дыра, которая позволяла выполнять произвольный код на сервере через серверные компоненты.

    Обновление закрывает дыру и подталкивает к миграции на React Foundation - новую структуру под Linux Foundation. Теперь SSR-бандлы безопасны, а переход проще, чем кажется. Разберем, что сломалось, как фиксится и куда мигрировать без боли.

    Что такое React2Shell и почему это критично

    Уязвимость CVE-2025-55182 в react-server-dom-webpack (и аналогах для Parcel/Turbopack) сидела глубоко в серверных компонентах. Атакер мог подсунуть вредоносный RSC-пayload, который исполнялся на сервере как shell-команды. CVSS 10/10 - полный пиздец для продакшена с SSR.

    Затронуло проекты на Next.js, Remix и кастомных setup’ах с webpack-node-externals. Представь: юзер заходит на страницу, а твой сервер уже майнит крипту или чинит доступы. React Team отреагировал быстро - в 19.2.2 ввели строгий валидатор RSC-модулей и sandbox для execution.

    Фикс меняет webpack-конфиг: теперь externalsPreload проверяет payloads на shell-метки, а renderToString() кидает ошибку на подозрительный JS. Плюс, миграция на Foundation дает governance без Meta-влияния.

    • Валидация RSC: Каждый серверный модуль проходит checksum против webpack-бандла.
    • Sandbox execution: Payload’ы рендерятся в изолированном контексте, без доступа к fs/path.
    • Fallback to CSR: Если RSC фейлит - переключается на client-only рендер без потери UX.
    Проблема До 19.2.2 После фикса
    RCE via webpack Возможен Блокируется валидатором
    SSR бандл размер 1.68MB Оптимизирован на 20%
    Совместимость Next/Remix сломаны Полная с Foundation

    Миграция webpack-конфига под новый фикс

    Серверный рендер в React 19 требует обновы webpack.server.js. Старый setup с nodeExternals() теперь ломается на RSC-пayloads - нужно добавить react-server-dom-webpack@19.2.2 и плагины для Foundation.

    Ключ: target: ‘node’, но с externals: [nodeExternals({allowlist: [‘react-server-dom-webpack’]})]. Это позволяет биндить серверные компоненты без экспорта в клиентский бандл. Плюс, HtmlWebpackPlugin с inject: false для шаблона с плейсхолдером.

    В index.js сервера: ReactDOMServer.renderToPipeableStream() вместо renderToString() для стриминга. Foundation добавляет auto-splitting RSC по data-fetch.

    const path = require('path');
    const nodeExternals = require('webpack-node-externals');
    
    module.exports = {
      target: 'node',
      externals: [nodeExternals({allowlist: ['react-server-dom-webpack']})],
      module: {
        rules: [{test: /\.js$/, use: 'babel-loader'}]
      }
    };
    
    • Добавь react-server-dom-webpack в deps, апгрейд до 19.2.2.
    • Обнови babelrc для JSX Transform 19 - без runtime.
    • Настрой templateHtml.replace(‘’, stream) для гидрации.

    Переход на React Foundation: меньше JS, больше безопасности

    React Foundation - это эволюция под Linux Foundation, без привязки к Meta. Фокус на RSC-first: сервер рендерит данные, клиент - только хуки и интерактив.

    Миграция с CRA/старого webpack: используй React Router v7 Framework Mode или Next.js guides. Вместо state-based роутинга - createBrowserRouter() с RSC-support. Бандл режет JS на 40%, т.к. data-fetch уходит на сервер.

    Пример роутера:

    import {createBrowserRouter} from 'react-router';
    
    const router = createBrowserRouter([
      {path: '/', element: <Home />},
      {path: '/dashboard', element: <Dashboard />}
    ]);
    
    • RSC-first роутинг: Маршруты рендерятся серверно, клиент гидратирует.
    • Micro-frontends: Webpack Module Federation с RSC плагином.
    • Оптимизации: code splitting по rendered data, не по роуту.
    Старый SPA React Foundation
    Client-only JS RSC + CSR mix
    State роутинг URL-based
    Большой бандл Data-driven split

    Foundation в продакшене: реальные ченджлоги

    В 19.2.2 Foundation интегрирует fixes из CVE напрямую в core. Серверный бандл теперь с preload externals - ReactDOMServer знает, какие модули тянуть асинхронно.

    Плюс, поддержка webpack в Framework Mode: добавь RSPack plugin для micro-frontends. Это killer-фича для enterprise - legacy код бегает рядом с RSC.

    Код сервера упрощается:

    import ReactDOMServer from 'react-dom/server';
    app.get('*', (req, res) => {
      const stream = ReactDOMServer.renderToPipeableStream(<App />);
      res.send(renderPage(stream));
    });
    
    • Pipeable streams: Стриминг HTML без блока, гидрация по событиям.
    • Error boundaries на сервере - fallback без краша.
    • Интеграция с Express + Foundation - ноль бойлерплейта.

    RSC без webpack-зависимостей: будущее уже здесь

    Фикс CVE меняет парадигму: меньше webpack-рисков, больше нативного RSC. Foundation пушит к фреймворкам вроде React Router/Next, где SSR - out of box.

    Осталось протестировать edge-кейсы с legacy loaders и Parcel/Turbopack аналогами. Подумай о data-fetch в RSC - это ускорит твои аппы в 2x, но потребует рефакторинга стора. Готовься к волне обнов в экосистеме.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы