Хакер купил 30 WordPress-плагинов и вшил бэкдор — C2 спрятан в смарт-контракте Ethereum
Покупатель скупил на Flippa 30 легальных плагинов с почти десятилетней историей и превратил их в ботнет для SEO-спама. Разбираем, как устроен бэкдор и почему классические методы его блокировки не работают.
Новости TprogerЕсли на вашем сайте стоит хоть один плагин от автора Essential Plugin (бывший WP Online Support) — прямо сейчас откройте wp-config.php и ищите инъекции PHP после стандартной секции констант. 7 апреля 2026 года WordPress.org навсегда закрыл 30+ плагинов этого автора: во все был встроен бэкдор, который дремал 8 месяцев, а в начале апреля активировался и начал раздавать SEO-спам.
Новый владелец бизнеса купил плагины на Flippa (маркетплейс, где продают готовые онлайн-бизнесы) в конце 2024 года — вместе с легальной компанией, которой было почти десять лет. Первый же его SVN-коммит в репозиторий WordPress.org содержал бэкдор через PHP-десериализацию — приём, когда данные с чужого сервера превращаются в PHP-объекты и вызывают произвольную функцию. А командный сервер (C2, command-and-control) он спрятал за смарт-контрактом Ethereum — чтобы его нельзя было отключить классическим domain takedown.
Ключевые выводы
Что произошло
На WordPress.org закрыли 30+ плагинов автора Essential Plugin — все получили бэкдор в августе 2025.
Бэкдор спал 8 месяцев и активировался 5–6 апреля 2026: вшивал PHP-код в wp-config.php.
C2-сервер резолвится через смарт-контракт Ethereum — атакующий меняет домен одной транзакцией, блокировка DNS не спасает.
Полезная нагрузка — SEO-спам, видимый только Googlebot: скрытые редиректы и фейковые страницы.
Исходный бизнес купили на Flippa в конце 2024 года. Покупатель — человек с бэкграундом в SEO, крипте и гембле.
Как нашли: письмо в поддержку
В начале апреля 2026 года клиент хостинга Anchor (Рики из Improve & Grow) получил в админке WordPress уведомление от команды WordPress.org: плагин Countdown Timer Ultimate содержит код, позволяющий сторонним лицам получить неавторизованный доступ. Плагин уже принудительно обновили до версии 2.6.9.1, но к этому моменту сайт был скомпрометирован.
Основатель Anchor Hosting Остин Гиндер поднял резервные копии за 8 разных дат через restic и бинарным поиском определил точное окно инъекции: 6 апреля 2026 года, с 04:22 до 11:06 UTC. Шесть часов 44 минуты.
Как устроен бэкдор
В версии 2.6.7, вышедшей 8 августа 2025 года, в плагин добавили 191 строку кода. В changelog было безобидное «Проверка совместимости с WordPress 6.8.2». Файл class-anylc-admin.php вырос с 473 до 664 строк.
Добавили три вещи:
- Метод
fetch_ver_info()— делаетfile_get_contents()на сервер атакующего и передаёт ответ в@unserialize(). - Метод
version_info_clean()— вызывает функцию через$clean(...), где и имя функции, и оба её аргумента пришли из десериализованных удалённых данных. - REST API-эндпоинт без аутентификации:
permission_callback: __return_true.
Это учебный пример arbitrary function call: удалённый сервер контролирует имя функции, аргументы и данные. Бэкдор дремал 8 месяцев специально — чтобы накопить установки новой версии и разорвать в глазах комьюнити связь между сменой владельца и вредоносным коммитом.
Что делает активированный код
В начале апреля 2026 года модуль wpos-analytics обратился к analytics.essentialplugin.com, скачал файл wp-comments-posts.php (маскируется под системный wp-comments-post.php) и вшил большой блок PHP прямо в wp-config.php.
Этот блок подтягивает с C2 ссылки-спам, редиректы и фейковые страницы — и показывает их только Googlebot. Владелец сайта открывает страницу и видит обычный контент, поисковый робот индексирует спам. Это называется cloaking — классический приём чёрного SEO: разный контент для посетителей и для поисковиков.
C2 через смарт-контракт Ethereum
Главный трюк: домен C2 не хранится в коде бэкдора и не резолвится обычным DNS. Вместо этого код запрашивает публичные RPC-эндпоинты Ethereum и читает адрес C2 из смарт-контракта.
Последствия простые и неприятные. Классический domain takedown — когда регистратор блокирует домен C2 по жалобе — больше не работает: атакующий одной транзакцией обновляет смарт-контракт и переводит все заражённые сайты на новый домен. Остаются более дорогие меры: блокировка исходящих запросов к Ethereum RPC на уровне хостинга или WAF, мониторинг самого контракта (любая транзакция атакующего видна публично), абьюз-репорты крупным RPC-провайдерам вроде Infura или Alchemy. Сам контракт в блокчейне остаётся навсегда.
Как плагины попали к атакующему
Исходная команда — Minesh Shah, Anoop Ranawat и Pratik Jain — работала с 2015 года под брендом «WP Online Support», позже ребрендилась в «Essential Plugin» и разрослась до 30+ бесплатных плагинов с премиум-версиями.
К концу 2024 года выручка упала на 35–45%. Minesh выставил весь бизнес на Flippa. Покупателем стал человек по имени «Kris» — с бэкграундом в SEO, криптовалютах и маркетинге онлайн-казино. Сумма — шестизначная в долларах. Flippa даже выпустила case study о сделке в июле 2025 года. Первый SVN-коммит нового владельца и был бэкдором.
В 2017 году покупатель под ником Daley Tias скупил плагин Display Widgets (200 000 установок) за 15 000 долларов и встроил туда спам-редиректы на payday loans. Потом он таким же способом скомпрометировал ещё как минимум 9 плагинов. Сейчас мы видим тот же сценарий, только на масштабе в 30+ плагинов и с современной инфраструктурой.
Полный список скомпрометированных плагинов
WordPress.org закрыл их все в один день — 7 апреля 2026 года. Если хоть один из этих плагинов у вас установлен, считайте сайт скомпрометированным:
- Accordion and Accordion Slider
- Album and Image Gallery Plus Lightbox
- Audio Player with Playlist Ultimate
- Blog Designer for Post and Widget
- Countdown Timer Ultimate
- Featured Post Creative
- Footer Mega Grid Columns
- Hero Banner Ultimate
- HTML5 VideoGallery Plus Player
- Meta Slider and Carousel with Lightbox
- Popup Anything on Click
- Portfolio and Projects
- Post Category Image with Grid and Slider
- Post Grid and Filter Ultimate
- Preloader for Website
- Product Categories Designs for WooCommerce
- Responsive WP FAQ with Category (sp-faq)
- SlidersPack — All in One Image Sliders
- SP News And Widget
- Styles for WP PageNavi — Addon
- Ticker Ultimate
- Timeline and History Slider
- Woo Product Slider and Carousel with Category
- WP Blog and Widgets
- WP Featured Content and Slider
- WP Logo Showcase Responsive Slider and Carousel
- WP Responsive Recent Post Slider
- WP Slick Slider and Image Carousel
- WP Team Showcase and Slider
- WP Testimonial with Widget
- WP Trending Post Slider and Widget
Что делать прямо сейчас
Принудительное обновление от WordPress.org (версия 2.6.9.1 для Countdown Timer Ultimate и аналогичные для остальных) просто добавило return; в начало функций дозвона на C2. Это пластырь: модуль wpos-analytics со всем вредоносным кодом остаётся в файловой системе. При следующем обновлении от злоумышленника (если он поднимет новый плагин) достаточно убрать этот return;.
Минимальный чеклист:
- Выгрузите список активных плагинов:
wp plugin list --format=csv. - Сверьте авторов с закрытым списком выше. Ищите «Essential Plugin», «WP Online Support», «SpiceThemes», «Bestwebsoft» — на всякий случай проверьте все корпоративные сборки старше 5 лет.
- Удалите или переустановите из чистых источников. Anchor выложил пропатченные версии с вырезанным модулем
wpos-analytics. - Проверьте
wp-config.phpна посторонний PHP-код после стандартных констант. Особенно подозрительно —requireилиincludeфайлаwp-comments-posts.php. - Проверьте логи исходящих соединений за март–апрель 2026 на домен
analytics.essentialplugin.comи обращения к Ethereum RPC (Infura, Alchemy, публичные ноды). - Если сайт получал заметный органический трафик с Google — проверьте Search Console на «страницы с проблемами» и сделайте re-submission после очистки.
Команды на проверку wp-config.php:
FAQ
Какие версии плагинов заражены?
Бэкдор добавили в версию 2.6.7 (релиз 8 августа 2025) для Countdown Timer Ultimate и в аналогичные версии остальных плагинов того же автора. Все релизы после августа 2025 и до 7 апреля 2026 считаются заражёнными. После принудительного апдейта WordPress.org активация заблокирована, но код модуля wpos-analytics остаётся на диске.
Как проверить, что сайт скомпрометирован?
Откройте wp-config.php и убедитесь, что после секции стандартных констант нет большого блока PHP-кода. Проверьте наличие файла wp-comments-posts.php (с буквой «s» в конце, не системный) в корне. Сверьте логи исходящих запросов с analytics.essentialplugin.com за март–апрель 2026.
Может ли бэкдор вернуться через новые обновления?
Теоретически — нет: аккаунт автора на WordPress.org закрыт, новые релизы публиковаться не могут. Но если у вас автоматическое обновление из сторонних репозиториев или marketplace — риск есть. Проверьте, откуда реально приходят обновления этих плагинов.
Чем C2 на смарт-контракте отличается от обычного?
Классический C2 можно снести по жалобе к регистратору или хостинг-провайдеру. С2 через Ethereum-контракт этого не позволяет: контракт живёт в блокчейне, атакующий обновляет адрес сервера одной транзакцией за условные $3 газа. Блокировать придётся не домен, а публичные RPC-эндпоинты — но их десятки, и их используют все легитимные dApp.
Почему спам показывают только Googlebot?
Это cloaking. Владелец сайта открывает страницы и видит обычный контент — у него нет повода искать проблему. Googlebot индексирует спам-ссылки и фейковые страницы, которые дают атакующему трафик и backlink-ферму. Мониторить Search Console становится критично.
Выводы
Масштаб supply-chain атак на WordPress-плагины вырос: в истории с Display Widgets в 2017 году было 9 плагинов, здесь — 30+. Маркетплейсы вроде Flippa не умеют (и не обязаны) проверять покупателя на криминальный потенциал. Почти десятилетняя легальная история плагина создаёт доверие, которое атакующий конвертирует в 8-месячный период скрытности.
Связка marketplace + PHP-десериализация + C2 в блокчейне делает классические методы защиты (DNS-блокировки, репутация автора) бесполезными. Единственное, что работает, — аудит реального кода каждого обновления и мониторинг исходящих соединений. Для больших инсталляций — автоматический diff changelog против diff кода: если changelog говорит «compatibility check», а реальный diff — 191 новая строка, это красный флаг.
Пока WordPress.org не внедрит обязательную проверку личности новых мейнтейнеров при смене владельца плагина и автоматический diff-анализ SVN-коммитов, подобные истории будут повторяться. Проверьте свои сайты сегодня — принудительный апдейт закрыл только активацию, а не сам код модуля wpos-analytics.
Источники: расследование Остина Гиндера (Anchor Hosting), официальные closed-страницы WordPress.org Plugins Team.