Присоединяйся к обсуждению

Больше материалов, обсуждений и эксклюзивного контента — на нашем форуме.

Критическая уязвимость в плагине GiveWP позволяет выполнять команды на сервере WordPress

В плагине GiveWP для WordPress обнаружена уязвимость максимальной степени критичности, позволяющая неавторизованному злоумышленнику выполнять произвольные команды на сервере, где размещён сайт. Проблема получила идентификатор CVE-2026-82222 и затрагивает версии GiveWP до 4.16.7.1 включительно. Об уязвимости сообщил исследователь Udin Chan 28 июля через платформу анализа уязвимостей Patchstack.

Плагин GiveWP используется более чем на 100 000 сайтов и предназначен для приёма пожертвований и управления фандрайзинговыми кампаниями.

Как работает эксплойт

По данным исследователей Patchstack, для эксплуатации уязвимости атакующий должен объединить три отдельные проблемы безопасности:

  • небезопасный вспомогательный механизм десериализации PHP-данных;
  • процесс обработки пожертвований, который сохраняет контролируемые атакующим сериализованные объекты;
  • цепочку «гаджетов» в сторонних библиотеках, поставляемых с плагином, которая позволяет вызывать произвольные системные команды.

Для успешной атаки злоумышленнику необходима учётная запись на целевом сайте. Однако, как отмечает Patchstack, в плагине присутствует незащищённое действие регистрации, доступное без авторизации, которое позволяет создать учётную запись даже при отключённой регистрации на сайте.

«GiveWP предоставляет неавторизованное действие регистрации (give_action=user_register), которое никогда не проверяет параметр WordPress users_can_register», — объясняют в Patchstack. «Даже на сайте с отключённой регистрацией атакующий может создать учётную запись, получить cookie-файл авторизации и затем провести остальную часть атаки в рамках той же последовательности действий».

После авторизации хакеры могут сохранить вредоносный сериализованный объект в своём профиле и внедрить его в базу данных сессий плагина, отправив специально сформированное пожертвование.

«Сервер записывает объект-гаджет в таблицу wp_give_sessions перед тем, как вернуть ошибку HTTP 500», — пояснил Джордж Джонстон (George Johnstone), исследователь безопасности Patchstack.

При запросе любой публичной страницы сайта с тем же cookie-файлом авторизации сервер десериализует вредоносный объект и выполняет команду, заданную атакующим.

Условия эксплуатации и уязвимые версии

Версии с 4.16.6 по 4.16.7.1 остаются уязвимыми, хотя для эксплуатации требуется, чтобы на сайте присутствовала устаревшая форма пожертвований без параметра «formBuilderSettings». В Patchstack отмечают, что такие условия могут встречаться на сайтах, обновлённых с более старых версий, использующих редактор форм на основе опций, а также при импорте или восстановлении старых форм.

Исправление уязвимости

Разработчики GiveWP устранили уязвимость в версии 4.16.7.2, выпущенной 27 августа. Обновление блокирует передачу сериализованных данных в процессе обработки пожертвований и ограничивает создание объектов в нескольких точках десериализации. Кроме того, обновление удаляет уже сохранённые в базах данных вредоносные сериализованные объекты, если они присутствовали.

При этом Patchstack отмечает, что действие регистрации в GiveWP всё ещё не учитывает настройки регистрации пользователей WordPress, однако эта проблема больше не может быть использована для выполнения кода.

Администраторам сайтов, использующих GiveWP, настоятельно рекомендуется как можно скорее установить обновление безопасности, чтобы предотвратить возможную эксплуатацию CVE-2026-82222.

Ранее злоумышленники уже атаковали GiveWP для косвенного взлома Pi-hole — популярного сетевого блокировщика рекламы, — в результате чего были раскрыты имена и адреса электронной почты 30 000 доноров.