Уязвимость в Ruby on Rails позволяет записывать файлы на сервер через ImageMagick
В Ruby on Rails закрыли критическую уязвимость в Active Storage, компоненте для работы с загружаемыми файлами. Неаутентифицированный злоумышленник может записать произвольные файлы на сервер, загрузив специально подготовленный файл, если приложение обрабатывает загрузки через ImageMagick. Оценка по CVSS составляет 9.8 из 10.

Главное в цифрах
- CVSS: 9.8 из 10
- Исправленные версии: 8.1.4.1 и 8.0.5.2
- Идентификатор: GHSA-f3w6-w445-fwh9, CVE пока нет
- CVSS второй уязвимости GHSA-v924-7rp8-4mxh: 8.8
Уязвимость находится в Active Storage. Атака срабатывает при прикреплении файла: создавать варианты изображений или превью не нужно, достаточно загрузки. Файл с SVG попадал в координатор MSL библиотеки ImageMagick через анализатор Active Storage, согласно коммиту с исправлением. MSL, скриптовый координатор, который читает и записывает файлы, названные в его скрипте.
В приложениях, которые хранят файлы в сервисе Disk, атакующий также может читать любые файлы, доступные приложению. Среди них обычно есть secret_key_base и учётные данные других систем. По словам Rails, это может привести к удалённому выполнению кода или перемещению в другие системы. Уязвимость отслеживается как GHSA-f3w6-w445-fwh9, CVE-идентификатора пока нет. Ошибку нашёл исследователь RyotaK из GMO Flatt Security.
Кто под угрозой
Приложение уязвимо, если выполняются все три условия. Первое: обработка изображений идёт через ImageMagick. Проверить это можно по параметру config.active_storage.variant_processor. Если он не задан, по умолчанию используется mini_magick для load_defaults до 7.0 и vips начиная с 7.0. Этот же параметр определяет, какая библиотека анализирует загрузки.
Уязвимы все версии Active Storage до 8.0.5.2 и версии серии 8.1 до 8.1.4.1. Ветки старше 8.0 больше не поддерживаются, исправлений для них не выйдет. В июле Rails закрыл другую критическую уязвимость Active Storage, CVE-2026-66066, которая касалась приложений на libvips. Приложения на ImageMagick ей не были подвержены, но под эту уязвимость они попадают.
Вторая уязвимость и исправления
Те же релизы закрывают уязвимость GHSA-v924-7rp8-4mxh с оценкой CVSS 8.8. Active Storage передавал загрузки в ImageMagick и FFmpeg под временными именами, которые сохраняли расширение исходного файла. Эти инструменты могут выбрать декодер по расширению, если содержимое файла не показывает формат. Поэтому тот, кто задавал имя файла и тип содержимого, мог выбрать декодер для обработки.
Rails настоятельно рекомендует обновиться как можно скорее. Исправленные версии также включают политику безопасности ImageMagick для MiniMagick, Ruby-гема, через который Active Storage вызывает ImageMagick. Политика блокирует координатор MSL, координаторы, которые читают или удаляют файлы помимо самого изображения, координаторы, загружающие удалённые или локальные ресурсы, все координаторы на базе Ghostscript и делегат gs, а также косвенные ссылки вида @filename. В Rails заявили, что им сообщили об одной цепочке атаки, но они не считают её единственной. Эксплуатация не подтверждена, а способа проверить, не атаковали ли уже приложение, в бюллетене не описано.

