Критическая уязвимость, обнаруженная в популярном плагине AI Engine для WordPress, создает серьезную угрозу для более чем 100 000 активных установок по всему миру. Исследователи кибербезопасности выявили проблему раскрытия конфиденциальной информации, которая позволяет неавторизованным злоумышленникам получать токены доступа и повышать свои привилегии до уровня администратора.
Детали уязвимости
Уязвимость, зарегистрированная как CVE-2025-11749 с рейтингом CVSS 9.8 (критический), затрагивает все версии плагина вплоть до 3.1.3 включительно. Разработчик оперативно отреагировал, выпустив исправленную версию 3.1.4 19 октября 2025 года. Однако сайты, на которых ранее была активирована уязвимая настройка "No-Auth URL", должны немедленно обновить токены доступа для обеспечения безопасности.
AI Engine представляет собой мощный плагин WordPress, который интегрирует Model Context Protocol (MCP) с искусственным интеллектом, включая такие системы как Claude и ChatGPT. Эта интеграция позволяет автоматизированным агентам выполнять сложные задачи управления WordPress, включая модификацию учетных записей пользователей, обработку медиафайлов и редактирование публикаций.
Источник проблемы кроется в неправильной регистрации конечных точек REST API в классе Meow_MWAI_Labs_MCP плагина. Когда администраторы активируют функцию "No-Auth URL" в настройках MCP - по умолчанию отключенную - плагин регистрирует маршруты REST API, которые включают токен носителя непосредственно в путь конечной точки.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | public function rest_api_init() { // Load bearer token if not already loaded if ( $this->bearer_token === null ) { $this->bearer_token = $this->core->get_option( 'mcp_bearer_token' ); } // Only add filter once static $filter_added = false; if ( !empty( $this->bearer_token ) && !$filter_added ) { add_filter( 'mwai_allow_mcp', [ $this, 'auth_via_bearer_token' ], 10, 2 ); $filter_added = true; } register_rest_route( $this->namespace, '/sse', [ 'methods' => [ 'GET', 'POST', 'HEAD' ], // Support HEAD for client endpoint checks 'callback' => [ $this, 'handle_sse' ], 'permission_callback' => function ( $request ) { return $this->can_access_mcp( $request ); }, ] ); register_rest_route( $this->namespace, '/messages', [ 'methods' => 'POST', 'callback' => [ $this, 'handle_message' ], 'permission_callback' => function ( $request ) { return $this->can_access_mcp( $request ); }, ] ); // No-Auth URL endpoints (with token in path) $noauth_enabled = $this->core->get_option( 'mcp_noauth_url' ); if ( $noauth_enabled && !empty( $this->bearer_token ) ) { register_rest_route( $this->namespace, '/' . $this->bearer_token . '/sse', [ 'methods' => 'GET', 'callback' => [ $this, 'handle_sse' ], 'permission_callback' => function ( $request ) { return $this->handle_noauth_access( $request ); }, ] ); register_rest_route( $this->namespace, '/' . $this->bearer_token . '/sse', [ 'methods' => 'POST', 'callback' => [ $this, 'handle_sse' ], 'permission_callback' => function ( $request ) { return $this->handle_noauth_access( $request ); }, ] ); register_rest_route( $this->namespace, '/' . $this->bearer_token . '/messages', [ 'methods' => 'POST', 'callback' => [ $this, 'handle_message' ], 'permission_callback' => function ( $request ) { return $this->handle_noauth_access( $request ); }, ] ); } } |
Критически важным стало то, что эти конечные точки были зарегистрированы без установки параметра 'show_in_index' в значение false, что означает их публичное отображение в индексе REST API WordPress по адресу /wp-json/. Эта конструктивная уязвимость раскрывает токен носителя любому неаутентифицированному злоумышленнику, который запрашивает REST API, фактически предоставляя открытый доступ для компрометации затронутых сайтов.
Получив токен носителя, злоумышленник может аутентифицироваться в конечной точке MCP и выполнять команды уровня администратора. Исследование продемонстрировало, что атакующие могут использовать команды типа 'wp_update_user' для изменения своей собственной роли пользователя на администратора, обходя все проверки аутентификации и авторизации.
С этой привилегированной позиции злоумышленники могут загружать вредоносные плагины или темы, содержащие бэкдоры, изменять содержимое сайта для рассылки спама или фишинговых атак, либо полностью компрометировать веб-сайт.
Исследователь Эмилиано Версини обнаружил эту уязвимость и ответственно сообщил о ней через программу вознаграждений за ошибки Wordfence 4 октября 2025 года - всего через один день после появления уязвимости. Wordfence проверил доказательство концепции эксплуатации и немедленно инициировал раскрытие информации поставщику 14 октября 2025 года.
Разработчик признал отчет и выпустил версию 3.1.4 19 октября 2025 года, при этом пользователи бесплатной версии получили защиту брандмауэра тридцать дней спустя - 14 ноября 2025 года. Версини получил вознаграждение в размере 2145 долларов за это открытие, что демонстрирует приверженность Wordfence стимулированию качественных исследований уязвимостей для укрепления экосистемы WordPress.
Весь процесс демонстрирует ответственные практики раскрытия информации, при котором уязвимость была устранена всего за пятнадцать дней от первоначального обнаружения до развертывания исправления.
Владельцам сайтов, использующим AI Engine, необходимо немедленно принять меры для защиты своих установок. Основная мера смягчения включает обновление до версии 3.1.4 или более поздней. Однако сайты, на которых ранее была включена функция "No-Auth URL", сталкиваются с дополнительным риском: токен носителя мог уже быть раскрыт злоумышленникам.
Для таких сайтов простого обновления плагина недостаточно - администраторы должны немедленно обновить токен носителя на странице настроек плагина. Невыполнение ротации токена оставляет сайты уязвимыми даже после установки исправления, поскольку существующие токены носителя могут быть использованы злоумышленниками, которые перехватили их до развертывания патча.
Wordfence продолжает отслеживать попытки эксплуатации данной уязвимости. Правило брандмауэра, развернутое 15 октября, обнаруживает и блокирует вредоносные запросы REST API, пытающиеся активировать команды повышения привилегий. Администраторам WordPress без плагинов безопасности следует приоритизовать немедленное обновление, тогда как те, кто использует защиту Wordfence, должны убедиться, что и обновление плагина, и ротация токена выполнены как можно скорее. Учитывая критический характер этой уязвимости и потенциальную возможность полной компрометации сайта, задержка в remediation не рекомендуется.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-11749
- https://www.wordfence.com/blog/2025/11/100000-wordpress-sites-affected-by-privilege-escalation-vulnerability-in-ai-engine-wordpress-plugin/
- https://www.wordfence.com/threat-intel/vulnerabilities/id/06eaf624-aedf-453d-8457-d03a572fac0d
- https://plugins.trac.wordpress.org/browser/ai-engine/trunk/labs/mcp.php#L226
- https://plugins.trac.wordpress.org/changeset/3380753/ai-engine#file10