Ruby on Rails закрыл критическую уязвимость, ведущую к удалённому выполнению кода

Команда Ruby on Rails выпустила патчи для критической уязвимости, которая позволяет неаутентифицированному атакующему выполнять код на сервере. Проблема CVE-2026-66066 получила 9,5 балла по шкале CVSS и описана как произвольное чтение файлов, потенциально раскрывающее секреты приложения.

По словам сопровождающих проект, в конфигурации по умолчанию приложение Rails, отображающее варианты изображений, может позволить неаутентифицированному злоумышленнику прочитать произвольные файлы с сервера, включая окружение процесса. В окружении атакующий может найти secret_key_base и учётные данные внешних систем и использовать их для эскалации до удалённого выполнения кода и перемещения внутри инфраструктуры.

В чём причина

Проблема затрагивает приложения, которые используют библиотеку libvips для обработки изображений в Active Storage и разрешают загрузку файлов от недоверенных пользователей. libvips помечает часть операций чтения и записи как unfuzzed — небезопасные для недоверенного контента, а Active Storage эти операции не отключала.

В бюллетене описана цепочка атаки: «Мы знаем о механизме, с помощью которого атакующий, загрузив специально подготовленный файл, может раскрыть содержимое произвольных файлов, доступных на файловой системе приложения». Атакующему достаточно вызвать одну из таких операций через загруженный файл.

Какие версии исправлены

Патчи вошли в версии Active Storage 7.2.3.2, 8.0.5.1 и 8.1.3.1. Разработчикам рекомендуется обновить развёртывания как можно скорее, а также поднять libvips минимум до версии 8.13 — в более старых выпусках нет возможности отключить unfuzzed-операции.

Важное предупреждение из бюллетеня: обновление закрывает уязвимость, но не отменяет уже похищенные секреты. «Обновление закрывает уязвимость, но не отменяет уже выведенный секрет, если это произошло. Пострадавшее приложение должно считать каждый секрет, доступный процессу приложения, потенциально раскрытым и заменить его», — отмечают сопровождающие.

Эксплуатация

По данным компании Rapid7, по состоянию на 30 июля признаков эксплуатации уязвимости в дикой природе не зафиксировано. Тем не менее патч стоит ставить без задержек: уязвимость даёт доступ к окружению процесса и secret_key_base, то есть открывает путь к выполнению кода на любом Rails-приложении с обработкой изображений через Active Storage и libvips. Особенно это касается сервисов, которые принимают загрузку файлов от анонимных или недоверенных пользователей — они попадают под описание по умолчанию.

Разработчикам стоит не только обновить gem, но и проверить версию системной библиотеки libvips: патч для Active Storage эффективен только в сочетании с libvips 8.13 и новее, поскольку в более ранних выпусках нет поддержки отключения unfuzzed-операций. А поскольку уязвимость может раскрыть окружение процесса, при малейшем подозрении на компрометацию вместе с обновлением стоит ротировать ключи и секреты приложения — в бюллетене прямо сказано, что каждый секрет, доступный процессу, следует считать потенциально раскрытым и заменить.

Источник: securityweek.com