В Ruby on Rails обнаружена критическая уязвимость CVE-2026-66066, которая позволяет превратить безобидную на вид картинку в ключ к секретам приложения. Проблема, получившая имя KindaRails2Shell, раскрыта 30 июля и оценена в 9,5 балла из 10. Она затрагивает компонент Active Storage, отвечающий за загрузку файлов в облачные хранилища или на локальные диски.
Суть проблемы
Уязвимость связана с тем, как Active Storage взаимодействует с библиотекой обработки изображений libvips. В libvips есть операции, которые не проходили фаззинг — тестирование на устойчивость к вредоносным данным, — и потому небезопасны для работы с непроверенным контентом. Active Storage при этом не отключает их должным образом.
«CVE-2026-66066 особенно опасна тем, что атакующему может не понадобиться аккаунт или привилегированный доступ», — отметил Энсар Секер, CISO компании SOCRadar. Загружая специально сформированные файлы, злоумышленник может заставить Active Storage отдать файлы, доступные процессу Rails: переменные окружения, секреты приложения, учётные данные баз данных, ключи облачных сервисов и API-токены.
Особую ценность представляет secret_key_base — ключ, которым подписываются и шифруются cookie, учётные данные и данные сессий. «Компрометация secret_key_base фактически отдаёт атакующему ключ от приложения», — пояснил Секер. Дальше возможны подделка данных приложения и сессий, доступ к базам данных и облачным сервисам, перемещение по внутренней сети и даже выполнение кода (RCE). Именно путь эскалации делает уязвимость критической: обычная форма загрузки аватара или генерации превью может стать входной точкой в инфраструктуру.
Кто в зоне риска и что делать
Проблема актуальна, если приложение использует libvips для обработки изображений Active Storage (это поведение по умолчанию начиная с Rails 7.0) и принимает загрузки от недоверенных или неавторизованных пользователей. Исправления вышли в версиях 7.2.3.2, 8.0.5.1 и 8.1.3.1 — обновляться нужно немедленно. При этом простого апгрейда Rails недостаточно: установленная в системе libvips должна быть версии 8.13 или новее.
Секер советует относиться к инциденту как к возможной утечке секретов, а не только как к плановому обновлению: отозвать secret_key_base и все доступные в Rails учётные данные, инвалидировать активные сессии, проверить логи приложений, прокси, объектного хранилища и обработки изображений на подозрительные загрузки. Саму обработку изображений стоит изолировать в песочницах и контейнерах с минимальным доступом к файлам, применять строгие списки разрешений и сканировать загрузки до обработки.
«Организации не могут оценить свою подверженность, просто ответив на вопрос, используют ли они Rails», — подчёркивает Секер: два приложения на одной версии Rails могут иметь совершенно разный уровень риска в зависимости от обработчика изображений, путей загрузки и системных пакетов. А когда уязвимость даёт произвольный доступ к файлам, установка патча закрывает вход, но не отзывает учётные данные, которые могли быть скопированы ранее.
Источник: csoonline.com