Специалисты WordFence обнаружили три опасные RCE-уязвимости в популярном плагине PHP Everywhere, который используется на 30 000 сайтов на базе WordPress. Все баги получили 9,9 балла из 10 возможных по шкале оценки уязвимостей CVSS и могут использоваться для удаленного выполнения произвольного кода.
Как нетрудно догадаться по названию, PHP Everywhere упрощает администраторам WordPress-сайтов внедрение кода PHP на любые страницы, боковую панель, в сообщения или любой блок Гутенберга.
Проблемы, найденные специалистами, могут эксплуатировать как контрибьюторы, так и простые подписчики, причем баги представляют опасность для всех версий WordPress начиная от 2.0.3 и ниже.
Первая уязвимость имеет идентификатор CVE-2022-24663 и связана с тем, что WordPress позволяет аутентифицированным пользователям использовать шорткоды с помощью AJAX parse-media-shortcode. То есть, если пользователь вошел в систему (даже если у него низкие привилегии обычного подписчика), отправленный им запрос с параметром shortcode может использоваться выполнения произвольного PHP-кода, что в итоге может привести к полному захвату ресурса.
Вторая проблема, CVE-2022-24664, связана с тем, как PHP Everywhere управляет метабоксами и позволяет любому пользователю с возможностью edit_posts использовать эти функции.
«Недоверенные пользователи уровня контрибьютора могут использовать метабокс PHP Everywhere для выполнения произвольного кода на сайте, создавая пост, добавляя PHP-код в метабокс PHP Everywhere, а затем предварительно просматривая этот пост, — рассказывают эксперты. — Хотя данная уязвимость имеет тот же балл по шкале CVSS, что и уязвимость, связанная с шорткодами, она менее серьезна, поскольку требует привилегий контрибьютора».
Третья уязвимость получила идентификатор CVE-2022-24665 и заключается в том, что пользователи с правами edit_posts могут использовать блоки Гутенберга в PHP Everywhere. То есть злоумышленник получает возможность вмешиваться в работу сайта и выполнять произвольный код. Эту функциональность можно ограничить параметром admin-only, хотя в версиях ниже 2.0.3 это не реализовано по умолчанию.
Разработчик PHP Everywhere выпустил исправленную версию плагина еще 10 января 2022 года, присвоив ей номер 3.0.0. К сожалению, согласно официальной статистике, пока только около 15 000 из 30 000 сайтов обновили плагин до безопасной версии.