Разработчики Ruby on Rails исправили критическую уязвимость в Active Storage. Проблема позволяла неаутентифицированному атакующему загрузить специально подготовленное изображение и прочитать произвольные файлы, доступные процессу приложения. Также уязвимость могла использоваться для удаленного выполнения кода.

Уязвимость, которую независимо обнаружили специалисты компаний Ethiack и GMO Flatt Security, получила идентификатор CVE-2026-66066 (9,5 балла по шкале CVSS) и позволяла злоумышленникам извлекать переменные окружения, secret_key_base, мастер-ключ Ruby on Rails, пароли от баз данных, учетные данные облачных хранилищ и 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 создали PoC-эксплоит, который представляет собой MAT-файл формата 7.3. Такой файл представляет собой HDF5-контейнер с внешней ссылкой на нужный атакующему файл на сервере, и при загрузке злоумышленник маскирует пейлоад под файл PNG, указывая image/png в поле content_type. Active Storage передает его библиотеке libvips, обрабатывает HDF5-контейнер, обращается к указанному в нем файлу на удаленно сервере и считывает его содержимое. Полученные данные превращаются в значения пикселей сгенерированного изображения, которое Active Storage возвращает атакующему.

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

Исследователи отмечают, что простого обновления в этом случае недостаточно, и администраторам рекомендуют считать скомпрометированными все секреты, которые мог прочитать процесс приложения. В частности, рекомендуется заменить secret_key_base, мастер-ключ, пароли баз данных, ключи Active Storage и сторонние токены.

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии