Более пяти миллионов сайтов на WordPress пользуются плагином All-in-One WP Migration and Backup. В нём обнаружена уязвимость, позволяющая неаутентифицированному атакующему через внедрение SQL-кода, или SQL-инъекцию, при восстановлении архива добиться выполнения произвольного кода и полного захвата сайта. Проблеме присвоен идентификатор CVE-2026-19949 и оценка 8,8 балла по шкале CVSS, которая используется для измерения серьёзности уязвимостей. Это соответствует высокому уровню риска. Все версии плагина вплоть до 7.109 уязвимы, а разработчик ServMask выпустил исправление в версии 7.110 20 августа 2026 года.
Уязвимость CVE-2026-19949
Уязвимость принадлежит к классу отложенных SQL-инъекций. Это означает, что вредоносные данные сначала сохраняются в базе данных, а срабатывают лишь при последующей обработке совсем в другом контексте. Отправная точка для атаки - трекбеки, то есть уведомления о внешних ссылках, которые WordPress принимает на публичных записях. Механизм трекбеков не требует аутентификации, поэтому любой может оставить такую запись без входа в систему.
Атакующему достаточно выбрать публичную запись, где включены пинги, и отправить трекбек с особым именем сайта и URL. В этих значениях используются завершающие обратные слэши и специальные символы. WordPress хранит их в таблице комментариев как обычные данные, не удаляя необычные последовательности. На этом этапе запись выглядит безобидно и вряд ли привлечёт внимание владельца сайта. Вся опасность реализуется только при следующем действии администратора - экспорте и последующем импорте сайта.
Плагин All-in-One WP Migration and Backup создаёт резервную копию сайта в файле формата .wpress, включающем файлы и дамп базы данных. При восстановлении он разбирает SQL-выражения и модифицирует их, заменяя адреса исходного сайта и префиксы таблиц на новые. Для поиска строк, заключённых в кавычки, используется регулярное выражение. Обработчик проверяет лишь символ, непосредственно предшествующий закрывающей кавычке, но не анализирует всю последовательность обратных слэшей. Из-за этой ошибки плагин неверно определяет границу строкового значения, и данные, подставленные злоумышленником, выходят за пределы строки. В результате они перестают быть безобидным текстом и превращаются в исполняемый SQL-код.
После того как вредоносный SQL выполняется, атакующий получает возможность манипулировать содержимым базы данных. Исследователь Джек Тейлор, обнаруживший проблему, показал, как это можно использовать для кражи секретного ключа плагина. Этот ключ защищает функцию импорта, которая доступна без аутентификации, но требует знания ключа. В атаке применяются две специальные записи трекбеков. Первая замедляет процесс восстановления и побуждает плагин приостановиться на промежуточной транзакции, из-за чего нужное значение оказывается в таблице опций. Вторая запись извлекает это значение и помещает его в комментарий, помеченный как одобренный. Такой комментарий становится виден публично, и атакующий забирает ключ через стандартный открытый интерфейс комментариев WordPress.
Дальнейшая цепочка ведёт к полному захвату сайта. Имея секретный ключ, злоумышленник напрямую обращается к функции импорта и отправляет специально созданный архив .wpress. Внутри архива находится вредоносный must-use плагин - особый тип модулей WordPress, которые загружаются автоматически при каждом запросе к сайту. Код из такого плагина выполняется с правами веб-сервера при следующем открытии любой страницы. Атакующий получает возможность читать и изменять файлы, устанавливать дополнительные скрипты для удалённого управления, красть данные пользователей и закрепляться в системе. Итогом становится полная компрометация сайта.
Важно понимать, что эксплуатация уязвимости невозможна без действия администратора: сначала нужно создать резервную копию, а затем восстановить её. Однако именно такие операции являются штатными для плагина миграции и бэкапа. Wordfence, занимающаяся исследованием безопасности WordPress и обнаружившая проблему, предупреждает, что условие "администратор сделает экспорт и импорт" нельзя считать надёжной защитой. Злоумышленник может внедрить вредоносный трекбек заранее и спокойно дожидаться, пока владелец сайта выполнит плановый перенос или восстановление. Плагин активно используется на широкой базе установок, поэтому потенциальная зона поражения очень велика.
Раскрытие уязвимости прошло через программу Bug Bounty компании Wordfence. Исследователь Джек Тейлор сообщил о проблеме 14 августа 2026 года и получил вознаграждение 5761 доллар. Wordfence передала детали разработчику ServMask 15 августа, тот подтвердил отчёт 17 августа и выпустил исправленную версию 7.110 уже 20 августа. Администраторам следует немедленно обновить All-in-One WP Migration and Backup до версии 7.110 или более новой. Дополнительно стоит проверить настройки трекбеков и отключить приём уведомлений на записях, где он не требуется. Не помешает просмотреть комментарии на предмет подозрительных автоматических записей с необычными обратными слэшами в поле имени или URL, а также убедиться, что в последнее время не выполнялось несанкционированное восстановление архива.
Найденная уязвимость в популярном инструменте резервного копирования показывает, насколько сложной может быть атака даже при отсутствии аутентификации. Сочетание отложенной SQL-инъекции и кражи секретного ключа превращает, казалось бы, обычный процесс восстановления копии в цепочку для выполнения кода. Такие уязвимости особенно неприятны, потому что затронутое действие рутинное, а вредоносные данные практически не отличаются от обычного спама. Своевременное обновление плагина остаётся главной мерой защиты, но дополнительный контроль за публичными функциями WordPress тоже снижает риск.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-19949
- https://www.wordfence.com/threat-intel/vulnerabilities/id/22e273d9-a268-4dc5-b1f6-3bc5c29232c5
- https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/all-in-one-wp-migration/all-in-one-wp-migration-and-backup-7109-unauthenticated-second-order-sql-injection-via-archive-restore-to-remote-code-execution