Уязвимость CSRF в Server Actions React Router / Remix (CVE-2026-22030)

ReactNode.jsDevOps

Что произошло

  • Команды React Router / Remix runtime опубликовали уведомление о безопасности (CVE-2026-22030 / GHSA-h5cw-625j-3rxh), описывающее уязвимость к подделке межсайтовых запросов (CSRF) / ошибку в проверке источника, которую можно вызвать с помощью POST-запросов документа при использовании обработчиков действий маршрутов на стороне сервера в режиме Framework или при использовании экспериментальных действий сервера React. Проблема оценена как умеренная (CVSS 6.5). Исправленные версии доступны. (github.com)

Почему это важно для полностековых команд

  • Действия маршрутов на стороне сервера и действия сервера React выполняют или запускают серверную логику непосредственно из маршрутов пользовательского интерфейса. Уязвимость CSRF в этом пути обработки запросов позволяет злоумышленнику с аутентифицированной жертвой вызвать нежелательные изменения состояния (например: изменить данные, выполнить транзакции или изменить настройки), заставив жертву загрузить вредоносную страницу, которая отправляет POST-запрос в ваше приложение.
  • Команды, использующие режим Framework, Remix v2 или нестабильные функции RSC/Server Action, являются основной группой риска — приложения, использующие декларативный режим () или режим данных (createBrowserRouter/RouterProvider), не подвержены воздействию согласно уведомлению. (github.com)

Немедленные действия (по приоритету)

  1. Обновите зависимости сейчас
    • Обновите @remix-run/server-runtime до >= 2.17.3 и react-router до >= 7.12.0 в любых проектах, которые используют режим Framework или Server Actions. Обращайтесь с этим как с любой другой исправлением безопасности зависимости: запускайте тесты и развертывайте, как только CI даст зеленый свет. (github.com)
  2. Определите затронутые пути кода
    • Проверьте маршруты, которые экспонируют обработчики action на стороне сервера, серверные функции или экспериментальные действия сервера. Сосредоточьтесь на любых конечных точках POST, которые принимают данные формы или изменяют состояние.
  3. Примените меры смягчения на уровне выполнения, пока все сервисы не будут исправлены
    • Требуйте явные защиты от CSRF для затронутых конечных точек (токены CSRF, куки SameSite=strict для сессионных куки, проверки источника/реферера) и предпочитайте конечные точки, изменяющие состояние, которые требуют явного заголовка или токена, который браузеры не отправят автоматически.
  4. CI / гигиена зависимостей
    • Убедитесь, что сканирование зависимостей (npm audit, Snyk, обновления безопасности Dependabot/GitHub Dependabot) активно и автоматически создаёт PR для этого уведомления; фиксируйте и тестируйте транзитивные обновления в тестовой среде перед развертыванием в производственной.

Обнаружение и проверка

  • Инвентаризация: выполните проверки зависимостей (npm ls @remix-run/server-runtime react-router или эквивалент в других менеджерах пакетов) по всем репозиториям и конвейерам сборки.
  • Проверки на уровне выполнения: ищите неожиданные POST-запросы к маршрутам пользовательского интерфейса в журналах доступа и межсетевых экранах веб-приложений; убедитесь, что запросы, изменяющие состояние, требуют либо проверенного токена CSRF, либо явного API-заголовка, отсутствующего в автоматических межсайтовых отправках форм.
  • Тесты: добавьте интеграционные тесты, имитирующие попытки CSRF против конечных точек действий (отсутствующий токен, неправильный источник), чтобы предотвратить регрессии.

Долгосрочные меры смягчения и лучшие практики

  • Предпочитайте явные API-маршруты для изменений состояния: по возможности отделяйте маршрутизацию пользовательского интерфейса от конечных точек мутации и требуйте токены CSRF или токены носителей для конечных точек мутации.
  • Укрепите использование действий сервера: избегайте включения нестабильных функций RSC/Server Action в производственной среде, пока не сможете полностью оценить модель безопасности или пока вышестоящие проекты не отметят их как стабильные с укрепленной проверкой запросов.
  • Автоматизируйте: блокируйте слияние обновлений зависимостей без автоматического покрытия тестами для обработчиков на стороне сервера и рассмотрите возможность использования флагов функций на уровне выполнения, которые по умолчанию отключают экспериментальные серверные функции.

Резюме CVE-2026-22030 является практической уязвимостью CSRF/ошибки проверки источника в обработке действий на стороне сервера, используемой средами React Router / Remix. Если ваш стек использует режим Framework или нестабильный путь Server Actions, немедленно обновите до исправленных версий среды выполнения, проверьте затронутые конечные точки и добавьте защиты CSRF/Origin по мере необходимости. (github.com)

Источник: Уведомление о безопасности GitHub — GHSA-h5cw-625j-3rxh (React Router / @remix-run/server-runtime). (github.com)

Источник

Читать дальше