Review Schema – Review & Structure Data Schema Plugin <= 2.2.6 - Authenticated (Subscriber+) Information Exposure
Description
The Review Schema – Review & Structure Data Schema Plugin plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to, and including, 2.2.6. This makes it possible for authenticated attackers, with Subscriber-level access and above, to extract sensitive user or configuration data.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:NTechnical Details
<=2.2.6What Changed in the Fix
Changes introduced in v2.2.7
Source Code
WordPress.org SVNThis research plan outlines the technical steps required to exploit **CVE-2026-25344**, a Sensitive Information Exposure vulnerability in the **Review Schema** plugin for WordPress. ### 1. Vulnerability Summary The **Review Schema** plugin (up to version 2.2.6) contains an authenticated information…
Show full research plan
This research plan outlines the technical steps required to exploit CVE-2026-25344, a Sensitive Information Exposure vulnerability in the Review Schema plugin for WordPress.
1. Vulnerability Summary
The Review Schema plugin (up to version 2.2.6) contains an authenticated information exposure vulnerability. The plugin registers several AJAX actions that fail to implement proper capability checks (e.g., current_user_can( 'manage_options' )). Specifically, the rtrs_get_settings action allows any authenticated user, including those with Subscriber-level permissions, to retrieve sensitive plugin configuration data. This data includes settings stored in the WordPress options table, which may contain reCAPTCHA keys, social media profile links, and internal plugin configurations.
2. Attack Vector Analysis
- Endpoint:
/wp-admin/admin-ajax.php - Action:
rtrs_get_settings(Inferred from RadiusTheme patterns andAjaxController.phpinitialization). - HTTP Method:
POST - Authentication: Authenticated (Subscriber-level and above).
- Vulnerable Parameters:
tab: Specifies which settings group to retrieve (e.g.,review,schema,woocommerce,media,misc).section: Specifies a subsection within a tab (e.g.,social_profilesfor theschematab).
- Nonce Requirement: Yes, the action requires a nonce (likely with the action string
rtrs-nonce).
3. Code Flow
- Entry Point: The
AjaxController(inapp/Controllers/Ajax/AjaxController.php) initializes theReviewAJAX controller. - Registration: The
Reviewcontroller (or similar) registerswp_ajax_rtrs_get_settings. - Missing Check: The handler for
rtrs_get_settings(likely inside an unprovidedReview.phporMigration.phpfile) uses logic similar toAdminSettings::setTabs()to construct an option name. - Data Retrieval: It calls
get_option()on the constructed option name (e.g.,review_settings) and returns the JSON-encoded value. - Sink: The handler uses
wp_send_json_success()to output the data to the requester without verifying if the user has administrative privileges.
4. Nonce Acquisition Strategy
RadiusTheme plugins typically localize nonces for AJAX actions. To obtain a valid nonce as a Subscriber:
- Shortcode Identification: The plugin uses shortcodes like
[rtrs-affiliate](fromAddMetaBox.php). - Page Creation: Create a public page containing the shortcode. This ensures the plugin's scripts and localized variables are loaded.
- Execution:
- Use
wp post createto create a page with[rtrs-affiliate id="1"]. - Navigate to the page as a Subscriber.
- Use
browser_evalto extract the nonce from thertrs_ajaxorrtrs_adminobject.
- Use
- Verbatim Identifiers:
- JS Variable: `window.rtrs_ajax
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.