Перейти к основному контенту
LiMP VPN
Все новости

Взлом Brevo через Cloudflare: JS-атака на 100 тыс. сайтов

Взлом Brevo через Cloudflare: JS-атака на 100 тыс. сайтов

Коротко: 14 сентября 2026 года злоумышленники использовали API-ключ Cloudflare, жёстко прошитый в исходном коде маркетинговой платформы Brevo. За 5,5 часов они внедрили вредоносные скрипты примерно на 100 тысяч сайтов, использующих виджеты Brevo. Пользователям показывали фейковые страницы проверки Cloudflare и предлагали выполнить команду на компьютере — так устанавливалось вредоносное ПО. Администраторам WordPress пытались внедрить скрытый бэкдор-плагин. Если вы посещали сайты с виджетами Brevo вечером 14 сентября — устройство стоит проверить.

Что произошло

История началась ещё 10 сентября 2026 года, когда неизвестные эксплуатировали уязвимость в SAML SSO Brevo и скомпрометировали 138 аккаунтов платформы, включая аккаунт Trezor — известного производителя аппаратных криптокошельков. Тогда же были получены данные контактных листов и отправлены фишинговые письма с шести взломанных аккаунтов.

Но главный удар последовал 14 сентября. В период с 16:07 до 20:30 UTC (примерно с 19:07 до 23:30 по московскому времени) атакующие развернули вредоносный Cloudflare Worker, который перехватывал и подменял ответы CDN ещё на уровне граничных узлов — до того как они достигали браузера пользователя. Исходные файлы Brevo при этом оставались нетронутыми, что затрудняло обнаружение атаки.

Как один ключ открыл 100 000 сайтов

Ключ к атаке — буквально один ключ: долгоживущий API-ключ Cloudflare с максимальными правами, который был жёстко прошит прямо в исходном коде Brevo. Это классическая ошибка управления секретами: вместо специализированного хранилища (например, HashiCorp Vault) учётные данные оказались в коде — и кто бы ни получил к нему доступ, автоматически получал и ключ.

Имея этот ключ, атакующие создали Cloudflare Workers — небольшие скрипты, выполняемые прямо на граничных серверах Cloudflare по всему миру. Workers перехватывали три JavaScript-файла Brevo, встроенных на сотни тысяч клиентских сайтов: библиотеку форм, виджет Conversations и SDK-загрузчик. Подмена происходила на стороне CDN, поэтому проверки целостности на origin-серверах ничего не замечали. Worker дополнительно удалял заголовки Content-Security-Policy — защитный механизм браузера, блокирующий выполнение постороннего кода.

Что видели пользователи заражённых сайтов

Посетители сайтов с виджетами Brevo видели фейковую страницу проверки: «Cloudflare, пожалуйста, подтвердите, что вы человек». Визуально она практически неотличима от настоящей защиты Cloudflare Turnstile. Но вместо автоматической проверки жертву просили нажать Win+R, вставить в диалог «Выполнить» команду со страницы и нажать Enter. Этот метод называется ClickFix: команда запускала скрипт PowerShell, который скачивал и устанавливал вредоносное ПО.

Администраторы WordPress, зашедшие в панель управления сайта с Brevo-виджетом, сталкивались с иным сценарием: скрипт пытался автоматически установить плагин «Web Media Optimizer». Плагин скрывал себя от стандартного списка плагинов WordPress и создавал скрытые административные сессии — полноценный бэкдор для долгосрочного присутствия в системе.

Масштаб и данные под угрозой

По данным компании Sansec, обнаружившей атаку, вредоносным кодом были затронуты более 100 тысяч сайтов. Сам по себе факт загрузки заражённого JavaScript не означает, что каждый посетитель пострадал: ClickFix требует ручного выполнения команды на Windows, WordPress-бэкдор — прав администратора. Тем не менее масштаб потенциального ущерба значителен.

Brevo — одна из крупнейших email-маркетинговых платформ в мире, её виджеты встроены в сайты интернет-магазинов, медиа, SaaS-сервисов и малого бизнеса. Пользователи Windows, выполнившие ClickFix-команду, рискуют кражей паролей, сессионных токенов и файлов. WordPress-сайты с установленным бэкдором могли оставаться скомпрометированными и после 15 сентября, если администраторы не провели аудит плагинов. Об аналогичной угрозе через цепочку поставок программных компонентов мы писали в материале об атаке на LiteLLM через Mercor. Больше об актуальных угрозах — в блоге LiMP VPN.

Как Brevo ответил

После обнаружения инцидента Brevo отозвал скомпрометированный API-ключ, удалил вредоносный Worker и все связанные маршруты, очистил кэши CDN и ликвидировал подконтрольные злоумышленникам поддомены. Компания удалила жёстко прошитые учётные данные из кода и заявила о переходе на HashiCorp Vault для управления секретами.

К 15 сентября все вредоносные поддомены перестали отвечать, файлы Brevo вернулись в исходное состояние. Brevo уведомил клиентов, чьи аккаунты были скомпрометированы при первоначальном взломе 10 сентября, и рекомендовал всем владельцам сайтов проверить WordPress-инсталляции на наличие несанкционированных плагинов.

Что делать, если вы могли пострадать

Если вы посещали сайты с виджетами Brevo 14 сентября между 19:07 и 23:30 МСК: вспомните, не появлялась ли необычная страница «проверки» с просьбой выполнить команду. Если выполнили — немедленно запустите полное антивирусное сканирование и смените пароли от ключевых сервисов с другого устройства.

Если вы администратор WordPress с Brevo-виджетом: проверьте список всех плагинов через WP-CLI, FTP или phpMyAdmin — не только через стандартный интерфейс (бэкдор скрывался именно там). Удалите всё незнакомое, добавленное 14–15 сентября.

Для защиты в будущем: настоящие проверки Cloudflare Turnstile никогда не просят запускать команды в Win+R — это всегда мошенничество. Менеджер паролей не подставит учётные данные на поддельную страницу. При работе в публичных сетях LiMP VPN шифрует трафик и не даёт перехватить ваши сессии. Подробности о тарифах — на странице подключения.

Источники

Взлом Brevo через Cloudflare: JS-атака на 100 тыс. сайтов