KindaRails2Shell: критическая RCE-уязвимость в Rails через Active Storage

· Безопасность
Исследователи Ethiack раскрыли уязвимость CVE-2026-66066 в стандартных приложениях Ruby on Rails, использующих Active Storage с обработчиком vips. Она позволяет читать произвольные файлы и выполнять код удалённо.

cover.svg

Команда исследователей компании Ethiack сообщила о критической уязвимости в Ruby on Rails, получившей идентификатор CVE-2026-66066 и звучное название KindaRails2Shell. Проблема кроется в Active Storage — встроенном во фреймворк механизме работы с загруженными файлами и обработки изображений, который включён по умолчанию во многих production-приложениях.

В чём суть

Уязвимость затрагивает связку Active Storage и обработчика изображений vips — именно он поставляется по умолчанию в официальных Docker-образах Rails, а также в Debian и Ubuntu. Приложения, использующие вместо него Magick, этому вектору не подвержены.

Под удар попадают версии Rails 7.0.0–7.2.3.1 и 8.0.0–8.1.3 в конфигурации по умолчанию. Ветка 6.x уязвима только в том случае, если Active Storage был настроен нестандартным образом. Условие эксплуатации простое и, увы, распространённое: приложение должно принимать загрузку изображений от недоверенных пользователей. По словам авторов, под угрозой оказывается практически любая функция, где пользователь загружает картинку, а сервис возвращает её обработанную версию — аватары, миниатюры, фотографии профиля.

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

Кто и как нашёл

Уязвимость независимо обнаружили Андре Баптишта, Бруно Мендеш и Рафаэл Кастильо из Ethiack, а несколькими днями позже — RyotaK из GMO Flatt Security. Команды скоординировали раскрытие вместе с сопровождающими Rails и libvips. Название KindaRails2Shell отсылает к вдохновившему исследователей проекту wp2shell: полноценного "rails2shell" не вышло, но получилось нечто похожее — отсюда приставка "kinda".

Что делать

Технических подробностей, PoC и деталей цепочки эксплуатации авторы пока не публикуют, давая администраторам время на обновление. При этом они прямо предупреждают: как только патчи выйдут и станут доступны диффы, атакующие с помощью ИИ-инструментов смогут быстро восстановить рабочий эксплойт, поэтому откладывать обновление не стоит.

Основное решение — переход на Rails 7.2.3.2, 8.0.5.1, 8.1.3.1 или новее. Важный нюанс: одного обновления Rails недостаточно, если установлена версия libvips ниже 8.13 — более старые сборки просто не умеют отключать опасные операции, и Active Storage при загрузке выбросит исключение. В таком случае придётся обновлять и сам libvips либо отказаться от зависимости, если она использовалась только для анализа изображений.

Если обновиться сразу нельзя, на libvips 8.13+ помогает переменная окружения VIPS_BLOCK_UNTRUSTED, а при использовании ruby-vips 2.2.1 и новее — вызов Vips.block_untrusted(true) в инициализаторе. WAF в отдельных конфигурациях способен выиграть время, но полноценной заменой патчу не является.


Источник: Lobsters

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.