Admin Menu Editor Pro, платный WordPress-плагин для настройки админского меню, раздал вредоносные обновления минимум на 1 500 сайтов. По данным BleepingComputer, атакующий скомпрометировал сайт разработчика, подменил обновление и добавил код, который создавал скрытого пользователя и устанавливал веб-шелл. Для владельцев WordPress-сайтов это неприятное напоминание: цепочка поставки ломается не только у npm-пакетов и CI/CD, но и у вполне обычных коммерческих плагинов.
Разработчик плагина Янис Элстс сообщил, что неавторизованный доступ к adminmenueditor.com произошел в понедельник, 14 сентября. Злоумышленник загрузил версию 2.35 для Pro-редакции плагина. Внутри появился файл includes/wp-user-consent.php, который устанавливал веб-шелл на сайты, получившие обновление. Кроме того, вредоносный код создавал скрытую учетную запись в WordPress, чтобы атакующий мог вернуться даже после первичной зачистки.
По словам Элстса, версия 2.35 была доступна на официальном сайте примерно с 06:00 до 13:00 UTC. После обнаружения инцидента разработчик удалил вредоносный пакет и в тот же день выпустил чистую версию 2.36 около 19:00 UTC. Но история на этом не закончилась: атакующий все еще сохранял доступ к инфраструктуре и успел скомпрометировать уже новую сборку. Это важная деталь: простое перевыпускание версии не помогает, если сервер обновлений остается под контролем чужих рук.
По логам сервера обновлений, первая волна затронула около 230 клиентов. На практике это не 230 сайтов: у многих клиентов плагин стоит сразу на нескольких проектах, поэтому вредоносная версия попала как минимум на 1 500 WordPress-инсталляций. Элстс отдельно предупредил, что реальная цифра может быть выше: несколько сотен клиентов скачивали плагин в тот же временной интервал или рядом с ним, а точное число установок троянизированной версии 2.36 определить сложнее.
Admin Menu Editor Pro — не маргинальный скрипт из сомнительного форума, а премиальная версия популярного инструмента для администраторов WordPress. Бесплатная версия Admin Menu Editor установлена более чем на 300 000 сайтов. Плагин позволяет менять меню админки, скрывать плагины от отдельных пользователей, настраивать права по ролям и задавать редиректы при входе и выходе. Именно поэтому компрометация выглядит особенно неприятно: инструмент, который должен помогать управлять доступом, сам стал каналом для несанкционированного доступа.
Разработчик в итоге отключил основной сайт и оставил статическую страницу с описанием инцидента и инструкциями для клиентов. Он считает, что атакующий мог иметь root-доступ к серверу, поэтому восстановление инфраструктуры требует не косметического патча, а полной проверки доверия к окружению. В переводе на язык эксплуатации: пока непонятно, где именно проходила граница компрометации, сервер обновлений лучше не считать безопасным.
Владельцам сайтов, которые ставили версии 2.35 или 2.36, нужно проверить несколько признаков компрометации:
- файл includes/wp-user-consent.php в директории admin-menu-editor-pro;
- новую директорию /wp-content/object-cache/;
- пользователя в таблице wp_users, имя которого начинается с wp_ и может не отображаться в админке WordPress;
- опции в wp_options с именами вида wp_ocache*.
Версия 2.34 считается чистой. Бесплатная версия Admin Menu Editor, по текущим данным, не пострадала. Самый надежный вариант восстановления — откатить сайт из заведомо безопасной резервной копии, созданной до 14 сентября. Если такого бэкапа нет, разработчик рекомендует удалить плагин, директорию /wp-content/object-cache/ и найденные следы в базе данных. Но после таких инцидентов одной чистки файлов мало: стоит проверить список администраторов, логи входов, cron-задачи, wp-config.php, неизвестные mu-plugins и свежие изменения в теме.
Для бизнеса эта история неприятна не масштабом в миллионы сайтов, а механикой атаки. Команда могла все делать «правильно»: покупать лицензионный плагин, обновляться с официального сайта, не скачивать nulled-версии с варезных помоек. И все равно получить бэкдор через доверенный канал. Поэтому WordPress-проектам, особенно агентствам и компаниям с десятками клиентских сайтов, пора относиться к обновлениям плагинов как к полноценному supply chain-риску: вести инвентаризацию, фиксировать версии, мониторить новые админские аккаунты и держать проверенные бэкапы, а не надеяться на кнопку «обновить все».
Инцидент с Admin Menu Editor Pro показывает, что следующий крупный риск для WordPress лежит не только в уязвимостях кода, но и в инфраструктуре разработчиков расширений. Чем больше сайты зависят от коммерческих плагинов и их приватных серверов обновлений, тем ценнее для атакующих становится один компрометированный maintainer-сайт.

