CVE-2026-3568 Overview
The MStore API plugin for WordPress contains an Insecure Direct Object Reference (IDOR) vulnerability in all versions up to and including 4.18.3. The flaw exists within the update_user_profile() function located in controllers/flutter-user.php, which processes the meta_data JSON parameter without implementing any allowlist, blocklist, or validation of meta keys. This allows authenticated attackers with Subscriber-level access or above to modify arbitrary user meta fields on their own accounts, potentially leading to privilege escalation and stored Cross-Site Scripting (XSS) attacks.
Critical Impact
Authenticated attackers can escalate privileges by manipulating sensitive user meta fields such as wp_user_level, bypass plugin-specific authorization controls, and inject malicious values into billing/profile fields that may execute in administrative contexts.
Affected Products
- MStore API plugin for WordPress versions up to and including 4.18.3
- WordPress installations with MStore API plugin enabled
- Flutter-based mobile applications utilizing MStore API
Discovery Timeline
- April 9, 2026 - CVE-2026-3568 published to NVD
- April 9, 2026 - Last updated in NVD database
Technical Details for CVE-2026-3568
Vulnerability Analysis
This vulnerability is classified as CWE-639 (Authorization Bypass Through User-Controlled Key), representing an Insecure Direct Object Reference where user-supplied input directly controls which resources are accessed or modified without proper authorization checks.
The vulnerability resides in the user profile update mechanism of the MStore API plugin. When processing profile update requests, the function reads raw JSON from php://input at line 1012, decodes the JSON payload at line 1013, performs cookie-based user authentication at line 1015, and then iterates over the user-supplied meta_data array. The critical flaw occurs at line 1080 where arbitrary keys and values are passed directly to update_user_meta() without any sanitization, validation, or restrictions on which meta keys can be modified.
Root Cause
The root cause stems from missing input validation and access control in the update_user_profile() function. The code fails to implement:
- An allowlist of permitted meta keys that users should be able to modify
- A blocklist of sensitive meta keys that must be protected
- Any validation logic to verify whether the requested meta key should be user-modifiable
- Proper sanitization of meta values before storage
This permissive design allows any authenticated user to write arbitrary data to any user meta field associated with their account, including sensitive system and plugin-controlled fields.
Attack Vector
The attack is network-based and requires low-privilege authenticated access (Subscriber-level or above). An attacker can craft a malicious JSON payload targeting the profile update endpoint with a manipulated meta_data array containing sensitive meta keys.
Exploitable meta fields include:
- wp_user_level - A legacy integer field that can be set to administrator-level values (e.g., 10) to bypass certain privilege checks
- _wpuf_user_active - Plugin-specific authorization flags
- aiowps_account_status - Security plugin status fields
- Various billing and profile fields that may render unsanitized content in admin interfaces, enabling Stored XSS
It's important to note that wp_capabilities cannot be directly exploited through this vulnerability because it requires a serialized array value, but the integer-based wp_user_level field and numerous plugin-specific meta keys remain vulnerable.
Detection Methods for CVE-2026-3568
Indicators of Compromise
- Unexpected modifications to user meta fields, particularly wp_user_level values elevated to administrator levels
- Unusual API requests to MStore API profile update endpoints containing suspicious meta keys
- Changes to plugin-specific authorization fields such as _wpuf_user_active or aiowps_account_status
- Stored XSS payloads appearing in billing or profile fields within the WordPress admin interface
Detection Strategies
- Monitor WordPress database for unauthorized changes to wp_usermeta table entries involving sensitive keys
- Implement Web Application Firewall (WAF) rules to detect and block requests containing restricted meta key names in JSON payloads
- Review MStore API access logs for profile update requests with anomalous meta_data structures
- Deploy file integrity monitoring on WordPress plugin files to detect unauthorized modifications
Monitoring Recommendations
- Enable detailed logging for the MStore API plugin endpoints
- Configure alerts for any user privilege changes or meta field modifications outside normal administrative workflows
- Implement real-time monitoring of update_user_meta() function calls for suspicious patterns
- Review user activity logs for subscribers making profile update requests with unusual payload sizes
How to Mitigate CVE-2026-3568
Immediate Actions Required
- Update the MStore API plugin to a patched version beyond 4.18.3 immediately
- Audit existing user meta fields for any unauthorized modifications, especially wp_user_level values
- Review user accounts for unexpected privilege escalations
- Temporarily disable the MStore API plugin if an update is not immediately available
Patch Information
The vulnerability has been addressed in the MStore API plugin. A WordPress Plugin Changeset is available showing the security fix. Users should update to the latest version available through the WordPress plugin repository. Additional technical details are available in the Wordfence Vulnerability Report.
Workarounds
- Implement a custom allowlist filter for permitted meta keys if patching is not immediately possible
- Use a Web Application Firewall to block requests containing sensitive meta key names in the meta_data parameter
- Restrict API access to trusted IP addresses or networks
- Temporarily revoke API access for subscriber-level users until the plugin can be updated
# WordPress htaccess rule to restrict MStore API access
# Add to .htaccess in WordPress root directory
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/api/flutter_user/update_user_profile [NC]
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.
RewriteRule .* - [F,L]
</IfModule>
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


