Плагин Wholesale for WooCommerce для WordPress уязвим к повышению привилегий во всех версиях до 2.0.5 включительно. Это связано с тем, что функция save_requests_meta() применяет только `sanitize_text_field()` к POST-параметру `user_role_set` перед передачей его непосредственно в `WP_User::add_role()`, без проверки списка разрешенных разрешенных оптовых ролей и без проверки возможностей, такой как `current_user_can('promote_users')` или `current_user_can('manage_options')`. Это позволяет аутентифицированным злоумышленникам с доступом на уровне автора и выше повысить свои привилегии до администратора, указав «администратор» в качестве значения «user_role_set» в сформированном запросе.
Функция закрывается только nonce (`request_user_role_nonce`), который отображается в мета-поле на экране редактирования сообщения `wwp_requests`; поскольку тип сообщения зарегистрирован с помощью `capability_type => 'post'`, любой пользователь уровня автора, создавший сообщение `wwp_requests` — например, созданное через форму оптовой регистрации — может получить доступ к этому nonce и отправить запрос на назначение роли.
Показать оригинальное описание (EN)
The Wholesale for WooCommerce plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 2.0.5. This is due to the `save_requests_meta()` function applying only `sanitize_text_field()` to the `user_role_set` POST parameter before passing it directly to `WP_User::add_role()`, with no allowlist validation against permitted wholesale roles and no capability check such as `current_user_can('promote_users')` or `current_user_can('manage_options')`. This makes it possible for authenticated attackers with author-level access and above to escalate their privileges to administrator by supplying `administrator` as the `user_role_set` value in a crafted request. The function is gated only by a nonce (`request_user_role_nonce`) that is rendered in the meta box on the `wwp_requests` post edit screen; because the post type is registered with `capability_type => 'post'`, any author-level user who has authored a `wwp_requests` post — such as one created via the wholesale registration form — can access this nonce and submit the role-assignment request.
Характеристики атаки
Последствия
Строка CVSS v3.1