Плагин PublishPress Capabilities — редактор ролей пользователей, разрешения доступа, возможности пользователей, меню администратора для WordPress уязвим для повышения привилегий во всех версиях до 2.50.0 включительно. Это связано с тем, что функция `addPluginCapabilities()` безоговорочно предоставляет роли редактора все 15 возможностей `manage_capabilities_*`, включая `manage_capabilities`, `manage_capabilities_roles`, `manage_capabilities_settings` и `manage_capabilities_backup`, через жестко запрограммированный `$eligible_roles = ['administrator', 'editor']`, которое запускается автоматически при первом `admin_init` после активации плагина без согласия администратора, сохраняя разрешения непосредственно в базе данных. Это позволяет аутентифицированным злоумышленникам с доступом на уровне редактора повысить свои привилегии до уровня менеджера возможностей всего сайта, что позволяет им создавать, переименовывать и удалять несистемные роли, изменять возможности неадминистраторских ролей, восстанавливать резервные копии ролей и писать произвольные параметры плагина, имена которых начинаются с `cme_`, `capsman`, `pp_capabilities` или `presspermit` через `update_option()`.
Эскалация не позволяет получить полный доступ администратора, поскольку слой WordPress `map_meta_cap` по-прежнему не позволяет эскалированному редактору предоставлять другим ролям права только администратора; однако все функции управления ролями и настройки плагинов, основанные исключительно на возможностях manage_capabilities_*, остаются полностью доступными.
Показать оригинальное описание (EN)
The PublishPress Capabilities – User Role Editor, Access Permissions, User Capabilities, Admin Menus plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 2.50.0. This is due to the `addPluginCapabilities()` function unconditionally granting the Editor role all 15 `manage_capabilities_*` capabilities — including `manage_capabilities`, `manage_capabilities_roles`, `manage_capabilities_settings`, and `manage_capabilities_backup` — via a hard-coded `$eligible_roles = ['administrator', 'editor']` assignment that runs automatically on the first `admin_init` after plugin activation with no administrator opt-in, persisting the grants directly to the database. This makes it possible for authenticated attackers with Editor-level access to elevate their privileges to a site-wide capability manager, enabling them to create, rename, and delete non-system roles, modify capabilities of non-administrator roles, restore role backups, and write arbitrary plugin options whose names begin with `cme_`, `capsman`, `pp_capabilities`, or `presspermit` via `update_option()`. The escalation stops short of full Administrator access, as WordPress's `map_meta_cap` layer still prevents the escalated Editor from granting administrator-only capabilities to other roles; however, all role-management and plugin-settings functionality gated solely on `manage_capabilities_*` capabilities remains fully accessible.
Характеристики атаки
Последствия
Строка CVSS v3.1