Редактор полей оформления заказа (Менеджер оформления заказа) для плагина WooCommerce для WordPress уязвим к хранимым межсайтовым сценариям через настраиваемые значения полей радио и группы флажков, отправленные через API WooCommerce Block Checkout Store во всех версиях до 2.1.7 включительно. Это связано с тем, что метод prepare_single_field_data() в class-thwcfd-block-order-data.php сначала экранирует значения с помощью esc_html(), а затем немедленно меняет экранирование с помощью html_entity_decode() для типов полей радио и checkboxgroup, в сочетании с разрешающим списком разрешений wp_kses() в get_allowed_html(), который явно разрешает Элемент `<select>` с атрибутом обработчика событий `onchange`. Это позволяет злоумышленникам, не прошедшим проверку подлинности, внедрять произвольные веб-скрипты через конечную точку проверки API магазина, которые выполняются, когда администратор просматривает страницу сведений о заказе.
Показать оригинальное описание (EN)
The Checkout Field Editor (Checkout Manager) for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via custom radio and checkboxgroup field values submitted through the WooCommerce Block Checkout Store API in all versions up to, and including, 2.1.7. This is due to the `prepare_single_field_data()` method in `class-thwcfd-block-order-data.php` first escaping values with `esc_html()` then immediately reversing the escaping with `html_entity_decode()` for radio and checkboxgroup field types, combined with a permissive `wp_kses()` allowlist in `get_allowed_html()` that explicitly permits the `<select>` element with the `onchange` event handler attribute. This makes it possible for unauthenticated attackers to inject arbitrary web scripts via the Store API checkout endpoint that execute when an administrator views the order details page.
Характеристики атаки
Последствия
Строка CVSS v3.1