Плагины WordPress под ударом: WP Maps Pro и атака на OptinMonster
За одну неделю июня 2026 года владельцы сайтов на WordPress получили два повода понервничать. Сначала в плагине WP Maps Pro нашли дыру, через которую любой желающий создавал себе администратора без пароля. Следом выяснилось, что три популярных плагина компании Awesome Motive раздавали вредоносный код через взломанную сеть доставки. Похожи они только на первый взгляд. Один взлом закрывается обновлением плагина, второй нет.
Что случилось за одну неделю июня#
Оба инцидента касаются плагинов - готовых дополнений, которыми обрастает почти любой сайт на WordPress: карты, формы, попапы, аналитика. На среднем сайте малого бизнеса их легко набирается пара десятков, и каждый - чужой код, который ты пускаешь к себе на сервер с правами почти на всё.
Первый случай - классическая уязвимость в коде плагина WP Maps Pro. Второй - атака на цепочку поставок (по-английски supply chain): злоумышленники сломали не сам продукт, а инфраструктуру, через которую он раздаётся. Ниже оба случая и почему совета "просто обновляйтесь" тут хватает только на половину.
Дыра в WP Maps Pro: один запрос - и у тебя новый администратор#
WP Maps Pro - коммерческий плагин для встраивания карт (Google Maps и OpenStreetMap), локаторов магазинов и каталогов точек продаж. Ставят его обычно на сайты ритейла, клиник, автосервисов - всем, кому надо показать "вот наши адреса на карте".
В нём нашли уязвимость CVE-2026-8732 с оценкой 9,8 из 10 по шкале CVSS (это международная шкала опасности уязвимостей, где 10 - максимум). CVE - это публичный реестр уязвимостей, каждой выдают номер вида CVE-2026-XXXX. Девять и восемь десятых означает "критическая, чините немедленно". Затронуты все версии плагина до 6.1.0 включительно.
Сама схема простая. В плагине была функция временного доступа для техподдержки - чтобы специалисты разработчика могли зайти на сайт клиента и помочь с настройкой. Реализовали её небезопасно: специальный адрес, по которому страница обращается к серверу (AJAX-эндпоинт), был открыт неавторизованным пользователям. Защищал его только одноразовый токен, который при этом публиковался прямо в коде страницы. То есть "секретный" ключ лежал на виду у любого.
Атакующему достаточно было отправить запрос с параметром check_temp=false. Плагин послушно создавал нового пользователя с ролью администратора и возвращал ссылку для входа без пароля. Перешёл по ссылке - и ты внутри с полными правами: можно ставить любые плагины, грузить веб-оболочки (скрытые лазейки для удалённого управления сайтом), воровать данные пользователей.
Разработчики закрыли дыру 20 мая 2026 года в версии 6.1.1. Но к моменту заплатки уязвимость уже попала в поле зрения злоумышленников. В Wordfence (это сервис безопасности для WordPress) сообщили, что заблокировали около 2858 попыток эксплуатации за сутки, а в общей сложности под прицелом оказалось порядка 15 000 сайтов. Здесь же всплывает российский сюжет: компания BI.ZONE объявила, что её WAF закрывает эту уязвимость правилом фильтрации. WAF (Web Application Firewall) - это фильтр, который стоит перед сайтом и отбивает вредоносные запросы до того, как они дойдут до уязвимого кода. К WAF мы ещё вернёмся, потому что со вторым инцидентом он работает совсем иначе.
Атака на OptinMonster: когда обновление не спасает#
Второй случай страшнее: тут жертвы всё делали правильно и всё равно получили бэкдор (скрытую лазейку для тайного входа на сайт).
Под удар попали три плагина компании Awesome Motive: OptinMonster, TrustPulse и PushEngage. Только OptinMonster стоит минимум на 1,2 миллиона сайтов - им собирают заявки и поднимают конверсию. Атаку обнаружила компания Sansec, которая занимается безопасностью интернет-магазинов.
Злоумышленники не трогали сам код плагинов. Они зашли с другой стороны - через вспомогательный маркетинговый сервер Awesome Motive, воспользовавшись известной уязвимостью в стороннем плагине UpdraftPlus. Сам по себе этот сервер не был связан с боевой инфраструктурой. Но на нём хранились учётные данные от сети доставки контента (CDN - сеть серверов, которая раздаёт файлы сайта пользователям с ближайшей точки). Получив ключ доступа к CDN, атакующие подменили JavaScript-файлы, которые эта сеть раздавала всем сайтам с плагинами.
Вредоносный скрипт молчал, пока на заражённую страницу не заходил залогиненный администратор. В этот момент код перехватывал токены входа, создавал фиктивного администратора и ставил скрытый плагин-бэкдор с веб-оболочкой и возможностью удалённо выполнять команды. Украденные данные уходили на домен tidio.cc - двойник настоящего сервиса tidio.com, чтобы не бросаться в глаза в журналах сервера. Чтобы его было сложнее заметить, бэкдор периодически менял имя, маскируясь под "Content Delivery Helper" и "Database Optimizer".
По срокам: вредоносные скрипты пошли в раздачу 12 июня. OptinMonster и TrustPulse раздавали их несколько часов, PushEngage - дольше, до 13-14 июня. Awesome Motive восстановила сервер, перенесла его на новую площадку и сменила все ключи, включая доступ к CDN. По их данным, исходный код, серверы приложений и данные пользователей не пострадали.
Ключевой момент, который легко упустить: даже после того как вредоносные скрипты убрали из сети доставки, сайты с уже установленными бэкдорами и фиктивными админами остаются под контролем атакующих. Чистка на стороне Awesome Motive не лечит твой сайт, если на него уже залезли.
Почему это два разных урока#
Мы собрали две новости вместе не случайно. Снаружи они выглядят одинаково ("плагин WordPress, взлом, захват сайта"), но это два разных класса угроз.
WP Maps Pro - это дыра в коде. Производитель выпустил заплатку, ты обновился, проблема закрыта. До обновления тебя прикроет WAF: вредоносный запрос идёт к тебе на сервер снаружи, и фильтр его видит и режет. Это та ситуация, где работает совет "обновляйтесь и поставьте фаервол".
OptinMonster - это атака на цепочку поставок, и тут привычная логика ломается. Сам плагин был легитимный и свежий. Файл, который раздавался с доверенной сети доставки, тоже считался "своим". Обновление плагина в окне атаки не спасало - ты бы скачал ту же отравленную версию. И WAF тут почти бесполезен: он смотрит входящий трафик на твой сервер, а вредоносный скрипт прилетал в браузер твоего администратора с доверенного источника, который ты сам разрешил. Фаервол такое не ловит, потому что для него это легитимная загрузка.
В первом случае враг ломится в дверь, и у неё можно поставить охрану. Во втором он приехал на твоей же служебной машине, которую охрана пропускает без вопросов.
Что делать владельцу сайта на WordPress прямо сейчас#
Если у тебя сайт на WordPress, вот действия по приоритету.
1. Обнови плагины, начиная с уязвимых. Если стоит WP Maps Pro - срочно поднимай до 6.1.1 или новее. Дальше пройдись по остальным: всё, что отстаёт на версии, - кандидат на обновление. Перед обновлением сделай резервную копию, чтобы откатиться, если что-то отвалится.
2. Проверь список администраторов. Зайди в раздел пользователей и убедись, что там нет лишних аккаунтов. После атаки на OptinMonster рекомендуют искать админов с именами вида developer_api1 или dev_ с любым продолжением - это следы автоматического взлома. Любого незнакомого администратора надо проверять, а не "наверное, коллега завёл".
3. Поищи скрытые плагины. Загляни в папку wp-content/plugins на сервере и сверь с тем, что видишь в админке. Бэкдор-плагин может прятаться от интерфейса, но лежать в файлах. Незнакомые названия вроде "Database Optimizer", которые ты не ставил, - повод бить тревогу.
4. Смени ключи и пароли, если был под раздачей. Если ты использовал OptinMonster, TrustPulse или PushEngage 12-14 июня - смени пароли администраторов, ключи доступа к внешним сервисам, данные базы данных и ключи безопасности WordPress (это секретные строки в настройках, которыми шифруются сессии пользователей). Просканируй сервер на вредоносный код.
5. Поставь фаервол и автообновления. WAF (включая российские решения вроде BI.ZONE WAF) прикроет известные уязвимости плагинов, пока ты не обновился. Автообновления хотя бы для критичных по безопасности релизов снимут часть рутины. Полностью это не спасёт, но это основа.
И отдельно про закон. Взломанный сайт - это не только испорченная репутация, но и утечка персональных данных посетителей (ПДн - персональные данные по закону 152-ФЗ). С 30 мая 2025 года в России действуют оборотные штрафы за утечки: за первую - до 5 миллионов рублей для компании, за повторную - от 1 до 3 процентов годовой выручки. Плюс обязанность уведомить Роскомнадзор. Так что "ну подумаешь, взломали сайтик" в 2026 году стоит дороже, чем кажется. Если не уверен, что у тебя с этим порядок, у нас есть отдельный разбор, как проверить сайт на 152-ФЗ.
Чего эти меры не закрывают#
У этих мер есть предел. Обновления и фаервол - необходимый минимум, но не броня.
WAF лечит симптом, а не дыру. Его правило фильтрации можно обойти, и оно не отменяет необходимость обновляться - оно лишь покупает время. Полагаться на него как на постоянное решение - значит копить риск.
От атаки на цепочку поставок классический фаервол не защищает в принципе. Если завтра отравят файл другого популярного плагина на стороне его сети доставки, твой WAF снова это не увидит. Единственное, что реально снижает риск, - меньше стороннего кода, который подгружается во время работы сайта, и трезвый вопрос к каждому плагину: "а он точно нужен, и кто за ним следит".
И главное: "просто обновляйте плагины" - совет верный, но недостаточный. OptinMonster показал, что можно иметь самую свежую версию и всё равно получить бэкдор. Безопасность сайта работает только как постоянный режим: инвентаризация плагинов, минимум прав, мониторинг, резервные копии.
Где у нас в проектах эта тема#
Мы в digitalimpuls делаем сайты, Telegram-боты и интеграции для бизнеса в России, и WordPress-сайты к нам регулярно приходят на сопровождение. Картина почти всегда одна: плагины не обновлялись год-полтора, админов больше, чем людей в компании, резервных копий нет. Работает - и ладно. Эти две июньские истории показывают, чем такая инерция заканчивается.
По нашему опыту, разовый аудит и приведение WordPress-сайта в порядок (обновления, чистка лишних плагинов и админов, резервные копии, базовая защита) занимает день-два на средний сайт. Это несопоставимо дешевле, чем разбирать последствия взлома и общаться с Роскомнадзором. Если хочешь, чтобы кто-то посмотрел свежим взглядом, - напиши нам, сделаем аудит и покажем слабые места. По смежным темам безопасности мы недавно разбирали подмену 84 версий библиотек TanStack и 17 уязвимостей в платформе автоматизации n8n - это всё одна большая история про то, что чужой код надо проверять чаще, чем раньше.
Частые вопросы#
Мой сайт не на WordPress. Меня это касается? Напрямую - нет, обе уязвимости про плагины WordPress. Но урок про цепочку поставок универсален: любой сайт грузит сторонний код (аналитику, чаты, карты, попапы), и его поставщика тоже могут взломать. Принцип "меньше чужого кода, который грузится со стороны" работает на любой платформе.
Что такое атака на цепочку поставок простыми словами? Это когда ломают не тебя, а того, кому ты доверяешь. Ты честно поставил легальный плагин из официального источника, а злоумышленник подменил файл на стороне поставщика. В результате ты сам, своими руками, привёл вредоносный код к себе на сайт, ничего не нарушив.
Если я обновил WP Maps Pro до 6.1.1, я в безопасности? От этой конкретной уязвимости - да. Но если сайт уже взломали до обновления, заплатка не выгонит злоумышленника. Проверь список администраторов и скрытые плагины: обновление закрывает вход, но не убирает тех, кто уже внутри.
Поможет ли WAF от таких атак? От уязвимостей в коде плагина (как WP Maps Pro) - да, фаервол отобьёт вредоносные запросы. От атаки на цепочку поставок (как OptinMonster) - почти нет, потому что вредоносный скрипт приходит с доверенного источника в браузер администратора. WAF - полезный слой, но не замена обновлениям и здравому смыслу.
Как часто нужно обновлять плагины? Критичные по безопасности релизы - сразу, как вышли. Остальное - планово, раз в месяц с резервной копией и проверкой, что ничего не сломалось. Если на сайте много плагинов и руки не доходят, имеет смысл отдать сопровождение на аутсорс - это дешевле одного разбора последствий.
Подписаться на новые разборы - @digitalimpulschannel.

