Команда разработчиков Ruby on Rails опубликовала исправление для серьезной уязвимости в компоненте Active Storage. Эта проблема безопасности давала неавторизованным злоумышленникам возможность отправить вредоносное изображение, которое позволяло бы получить доступ к файлам системы, доступным приложению, а также выполнить произвольный код на сервере.

Уязвимость была независимо выявлена специалистами из Ethiack и GMO Flatt Security. Ей присвоен код CVE-2026-66066 с оценкой 9,5 балла по шкале уязвимостей CVSS. Через эту уязвимость攻击者 мог получить доступ к переменным окружения, базовому ключу шифрования, главному криптографическому ключу фреймворка, учетным данным баз данных, ключам облачных сервисов и различным API-токенам.

Важно отметить, что риск существует только для приложений, которые используют библиотеку libvips для обработки изображений через Active Storage и принимают файлы от неподтвержденных источников. Приложения, которые используют MiniMagick, находятся в безопасности.

Уязвимость затрагивает следующие версии Ruby on Rails: 7.0.0-7.2.3.1, 8.0.0-8.0.5 и 8.1.0-8.1.3. Ветка Rails 6.x также подвержена угрозе, если администратор самостоятельно настроил Vips в качестве обработчика графики.

Обновленные версии Ruby on Rails (7.2.3.2, 8.0.5.1 и 8.1.3.1) уже содержат патч. Также необходимо убедиться, что установлены libvips версии 8.13 или выше и ruby-vips версии 2.2.1 или выше.

Для наглядной демонстрации уязвимости исследователи из Ethiack разработали эксплуатационный код в виде MAT-файла версии 7.3. Этот файл представляет собой HDF5-контейнер с указанием на удаленный файл, который интересует атакующего. Во время загрузки вредонос скрывает свой код под видом PNG-изображения, используя соответствующий тип контента. Active Storage передает файл библиотеке libvips, которая обрабатывает HDF5-контейнер, получает доступ к указанному файлу на сервере и считывает его. Прочитанные данные преобразуются в пиксели сгенерированного изображения, которое затем возвращается злоумышленнику.

Получив базовый ключ шифрования, злоумышленник может создать фальшивый подписанный токен с параметрами трансформации графики и инициировать исполнение кода на Ruby. Исследователи из Ethiack показали, как можно скомбинировать эту уязвимость с другой проблемой (CVE-2025-24293) для полноценной атаки.

Эксперты подчеркивают, что простое обновление не является достаточной мерой защиты. Администраторам необходимо предположить, что все чувствительные данные, доступные процессу приложения, могут быть скомпрометированы. Следует немедленно изменить базовый ключ, главный криптографический ключ, пароли баз данных, ключи Active Storage и сторонние токены доступа.

Если по каким-либо причинам невозможно установить обновления, специалисты рекомендуют установить переменную окружения VIPS_BLOCK_UNTRUSTED или выполнить команду Vips.block_untrusted(true) в коде приложения.