Шесть запросов до полного взлома. Ошибка в коде популярной CRM ставит под удар малый бизнес

leer en español

Шесть запросов до полного взлома. Ошибка в коде популярной CRM ставит под удар малый бизнес

Разработчики EsproCRM закрыли критическую уязвимость в механизме обработки файлов.

image

В популярной системе для управления клиентами EspoCRM нашли уязвимость, которая превращает административный доступ в полный контроль над сервером. Достаточно шести запросов, чтобы пройти путь от панели управления до выполнения команд в системе. Проблема с идентификатором CVE-2026-33656 затрагивает версию EspoCRM 9.3.3. Уязвимость обнаружили при анализе стандартного образа с веб-сервером Apache, где приложение работает от имени пользователя www-data.

Сама EspoCRM – открытая система для работы с клиентами, которую часто выбирают небольшие и средние компании. Внутри есть автоматизация процессов, обработка сделок, почта и даже собственный механизм сценариев. Именно этот механизм и стал отправной точкой атаки.

В EspoCRM встроен так называемый «движок формул» – язык сценариев, с помощью которого администратор может менять данные, запускать процессы и тестировать логику через отдельный интерфейс. Доступ к нему ограничен учётной записью администратора, и изначально такой подход выглядит безопасным. Но выяснилось, что движок обходит внутренние ограничения на уровне отдельных полей.

В обычном интерфейсе и через API часть полей защищена. Например, некоторые значения помечены как «только для чтения» и не меняются даже при попытке отправить запрос. Но движок формул идёт другим путём и записывает данные напрямую, не проверяя такие ограничения. В результате администратор может изменить поля, которые по логике системы трогать нельзя.

Ключевым оказалось поле sourceId у вложений. Оно отвечает за путь к файлу на диске. В норме система сама задаёт значение и не даёт его менять. Но через движок формул ограничение обходится. После этого атакующий может подставить любой путь – например, указать файл вне папки загрузок.

Дальше начинается самое интересное. Система формирует путь к файлу простой склейкой строки без проверки. Никакой очистки, никаких ограничений. В итоге открываются сразу две возможности.

Сначала – чтение произвольных файлов. Достаточно подменить путь, чтобы получить, например, конфигурацию приложения или файл с учётными данными базы данных.

Затем – запись файлов в произвольное место. EspoCRM поддерживает загрузку файлов по частям. Если изменить путь перед загрузкой, система сохранит данные туда, куда указал атакующий. Так можно записать собственный файл, в том числе в каталог, доступный из браузера.

Остаётся последняя деталь. На стандартной установке сервер не всегда исполняет такие файлы как программный код. Но проблему обходят с помощью файла настроек .htaccess. Добавив туда нужное правило, атакующий заставляет сервер выполнять загруженный файл как сценарий. После этого достаточно открыть специальный адрес – и сервер начинает выполнять команды. В демонстрации атаки система отвечала с правами пользователя www-data, под которым работает веб-сервер.

Уязвимость затрагивает не только запись и чтение файлов. Тот же механизм позволяет читать скрытые поля в базе данных. Среди них – хеши паролей пользователей и активные сессионные токены. Такой доступ открывает путь к дальнейшему развитию атаки внутри системы.

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

При этом сам движок формул менять не стали. Автор проекта считает, что отсутствие проверок на уровне полей – осознанное решение, а не ошибка. Тем не менее именно сочетание этого поведения с обработкой файлов и привело к критической уязвимости. Разработчик выпустил обновление в течение суток после сообщения о проблеме. Сейчас пользователям рекомендуют как можно быстрее перейти на версию 9.3.4 и выше.