Brevo четыре часа распространяла вредоносный код через сайты своих клиентов

Brevo четыре часа распространяла вредоносный код через сайты своих клиентов

Сервис email-рассылок Brevo отдавал вредоносный код посетителям собственного сайта и более чем ста тысяч клиентских ресурсов. Под удар попали интернет-магазины, медиа и некоммерческие организации, которые встраивали на свои страницы его формы подписки, трекер и чат-виджет. Пострадали и получатели писем: они переходили по ссылке из кампании и попадали на подготовленные злоумышленником страницы. Размах события заметно превышает то, что компания признала официально.

Описание

Десятью днями ранее Brevo раскрыла другой инцидент. 10 сентября она сообщила, что неизвестный воспользовался уязвимостью в механизме единого входа и добрался до клиентских учётных записей. В первом сообщении фигурировали шесть пострадавших аккаунтов, хотя в опубликованном позже разборе речь шла уже о 138. Компания утверждала, что атакующий потерял доступ к 08:30 по UTC и с тех пор активности не было. Про сторонний код на страницах клиентов в отчёте не сказано ни слова. Среди заказчиков Brevo числятся eBay, Louis Vuitton, Michelin и Amnesty International.

По данным Sansec, четыре дня спустя сервис начал отдавать вредоносное содержимое всем своим клиентам сразу. Код состоял из двух частей. Первая - плагин для WordPress (система управления сайтами), который устанавливался в момент, когда администратор заходил на собственный ресурс, уже авторизовавшись в панели управления. Вторая - всплывающее окно, которое видели обычные посетители клиентских сайтов. Служебные скрипты Brevo, отвечающие за трекер и чат, получили дополнительную строку, подгружавшую посторонний файл из внешнего источника.

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

Окно активности продлилось с 16:05 до 20:12 по UTC 14 сентября. Система мониторинга политики безопасности контента зафиксировала 2549 срабатываний на 12 сайтах внутри этого промежутка и после него. К 15 сентября все вредоносные хосты перестали отвечать. Содержимое на основном домене Brevo при этом не переписывалось - подмена ответов шла на лету, и прежние даты изменения файлов сохранялись. Заметить такую манипуляцию штатными средствами почти невозможно. Сертификат для одного из служебных доменов компании был выдан 25 августа, за двадцать дней до атаки. Это говорит о тщательной подготовке, а не об импровизации.

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

Второй компонент атаки строится на приёме ClickFix (обман с самостоятельным запуском команды). В буфер обмена человека помещается команда, а ему предлагают вставить её и выполнить - якобы для подтверждения, что он не робот. Полноэкранное окно с такой просьбой видели посетители клиентских сайтов, а также получатели рассылок, которые нажимали ссылку отписки или открывали форму. Прямого заражения не происходило: люди запускали вредоносный код своими руками. Программа не срабатывала на поисковых роботах, разработчиках и автоматических сканерах. Именно поэтому её долго не замечали.

Для бизнеса последствия двойные. Сайты могли остаться с закладкой, а клиентские базы email и списки подписчиков превращаются в ценную добычу. Посетители, поверившие подложному окну, рискуют потерять доступ к своим учётным записям и платёжным данным. Репутационный ущерб тоже ощутим: под угрозой оказалась сама услуга рассылок, которой доверяют крупные бренды.

Администраторам стоит проверить журналы доступа за 14 сентября. Ищите обращения к служебному скрипту загрузки расширений и активацию плагина сразу после него. Сравните каталог расширений на диске с тем, что показывает панель управления: расхождение означает скрытый плагин. Проверьте даты установки всех расширений - любое, появившееся 14 сентября, требует немедленного разбора. Обновите WordPress и его компоненты, а учётные записи администраторов защитите двухфакторной аутентификацией.

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

Атаки на цепочку поставок дают злоумышленнику многократное усиление: один скомпрометированный сервис превращается в сотни тысяч заражённых страниц за считаные часы. Brevo до сих пор не выпустила отдельного заявления об этом инциденте, и на её странице статуса он не отражён. Компания ограничилась сообщением от 10 сентября, где описана совсем другая схема и другие цифры. Пока поставщики массовых услуг не научатся контролировать доступ к своей инфраструктуре так же строго, как доступ к клиентским данным, подобные эпизоды будут повторяться.

Индикаторы компрометации

Комментарии: 0