Популярная ecommerce-платформа Magento содержит уязвимость нулевого дня, грозящую большими неприятностями 200 тыс. онлайн-сервисов розничной торговли. Отчет о бреши, позволяющей удаленно исполнить код, исследователи из ИБ-компании DefenseCode предоставили разработчику в ноябре.

«В ходе аудита Magento Community Edition с точки зрения ИБ была обнаружена уязвимость высокой степени опасности, которая открывает возможность для удаленного выполнения кода и, таким образом, для полной компрометации системы, в том числе базы данных, содержащей конфиденциальные данные пользователей, такие как сохраненные номера кредитных карт и прочая платежная информация», — пишут исследователи в информационном бюллетене, опубликованном на сайте DefenseCode в минувшую среду.

Комментируя сложившуюся ситуацию для Threatpost, специалист по ИБ из DefenseCode Боско Станковиц (Bosko Stankovic) подчеркнул, что, несмотря на повторные нотификации, патч так и не был выпущен, хотя первый отчет был направлен в Magento в ноябре прошлого года и за истекший период вышло четыре обновления для ecommerce-платформы. Уязвимости подвержено ПО Magento Community Edition v. 2.1.6 и более ранних сборок. Magento Enterprise исследователи не проверяли, но предупреждают, что коммерческая версия платформы построена на том же уязвимом коде.

«Используется ли эта уязвимость в дикой природе, доподлинно неизвестно, однако она довольно долго оставалась непатченой, обеспечивая окно возможности потенциальным хакерам», — отметил Станковиц.

В коротком комментарии для Threatpost представители Magento подтвердили наличие уязвимости и заявили, что ведут расследование. «Мы активно ищем первопричину и не имеем данных об атаках itw, — сказано в этом заявлении. — Мы включим исправление в ближайший набор патчей и обязательно продолжим работу по совершенствованию контроля технологических процессов».

Уязвимость удаленного исполнения кода связана с дефолтной функцией Magento Community Edition, позволяющей администраторам добавлять видеоконтент Vimeo в описания продуктов. «При добавлении видеоконтента Vimeo в новый или существующий продукт это приложение автоматически получает изображение для предварительного просмотра через POST-запрос на основании URL-параметра удаленного изображения, — сказано в бюллетене DefenseCode. — Метод запроса можно изменить на GET, и этот запрос будет отправлен».

Если URL указывает на несоответствующий ресурс (к примеру, на PHP-файл), приложение выдаст ошибку. Вместе с тем этот файл будет все-таки загружен. «Приложение сохраняет файл для валидации изображения, но не удалит его, если валидация вернула ошибку», — поясняют исследователи.

Содержимое файла изображений подвергается разбору и сохраняется в папке, что создает благоприятные условия для RCE с помощью PHP-скрипта. «Чтобы добиться удаленного исполнения кода, нужно загрузить два файла, — пишут эксперты. — Один из них — файл .htaccess, обеспечивающий исполнение PHP в директории загрузок, другой — PHP-скрипт, подлежащий исполнению».

Вероятный сценарий эксплойта предполагает атаку на пользовательскую панель администрирования Magento (привилегии пользователя могут быть минимальными). Администратора можно заманить на URL, запускающий атаку подменой межсайтовых запросов. В случае успеха комбинация из файла .htaccess и PHP-скрипта может создать условия, позволяющие удаленно исполнить код на установленном Magento Community Edition.

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

В отсутствие патча DefenseCode рекомендует в обязательном порядке использовать опцию Add Secret Key to URLs, позволяющую исключить CSRF-вектор атаки.

Категории: аналитика, Главное, Уязвимости

Leave A Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  *