MStore API – Create Native Android & iOS Apps On The Cloud <= 4.18.4 - Missing Authorization
Description
The MStore API – Create Native Android & iOS Apps On The Cloud plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 4.18.4. This makes it possible for unauthenticated attackers to perform an unauthorized action.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:NTechnical Details
Source Code
WordPress.org SVNPatched version not available.
This research plan targets **CVE-2026-57375**, a Missing Authorization vulnerability in the **MStore API** plugin (versions <= 4.18.4). Based on the CVSS vector (I:L, C:N), the vulnerability likely allows unauthenticated attackers to modify specific plugin configurations or user-related data without…
Show full research plan
This research plan targets CVE-2026-57375, a Missing Authorization vulnerability in the MStore API plugin (versions <= 4.18.4). Based on the CVSS vector (I:L, C:N), the vulnerability likely allows unauthenticated attackers to modify specific plugin configurations or user-related data without proper permission checks.
1. Vulnerability Summary
- Vulnerability: Missing Authorization.
- Plugin: MStore API – Create Native Android & iOS Apps On The Cloud (
mstore-api). - Afected Versions: <= 4.18.4.
- Description: The plugin registers REST API endpoints or AJAX handlers intended for app synchronization or user management but fails to implement
permission_callback(for REST) or capability checks (for AJAX). This allows unauthenticated users to trigger functions that modify site state.
2. Attack Vector Analysis
- Endpoint Type: Likely a WordPress REST API route (registered via
register_rest_route) or an unauthenticated AJAX action (wp_ajax_nopriv_). - Route Namespace (inferred):
mstore/v1ormstore-api/v1. - Authentication: None required (unauthenticated).
- Preconditions: The plugin must be active. Some endpoints may require a specific plugin setting to be enabled (e.g., "Enable App Login").
3. Code Flow (Discovery Phase)
The agent must first locate the vulnerable entry point.
Identify REST Routes: Search for route registrations that lack proper authorization.
- Command:
grep -rn "register_rest_route" wp-content/plugins/mstore-api/ - Look for: Routes where
'permission_callback'is missing, set to__return_true, or set to a function that doesn't usecurrent_user_can().
- Command:
Identify AJAX Handlers: Search for unauthenticated AJAX actions.
- Command:
grep -rn "wp_ajax_nopriv_" wp-content/plugins/mstore-api/ - Trace the callback function to check for
current_user_can()orcheck_ajax_referer().
- Command:
Target Functionality: Focus on functions that perform
update_option(),update_user_meta(), orwp_insert_user().- Command:
grep -rnE "update_option|update_user_meta|wp_insert_user" wp-content/plugins/mstore-api/
- Command:
4. Nonce Acquisition Strategy
While many REST routes in this plugin may skip nonces entirely for mobile compatibility, some might require the standard wp_rest nonce.
- Check Requirement: Inspect the
permission_callback. If it is absent, no nonce is typically required for unauthenticated REST access. - Extraction (if needed):
- Identify a shortcode that enqueues MStore scripts (e.g.,
[mstore_info]or similar, found viagrep -r "add_shortcode"). - Create a test page:
wp post create --post_type=page --post_status=publish --post_content='[SHORTCODE_NAME]' - Navigate to the page and extract the nonce using
browser_eval:window.mstore_vars?.nonceor check thewp-jsonheader.
- Identify a shortcode that enqueues MStore scripts (e.g.,
5. Exploitation Strategy
Based on common patterns in this plugin, the vulnerability likely resides in a "Settings Sync" or "User Registration" endpoint.
Scenario A: Unauthorized Settings Update (Integrity: Low)
If a route like POST /wp-json/mstore/v1/settings exists:
- Endpoint:
http://vulnerable-test.local/wp-json/mstore/v1/settings - Method:
POST - Headers:
Content-Type: application/json - Payload:
{ "mstore_app_config": { "firebase_server_key": "attacker-key", "facebook_app_id": "123456789" } }
Scenario B: Unauthorized User Meta Modification
If a route like POST /wp-json/mstore/v1/user/update exists:
- Endpoint:
http://vulnerable-test.local/wp-json/mstore/v1/user/update - Payload:
{ "user_id": 1, "meta_key": "some_privilege_flag", "meta_value": "true" }
6. Test Data Setup
- Install Plugin: Ensure
mstore-apiv4.18.4 is installed and active. - Identify Target Setting: Determine a non-critical but modifiable option (e.g., the "App Name" or "Primary Color" in the plugin settings).
- Create Page (if nonce needed): Find the script-loading shortcode and place it on a page.
7. Expected Results
- Success Response: The server returns
200 OKor201 Created, often with a JSON body like{"status": "success"}or echoing the updated values. - Vulnerability Confirmation: The modified setting or user meta persists in the database.
8. Verification Steps
- Check Options: Use WP-CLI to see if the targeted option changed.
wp option get mstore_app_config
- Check User Meta:
wp user meta get 1 some_privilege_flag
- Log Inspection: Check for lack of "401 Unauthorized" or "403 Forbidden" responses in the access logs during the unauthenticated request.
9. Alternative Approaches
- Method Override: If
POSTis blocked, tryGETwith parameters or use theX-HTTP-Method-Override: POSTheader. - Search for Configuration Sync: Many mobile plugins have an "Import/Export" or "Sync" feature that uses a simple token (or no token) to overwrite settings. Search for
json_decode(file_get_contents('php://input'))in files related to "Sync" or "Cloud". - Check for
_wpnoncebypass: See if the code callscheck_ajax_refererbut passesfalseas the third argument (die) and fails to check the return value.
Summary
The MStore API plugin for WordPress fails to implement proper authorization checks on certain functional endpoints in versions up to and including 4.18.4. This vulnerability allows unauthenticated attackers to perform unauthorized actions, such as modifying plugin-specific configurations or user metadata, by directly accessing unprotected REST API routes or AJAX handlers.
Exploit Outline
An attacker targets unauthenticated REST API routes (typically within the mstore/v1 namespace) or AJAX handlers that lack a 'permission_callback' or 'current_user_can' check. By sending a POST request to these endpoints with a specific payload, the attacker can trigger internal functions that update site options or user metadata. No authentication or valid nonces are required to successfully execute these requests if the endpoint is fully unprotected.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.