В популярных фреймворках для веб-разработки React Router и Remix обнаружена опасная уязвимость, получившая идентификатор CVE-2025-61686. Эксперты оценили её как критическую с высоким баллом CVSS 8.8 из 10. Проблема позволяет злоумышленникам получать доступ к конфиденциальным файлам на сервере или модифицировать их, что создаёт серьёзную угрозу для безопасности приложений.
Детали уязвимости
Уязвимость коренится в функции "createFileSessionStorage()", которая некорректно обрабатывает неподписанные (unsigned) файлы cookie, используемые для управления пользовательскими сессиями. Когда разработчики применяют неподписанные куки, атакующие могут сконструировать вредоносные сессионные cookie, содержащие последовательности для обхода каталогов, такие как "../". Это позволяет читать и записывать файлы за пределами предназначенного для сессий каталога.
Затронуты несколько ключевых пакетов. В частности, уязвимыми оказались "@react-router/node" в версиях от 7.0.0 до 7.9.3, а также "@remix-run/node" и "@remix-run/deno" в версиях до 2.17.1 включительно. Успешная эксплуатация уязвимости потенциально открывает доступ к чувствительным файлам на сервере. Злоумышленники могут попытаться прочитать конфигурационные файлы, исходный код приложения или другие важные системные данные. Однако масштаб воздействия напрямую зависит от прав файловой системы, которыми обладает процесс веб-сервера.
Стоит отметить, что атака имеет существенные ограничения. Злоумышленники не могут напрямую прочитать произвольные файлы через приложение. Вместо этого им необходимо создавать сессионные куки, которые ссылаются на файлы, соответствующие ожидаемому формату сессионного файла. Если совпадение найдено, данные из этого файла загружаются в серверную сессию. Впоследствии эти данные могут быть раскрыты через стандартную логику работы приложения, как сообщается в отчёте GitHub.
Более опасным вектором атаки является возможность записи. Атакующие могут записывать вредоносные данные в файлы вне целевого каталога. Эта операция потенциально способна привести к выполнению кода или полной компрометации системы, если будут перезаписаны критические конфигурационные или исполняемые файлы. Таким образом, уязвимость затрагивает не только конфиденциальность, но и целостность данных.
Разработчикам, использующим затронутые пакеты, настоятельно рекомендуется немедленно обновить свои зависимости до исправленных версий. Для "@react-router/node" требуется версия 7.9.4 или выше. Пакеты "@remix-run/node" и "@remix-run/deno" необходимо обновить до версии 2.17.2 или новее. Эти обновления содержат патчи, устраняющие проблему с обработкой куки.
Специалисты по кибербезопасности подчёркивают, что наиболее эффективной мерой смягчения рисков является использование подписанных (signed) cookie. Такие куки криптографически проверяют целостность сессии, что предотвращает возможность модификации их содержимого злоумышленниками. Переход на подписанные сессии должен рассматриваться как стандартная практика безопасности для всех приложений, работающих с чувствительными данными. Данный инцидент в очередной раз демонстрирует важность своевременного обновления зависимостей и следования принципам безопасной разработки.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-61686
- https://github.com/remix-run/react-router/security/advisories/GHSA-9583-h5hc-x8cw