Массовая атака на цепочку поставок: покупка портфеля из 30+ плагинов для WordPress обернулась скрытым бэкдором для сотен тысяч сайтов

information security

В мире управления контентом с помощью WordPress доверие к репозиторию официальных плагинов долгие годы было одним из краеугольных камней экосистемы. Однако серия недавних инцидентов ставит под сомнение устойчивость этой модели к целевым атакам на цепочку поставок. Спустя всего неделю после раскрытия компрометации плагина Widget Logic специалисты по безопасности обнаружили новую, куда более масштабную кампанию. Её жертвой стал целый портфель из более чем тридцати популярных расширений под брендом Essential Plugin, что затронуло, вероятно, сотни тысяч сайтов по всему миру. Этот инцидент вскрывает системную уязвимость процесса передачи прав на плагины, когда злоумышленники легально приобретают доверенный код, чтобы внедрить в него вредоносные функции.

Поводом для расследования стало обращение владельца сайта, который обнаружил в админ-панели WordPress официальное предупреждение от команды разработчиков плагинов. Уведомление гласило, что плагин Countdown Timer Ultimate содержит код, способный предоставить несанкционированный доступ третьим лицам. Незамедлительный аудит показал, что, хотя сам плагин был принудительно обновлён репозиторием до "очищенной" версии 2.6.9.1, вредоносная нагрузка уже успела нанести ущерб. Ключевой файл конфигурации "wp-config.php" оказался заражён.

Механизм атаки был продуманным. Встроенный в плагин модуль аналитики "wpos-analytics" связался с удалённым сервером "analytics.essentialplugin.com", загрузил файл-бэкдор с названием, маскирующимся под системный ("wp-comments-posts.php"), и использовал его для инъекции объёмного блока PHP-кода в "wp-config.php". Внедрённый код отличался высокой изощрённостью. Он получал со спам-ссылки, редиректы и фиктивные страницы с сервера управления и контроля (C2, Command-and-Control), причём отображал этот контент исключительно для робота Google, оставаясь невидимым для владельцев сайтов. Наиболее технически сложным элементом стало использование инфраструктуры Ethereum для обеспечения устойчивости. Домен сервера управления разрешался через смарт-контракт в блокчейне, с запросами к публичным RPC-нодам. Это делало традиционные методы нейтрализации домена бесполезными, так как злоумышленник мог в любой момент обновить контракт, указав новый адрес.

Принудительное обновление от WordPress.org заблокировало механизм "звонка домой" в коде плагина, однако не затронуло уже инфицированный файл "wp-config.php". Инъекция для SEO-спама продолжала активно работать, скрытно отдавая контент поисковым роботам. Благодаря системе ежедневных резервных копий CaptainCore исследователям удалось с хирургической точностью установить временное окно заражения - между 04:22 и 11:06 UTC 6 апреля 2026 года. Однако корень проблемы уходил гораздо глубже. Анализ истории плагина через сотни снапшотов показал, что бэкдор был внедрён в версии 2.6.7 ещё 8 августа 2025 года, после чего восемь месяцев оставался неактивным.

В отчёте описано, как обновление, маскировавшееся под "проверку совместимости с WordPress 6.8.2", добавило 191 строку кода, включая уязвимость десериализации PHP, ведущую к выполнению произвольного кода (RCE, Remote Code Execution). Код создавал непроверенную конечную точку REST API и позволял удалённому серверу управлять именем вызываемой функции и её аргументами. Это классический пример внедрения бэкдора, который был активирован лишь спустя длительный период ожидания. Критически важным контекстом стала смена владельца. Первоначально плагины разрабатывались индийской командой WP Online Support, позже переименованной в Essential Plugin. К концу 2024 года доходность бизнеса упала, и основатель выставил весь портфель - более 30 плагинов - на продажу на публичной площадке Flippa.

Покупатель, известный под именем "Крис" и имевший опыт в SEO, криптовалютах и маркетинге азартных игр онлайн, приобрёл актив за шестизначную сумму. Его первый же коммит в репозиторий WordPress.org содержал бэкдор. Это демонстрирует уязвимость модели доверия: смена владельца плагина, имеющего тысячи установок, не запускает никаких дополнительных процедур проверки со стороны репозитория. Пользователи не уведомляются о переходе прав, а новый разработчик получает немедленный доступ для публикации кода. Ответ администрации WordPress.org, хоть и был оперативным - 7 апреля 2026 года были разом закрыты все 31 плагин от этого автора, - но последовал лишь через восемь месяцев после внедрения вредоносного кода.

Этот случай не является уникальным. Ещё в 2017 году плагин Display Widgets с 200 тысячами установок был куплен, а затем использован для распространения спама. Сценарий повторился, но в гораздо большем масштабе. Для специалистов по безопасности и владельцев сайтов инцидент служит жёстким напоминанием. Необходимо проводить аудит установленных расширений, особенно из крупных портфелей, и внимательно отслеживать изменения в правах собственности, если такая информация становится доступной. Кроме того, критически важно проверять ключевые системные файлы, такие как "wp-config.php", на предмет несанкционированных изменений, поскольку стандартные обновления безопасности могут их не очистить. Данная атака наглядно показала, что угроза может прийти не со стороны взломанного аккаунта разработчика, а в результате легальной, но злонамеренной сделки по приобретению доверенного кода, что ставит перед сообществом и администрацией репозитория сложные вопросы о необходимости создания механизмов контроля за сменой владельцев цифровых активов.

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