Специалистами компании Roundsec удалось продемонстрировать актуальную уязвимость нулевого дня (0-day exploit), в плагине распространённой CMS Magento.
Данная уязвимость широко используется злоумышленниками из группировки MageCart в серии атак на различные сервисы и площадки для кражи банковских карт пользователей.
По данным источников в сфере кибербезопасности, активность MageCart датируется как минимум 2015 годом и включает в себя несколько преступных группировок, использующих примерно одинаковые типы атак на CMS.
В 2018 году при помощи данной уязвимости злоумышленники скомпрометировали сайт Британской авиакомпании British Airways. Под угрозой оказались все пользователи, осуществлявшие бронирование через официальный сайт или приложение компании в период с августа по сентябрь 2018 года. В результате взлома в руки злоумышленников попали личные данные 380 000 человек, включая их финансовые данные. Подробнее об этом громком событии можно ознакомится по ссылке https://www.riskiq.com/blog/labs/magecart-british-airways-breach/
Также, в 2018 году из-за этой уязвимости пострадал сервис Feedify, позволяющий администраторам сайтов встраивать в свои ресурсы push-уведомления, интегрируя в код сайтов JavaScript-библиотеки Feedify. Первым компрометацию заметил ИБ-специалист, известный в Twitter под псевдонимом Placebo. Он сообщил, что один из JavaScript-файлов компании (feedbackembad-min-1.0.js) содержит вредоносный код, который похищает платежные данные пользователей.
Magecart on Feedify. A customer engagement tool. According to there website 4000+ website use there tooling/code. Fixed today after I notified them.@ HYPERLINK «https://twitter.com/ydklijnsma?ref_src=twsrc%5Etfw»ydklijnsma @GossiTheDog pic.twitter.com/K2czXkUoHD
— Placebo (@Placebo52510486) September 11, 2018
В августе 2018 последовала еще одна громкая атака на сайт крупного ритейлера Newegg. Хакерам удавалось довольно долгое время похищать данные банковских карт пользователей. Неизвестно, сколько пользователей успели пострадать от атаки, но, по данным Similarweb, посещаемость Newegg составляет порядка 50 млн в месяц.
Пример вредоносного кода для похищения пользовательских данных кредитных карт:
Сразу же после обнаружения атаки, компания предупредила своих пользователей о компрометации.
Так как все вышеупомянутые атаки такого рода напрямую связаны с платформой Magento, разберемся, каким образом злоумышленники компрометируют CMS в столь разных случаях. Как нетрудно догадаться, ответ прост – они используют бреши в расширениях.
Специалисты из Roundsec детально разобрали уязвимый участок кода. Ошибка возникает вследствие неверной обработки при сериализации объекта.
В рейтинге критических рисков веб-приложений OWASP Top Ten на восьмой позиции расположены недостатки десериализации недоверенных данных. Эта уязвимость имеет идентификатор CWE-502 и заключается в том, что приложение десериализует данные из недоверенного источника без достаточной их валидации. В результате атаки на механизмы десериализации, злоумышленник нередко получает возможность удаленно исполнять команды в скомпрометированной системе.
Сериализация — это представление специфичных для языка программирования структур и объектов в едином формате, как правило, в виде строки определенного формата или последовательности байтов.
Десериализация — это обратный процесс: восстановление структур и объектов из сериализованной строки или последовательности байтов.
Сериализацию и десериализацию часто используют для сохранения состояния программы, например на диске или в базе данных, а также для обмена данными между различными приложениями.
Выделен участок кода, благодаря чему становится осуществима атака.
Сериализация в PHP через метод unserialize() приводит к появлению уязвимостей, открывающих через RCE (удаленное выполнение кода) доступ для хакеров. Даже при отсутствии RCE, существует вероятность обхода системы аутентификации и внедрения SQL-кода.
Для тестирования этой уязвимости специалисты в компании настроили тестовый стенд и установили опасный плагин:
Сканер уязвимости обнаружил потенциально опасную уязвимость и выдал предупреждение.
Соответственно, заменив Cookie дополнительный параметр выполнения системной команды, мы получаем RCE:
Успешное выполнение кода RCE. Уязвимость определена.
Чтобы сохранить свои данные в целостности, не пренебрегайте безопасностью системы и проводите аудит и комплексную проверку сайта не реже 2х раз в год. Эти и сопутствующие им услуги предоставляют специалисты нашей компании Roundsec.