Исследователи из компании Sansec обнаружили серьёзную уязвимость в популярном расширении Mirasvit Cache Warmer, предназначенном для прогрева полностраничного кэша магазинов на Magento и Adobe Commerce. Проблема кроется в механизме обработки куки-файлов и не требует от злоумышленника никакой аутентификации. Достаточно отправить на любой витринный странице магазина специально сформированную cookie, чтобы получить возможность удалённо исполнять произвольный код на сервере. Разработчики уже выпустили исправление, но владельцам магазинов следует как можно быстрее обновиться - атака не оставляет сложных следов и может быть легко автоматизирована.
Детали уязвимости
Уязвимость относится к категории PHP object injection (внедрение объектов PHP), что является частным случаем небезопасной десериализации. Расширение Cache Warmer использует встроенную функцию PHP unserialize() для восстановления данных из куки, которую присылает клиент. При этом никак не ограничивается, какие именно классы могут быть созданы в процессе десериализации. Атакующий может подложить в куку сериализованные объекты, которые при распаковке запустят цепочку так называемых "гаджетов" - готовых классов из ядра Magento или подключенных библиотек. В итоге внедрение объекта превращается в полноценное удаленное выполнение кода (RCE). Важно подчеркнуть: для эксплуатации не нужна учётная запись администратора, не требуется включать какие-то опции в панели управления - достаточно любого запроса к витрине.
Как именно работает атака? Расширение Mirasvit Cache Warmer создано для того, чтобы заранее наполнить полностраничный кэш для всех возможных состояний страницы: разная валюта, группа покупателей, прочие параметры. При обходе warmer упаковывает состояние сессии в куку и отправляет её вместе с каждым запросом. На сервере плагин считывает эту куку и переключает валюту и сессию посетителя перед рендерингом. Проблема в том, что данный плагин выполняется на каждом запросе к витрине, а не только на трафике warmer. Часть значения куки передаётся напрямую в unserialize(), причём разработчик не ограничил, какие классы могут быть инстанцированы. Поскольку значение приходит от клиента, злоумышленник полностью контролирует, какие объекты PHP будут воссозданы. В сочетании с цепочкой гаджетов, уже присутствующих в Magento и его зависимостях, это приводит к выполнению произвольного кода.
Уязвимы все версии Mirasvit Cache Warmer до 1.11.12 включительно. Расширение часто входит в состав других пакетов Mirasvit, поэтому многие мерчанты могут даже не подозревать, что оно установлено. По оценкам Sansec, примерно 6000 магазинов используют расширения Mirasvit. Реальное число выше - многие установки скрыты за CDN, такими как Cloudflare.
Обнаружить попытку эксплуатации относительно просто: в журналах запросов нужно искать куки CacheWarmer, значение которой содержит маркер "CacheWarmer:" и затем base64-строку. Сериализованные объекты PHP в base64 обычно начинаются с символов Tz, Qz или YT. Если cookie соответствует шаблону "CacheWarmer:(Tz|Qz|YT)", это сильный признак атаки. Однако полагаться только на сигнатуру не стоит - злоумышленники могут менять кодировку.
Последствия успешной атаки крайне серьёзны. Удаленное выполнение кода позволяет злоумышленнику загрузить веб-шеллы, установить бэкдоры, похитить данные клиентов и платежную информацию, а также полностью захватить контроль над сервером. Учитывая, что уязвимость не требует аутентификации и срабатывает на обычном трафике витрины, автоматические сканеры могут быстро найти уязвимые магазины и атаковать их в промышленных масштабах.
Какие меры следует предпринять? Прежде всего, как можно скорее обновить Mirasvit Cache Warmer до версии 1.11.12 или новее. Патч был выпущен 25 мая 2026 года. Разработчики отреагировали оперативно - исправление вышло через четыре дня после получения уведомления от Sansec. Тем, кто не может обновиться немедленно, стоит рассмотреть использование средств защиты реального времени, таких как Sansec Shield. Этот продукт блокирует попытки эксплуатации на уровне запросов, и его подписчики были защищены уже 24 апреля, в день обнаружения уязвимости.
Кроме того, после обновления необходимо проверить магазин на наличие вредоносного кода. Рекомендуется просканировать систему на предмет веб-шеллов и бэкдоров - для этого подойдут специализированные инструменты, например, eComscan от Sansec. Также стоит проверить каталоги, доступные через веб, такие как "pub/", на предмет неожиданных PHP-файлов.
Важно понимать: уязвимость CVE пока не присвоена, но Sansec уже запросила её. Mirasvit выпустил исправление, и теперь любая деталь об уязвимости может быть использована для создания точного эксплойта. Как только патч будет проанализирован, злоумышленники легко реверсируют изменения и напишут атаку. Поэтому задержка с обновлением недопустима.
Эта история ещё раз напоминает, насколько опасными могут быть ошибки в популярных расширениях для электронной коммерции. Одна незащищенная функция десериализации, скрытая в кэширующем плагине, ставит под удар тысячи магазинов. Владельцам бизнеса и администраторам платформ на Magento стоит немедленно проверить, используется ли у них Mirasvit Cache Warmer, и принять меры, пока автоматические сканеры не сделали это за атакующих.
Ссылки