GiveWP, плагин для WordPress для приема пожертвований, используемый на миллионах благотворительных сайтов, внезапно столкнулся с критической уязвимостью удаленного выполнения кода (RCE). CVE-2026-82222 получила максимальный балл 10.0 по шкале CVSS и позволяет любому пользователю интернета выполнять произвольные команды на уязвимом сервере. Исправление выпущено в версии 4.16.7.2.
Почему эта ошибка критична
GiveWP находится в основе бесчисленных страниц для сбора средств. Владельцы сайтов полагаются на него для обработки данных доноров, проведения платежей и хранения информации о сессиях. Злоумышленник, способный выполнить код на базовом сервере, может украсть учетные данные, изменить внешний вид сайта (дефейс) или использовать сервер как плацдарм для атаки на другие части сети. Поскольку уязвимость работает без авторизации, всей поверхностью атаки становится весь открытый интернет.
Как работает эксплойт
Уязвимость — это не одна ошибка в коде, а цепочка из трех отдельных проблем, которые в совокупности открывают «бэкдор».
- Небезопасная десериализация — вспомогательная функция плагина
safeUnserializeпреобразует сериализованные объекты в заглушки вместо того, чтобы полностью их удалять, оставляя исходные данные объекта нетронутыми. - Слепая повторная десериализация — данные, извлеченные из базы данных, снова передаются в
unserializeбез проверки, что позволяет «воскрешать» специально сформированные объекты. - Цепочка гаджетов TCPDF — GiveWP включает в себя библиотеку для генерации PDF-файлов TCPDF, которая содержит цепочку классов, способную вызывать системные команды после десериализации вредоносного объекта.
Злоумышленник следует четырехэтапному алгоритму, не требующему наличия учетной записи:
- Регистрация — через хук
user_registerзлоумышленник создает пользователя WordPress, даже если регистрация на сайте отключена. - Размещение — злоумышленник сохраняет сериализованную полезную нагрузку в поле
last_nameнового профиля. - Отравление — отправка пожертвования заставляет плагин записать эту полезную нагрузку в таблицу
wp_give_sessions. - Выполнение — когда любая публичная страница позже считывает сессию, вредоносный объект десериализуется, запускается цепочка гаджетов TCPDF, и на сервере выполняется команда, переданная злоумышленником.
Исправление
Разработчики GiveWP выпустили версию 4.16.7.2, чтобы разорвать эту цепочку на каждом этапе:
- Пожертвования, содержащие сериализованные данные, отклоняются сразу.
- Все функции чтения данных теперь применяют строгую проверку типов и содержимого.
- Цепочка гаджетов TCPDF явно заблокирована, что предотвращает несанкционированные вызовы методов.
- Мета-поля, включая
last_name, проходят очистку перед сохранением. - Автоматически запускается миграция базы данных для удаления любых существующих вредоносных нагрузок.
Обновление плагина — это только первый шаг; вы должны убедиться, что миграция очистки была выполнена, чтобы удалить полезные нагрузки, которые уже находятся в вашей базе данных.
Кто находится в зоне риска
Любой сайт WordPress, использующий GiveWP версии 4.16.7.1 или более ранней, уязвим, независимо от того, включена ли регистрация. Под угрозой могут оказаться как крупные некоммерческие организации, так и небольшие благотворительные фонды или личные страницы для сбора средств. Атака не зависит от конкретной конфигурации сервера; уязвимости подвержена любая PHP-среда, поддерживающая встроенную библиотеку TCPDF.
Контраргумент
Некоторые владельцы сайтов утверждают, что для эксплуатации уязвимости донор должен совершить платеж, что они считают маловероятным событием. Уязвимость опровергает это мнение: вредоносная нагрузка сохраняется на этапе пожертвования, но выполнение происходит при любой последующей загрузке страницы, даже если платеж не был завершен. Отсутствие необходимости в авторизации и оценка CVSS 10.0 делают этот риск слишком высоким, чтобы рассматривать его как теоретическую проблему.
Итог
CVE-2026-82222 в GiveWP демонстрирует, как серия, казалось бы, безобидных упрощений в коде может привести к катастрофическому взлому. Исправление готово. Администраторам сайтов следует немедленно обновиться до версии 4.16.7.2, убедиться, что миграция очистила существующие нагрузки, и отслеживать логи на предмет признаков активности после эксплуатации уязвимости. Игнорирование патча может оставить веб-ресурсы благотворительных организаций — и данные их доноров — под контролем злоумышленника с полным доступом к серверу.
