Плагин WP EasyCart для WordPress уязвим к повышению привилегий в версиях до 5.9.3 включительно. Это связано с тем, что обработчик AJAX ec_ajax_save_page_default_options() перебирает каждый ключ $_POST и передает его непосредственно в update_option() без какого-либо списка разрешений, при этом ограничивая обработчик только для «manage_options» ИЛИ специальной возможности плагина «wpec_manager». Встроенная роль «wpec_store_manager» плагина содержит «wpec_manager», но не «manage_options», а требуемый одноразовый номер генерируется в шаблонах продуктов/категорий внешнего интерфейса, которые отображаются для любого пользователя с «wpec_manager».
Это позволяет злоумышленникам, прошедшим проверку подлинности, с доступом на уровне Store Manager и выше, повысить свои привилегии до администратора, обновив произвольные параметры WordPress, такие как default_role='administrator' иusers_can_register='1', а затем самостоятельно зарегистрировав новую учетную запись, которой назначена роль администратора.
Показать оригинальное описание (EN)
The WP EasyCart plugin for WordPress is vulnerable to privilege escalation in versions up to, and including, 5.9.3. This is due to the ec_ajax_save_page_default_options() AJAX handler iterating over every $_POST key and passing it directly into update_option() without any allowlist, while gating the handler only on 'manage_options' OR the plugin's custom 'wpec_manager' capability. The plugin's built-in 'wpec_store_manager' role holds 'wpec_manager' but not 'manage_options', and the required nonce is emitted on frontend product/category templates that render for any user with 'wpec_manager'. This makes it possible for authenticated attackers, with Store Manager-level access and above, to elevate their privileges to administrator by updating arbitrary WordPress options such as default_role='administrator' and users_can_register='1', then self-registering a new account that is assigned the administrator role.
Характеристики атаки
Последствия
Строка CVSS v3.1