🚨 CVSS 9.5. Одна картинка - и твой Rails-сервер читает тебе вслух все секреты 💀🔍 — 12 августа 2026 г. в 09:49:29.049
🚨 CVSS 9.5. Одна картинка - и твой Rails-сервер читает тебе вслух все секреты 💀🔍 Народ, свежак прямо из моей стихии: разработчики Ruby on Rails закрыли критическую дыру в Active Storage - CVE-2026-66066, она же с говорящим именем KindaRails2Shell. Неаутентифицированный атакующий загружает специально собранную картинку и читает произвольные файлы на сервере. А дальше - привет, RCE. Разбираю технику 👇 Баг живёт в том, как Active Storage генерирует превью (variants) загруженных изображений через библиотеку libvips. С Rails 7.0 (load_defaults 7.0) libvips стал процессором по умолчанию - и Rails НЕ отключил у него так называемые "unfuzzed"/unsafe-загрузчики, которые сам libvips прямо помечает как небезопасные для непроверенного контента. То есть уязвимость сидела в дефолтной конфигурации годами, просто никто не додумался её подсветить раньше 😏 Кто в зоне риска: - Rails 7.0.0–7.2.3.1, 8.0.0–8.0.5, 8.1.0–8.1.3 - Rails 6.x - только если Vips подключили вручную (в 6-й ветке дефолтом был другой процессор) - Условие срабатывания: приложение принимает загрузку изображений от непроверенных пользователей и генерит variant Вектор атаки Атакующий крафтит файл, который libvips парсит через один из "небезопасных" загрузчиков, а вместо валидного изображения на выходе получает содержимое произвольного файла с сервера, отрендеренное как пиксели. Дальше это уже классика: читаем ENV-переменные процесса - а там `secret_key_base`, Rails master key, пароли к базе, credentials от облачных хранилищ, API-токены. С `secret_key_base` в кармане можно подделывать подписанные куки и signed/encrypted данные - а это уже прямой путь к RCE через десериализацию 🎯 Как это закрывать - Обнови `activestorage` до фикс-версии: 7.2.3.2, 8.0.5.1 или 8.1.3.1+ - Подними libvips минимум до версии 8.13 - Если апгрейд прямо сейчас невозможен - временный костыль: выставь переменную окружения `VIPS_BLOCK_UNTRUSTED` на libvips 8.13+, это блокирует эксплуатацию - Обязательно ротируй `secret_key_base` и все секреты, доступные в окружении процесса - если тебя эксплуатировали ДО патча, старые секреты уже могли утечь - Только Vips-процессор под ударом, если у тебя ImageMagick/Magick - этот конкретный вектор не про тебя Мораль Дефолтные настройки - это не "безопасно из коробки", это "безопасно, пока кто-то не проверил". Одна картинка с нужными байтами - и сервер сам сливает тебе secret_key_base на блюдечке. Зашей проверку Active Storage себе в чек-лист пентеста прямо сегодня, а не после инцидента 😎🔐

