Некоторые плагины Newfold уязвимы для обхода аутентификации. Уязвимость существует, поскольку плагины включают в себя модуль wp-module-data. В модуле метод authenticate(), зарегистрированный в фильтре rest_authentication_errors и, следовательно, оцениваемый для каждого неаутентифицированного запроса REST API, выполняет сравнение токенов носителя в стиле HMAC, которое ухудшается, когда HiiveConnection::get_auth_token() возвращает false: PHP приводит `strrev(false)` к `strrev('')`, сворачивая секретная соль общеизвестной константы `hash('sha256', '') = e3b0c44...`, в то время как все остальные входные данные хэша (метод HTTP, URL-адрес запроса, необработанное тело запроса и заголовок `X-Timestamp`) остаются полностью под контролем злоумышленника.
Это позволяет неаутентифицированным злоумышленникам вычислить действительный токен Bearer полностью в автономном режиме, пройти проверку равенства токенов и вызвать `wp_set_current_user()` против первого администратора, возвращенного `get_users(['role' => 'administrator'])`, предоставляя полный доступ на уровне администратора и разрешая произвольные операции REST API, такие как создание новых учетных записей администратора и достижение полного захвата сайта. Уязвимыми версиями являются WP Plugin Crazy Domains (<= 2.5.2), WP Plugin Web (<= 2.3.4), WP Plugin Hostgator (<= 3.1.0), WP Plugin Bluehost (<= 4.17.1). Затронутый модуль уязвим в версиях до 2.9.4 включительно.
Показать оригинальное описание (EN)
Several Newfold plugins are vulnerable to Authentication Bypass. The vulnerability exists because the plugins bundle the wp-module-data module. In the module, the `authenticate()` method — registered on the `rest_authentication_errors` filter and therefore evaluated for every unauthenticated REST API request — performs an HMAC-style Bearer token comparison that degenerates when `HiiveConnection::get_auth_token()` returns `false`: PHP coerces `strrev(false)` to `strrev('')`, collapsing the secret salt to the publicly known constant `hash('sha256', '') = e3b0c44...`, while all remaining hash inputs (HTTP method, request URL, raw request body, and the `X-Timestamp` header) remain fully attacker-controlled. This makes it possible for unauthenticated attackers to compute a valid Bearer token entirely offline, pass the token equality check, and have `wp_set_current_user()` invoked against the first administrator returned by `get_users(['role' => 'administrator'])`, granting full administrator-level access and enabling arbitrary REST API operations such as creating new administrator accounts and achieving complete site takeover. Vulnerable versions are WP Plugin Crazy Domains (<= 2.5.2), WP Plugin Web (<= 2.3.4), WP Plugin Hostgator (<= 3.1.0), WP Plugin Bluehost (<= 4.17.1). The affected module is vulnerable in versions up to, and including, 2.9.4.
Характеристики атаки
Последствия
Строка CVSS v3.1