Злоумышленники приступили к активной эксплуатации критической уязвимости в Ruby on Rails, которая позволяет выполнять произвольный удаленный код на уязвимых серверах. Информация об атаках поступила от компании VulnCheck, занимающейся анализом угроз безопасности, спустя примерно месяц после выхода официальных патчей. Уязвимость отслеживается под идентификатором CVE-2026-66066, получила неофициальное название KindaRails2Shell и обладает оценкой в 9,5 балла по шкале CVSS.

В начале августа специалисты VulnCheck зафиксировали примерно 7000 доступных из интернета серверов на базе Rails, которые продолжали работать с уязвимыми настройками до начала кампании по взлому. Сама платформа выпустила исправление и выпустила рекомендацию по безопасности еще 29 июля 2026 года. Разработчики призвали немедленно обновить все приложения на базе Rails, которые используют библиотеку libvips для обработки изображений в модуле Active Storage и принимают файлы от ненадежных пользователей. Наибольшему риску подверглись те конфигурации, где конечные пользователи могут загружать собственные изображения.
Механизм уязвимости и цепочка обработки файлов
Проблема кроется в несоответствии подходов к интерпретации загружаемых файлов в различных программных компонентах. Когда приложение на Rails задействует libvips для обработки графики в Active Storage, фреймворк доверяет типу содержимого, который заявляет клиент. В то же время libvips проверяет фактические байты файла для определения его реального типа независимо от утверждений клиента.
Злоумышленник может обойти это ограничение, создав вредоносный файл и обозначив его как формат MATLAB Level 5. Библиотека libvips передает документ загрузчику MATLAB, который направляет его в libmatio. Этот компонент считывает заголовок, идентифицирующий файл как стандарт MAT 7.3, и передает данные дальше в HDF5.
Финальным этапом занимаются возможности HDF5. Функция External File List в HDF5 позволяет байтам набора данных располагаться в другом файле, путь и смещение которого задаются отдельно. В результате рендеринг такого псевдоизображения считывает произвольный файл с сервера и возвращает его содержимое в виде пикселей. Неавторизованный злоумышленник получает возможность читать любые файлы, доступные процессу Rails, включая базы данных учетных записей, ключи хранилищ и секреты сеансов, без необходимости проходить аутентификацию. После получения доступа к секретам атакующие могут подделывать сеансы, переходить к связанным системам и запускать удаленный код.
Неполнота официального патча и рекомендации по защите
Вскоре после появления патча исследователи безопасности провели обратную инженерию ошибки, после чего в публичном доступе появились технические разборы и готовый код для реализации эксплойтов. Команда Rails также опубликовала собственные инструменты форензики, помогающие администраторам проверять системы на предмет раннего вмешательства.
Проведенное компанией VulnCheck тестирование сервера с установленной версией Rails 8.1.3.1 показало, что выпущенное исправление носит неполный характер. По оценке экспертов, хотя патч блокирует чтение файлов через libvips, он не нейтрализует десериализацию Marshal ключа вариаций. Гаджет для удаленного выполнения кода продолжает срабатывать на обновленном сервере при наличии действующей цифровой подписи.
Уязвимость затрагивает приложения, которые одновременно используют libvips в качестве бэкенда для обработки изображений в Active Storage и разрешают загрузку файлов от неавторизованных или ненадежных пользователей. Серверы, не принимающие пользовательские файлы или применяющие другой обработчик графики, обладают значительно более низким уровнем риска. Администраторам рекомендуется использовать официальные инструменты форензики для проверки серверов на следы компрометации, а также отслеживать конвейеры загрузки на предмет аномальных форматов файлов вроде MATLAB.
«`html
Дополнительные технические детали и особенности эксплуатации
Сразу после публикации официального исправления исследователи безопасности выполнили обратную инженерию уязвимости. В результате в открытом доступе оказались детальные технические разборы проблемы и полностью рабочие прототипы эксплойтов, что полностью устранило любые технические барьеры для менее квалифицированных злоумышленников.
Специалисты VulnCheck протестировали исправление на сервере под управлением Rails версии 8.1.3.1 и установили, что выпущенный патч является неполным. По их утверждению, хотя обновление успешно блокирует чтение файлов через libvips, оно оставляет уязвимой десериализацию Marshal для ключа вариаций (variation-key). Соответственно, гаджет для удаленного выполнения кода (RCE) продолжает успешно срабатывать на уже пропатченном сервере, если у атакующего имеется действительная криптографическая подпись.
Для минимизации остаточных рисков эксперты советуют применять специализированные инструменты форензики, выпущенные самой командой Rails для проверки инфраструктуры на предмет уже совершенных атак или зондирования. Дополнительной эффективной мерой защиты на уровне конвейеров загрузки файлов является жесткий мониторинг поступающего контента и выявление аномальных форматов, в частности любых файлов, заявляющих принадлежность к стандарту MATLAB.
«`






