WP Go Maps <= 10.1.01 - Unauthenticated Arbitrary Record Creation
Description
The WP Go Maps – Most Popular Map Plugin plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 10.1.01. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for unauthenticated attackers to create arbitrary records in plugin database tables (maps, markers, circles, polygons, polylines, rectangles, and point labels) by supplying a WPGMZA-namespaced CRUD-backed class name via the phpClass parameter. The namespace validation check (requiring the 'WPGMZA' prefix) does not prevent exploitation because classes such as WPGMZA\Map and WPGMZA\Marker satisfy it while still triggering an INSERT into the corresponding plugin table before the route rejects the request.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
1- Range: <=10.1.01
Patches
Vulnerability mechanics
Root cause
"The plugin's AJAX fallback handler (onAJAXRequest) does not enforce the permission_callback on routes that were registered without one during the non-REST-request registration phase, allowing unauthenticated attackers to supply a WPGMZA-namespaced class name via the phpClass parameter and trigger INSERT operations into plugin database tables."
Attack vector
An unauthenticated attacker sends a POST request to the wp-admin/admin-ajax.php endpoint with the action parameter set to wpgmza_rest_api_request and a route parameter matching a registered pattern (e.g., /features/). The attacker also supplies a phpClass parameter containing a WPGMZA-namespaced class name such as WPGMZA\Map or WPGMZA\Marker. Because the onAJAXRequest method [ref_id=1] iterates over fallbackRoutesByRegex and calls the stored callback without checking the permission_callback when the route was registered without one, the request proceeds to the features() or markers() handler which instantiates the supplied class and triggers an INSERT into the corresponding plugin database table.
Affected code
The vulnerability is in the onAJAXRequest method of the RestAPI class in wp-google-maps/tags/10.0.10/includes/class.rest-api.php [ref_id=1]. This method handles AJAX fallback requests when the REST API is blocked and iterates over fallbackRoutesByRegex to find a matching route, but it only checks the permission_callback if one was set in the $args array; routes registered without a permission_callback (such as the GET-only routes for features, markers, etc.) are executed without any authorization check.
What the fix does
The advisory does not include a patch, but the fix would need to ensure that the AJAX fallback handler (onAJAXRequest) in class.rest-api.php [ref_id=1] enforces the permission_callback for all routes, not just those that had one set during registration. Specifically, the handler should validate that the requesting user has the required capability (e.g., isUserAllowedToEdit) before allowing any POST or DELETE requests to proceed, regardless of whether the route was registered with a permission_callback.
Preconditions
- networkAttacker must be able to send HTTP POST requests to the WordPress admin-ajax.php endpoint
- inputThe request must include a valid route parameter matching a registered pattern (e.g., /features/) and a phpClass parameter with a WPGMZA-namespaced class name
Generated on Jun 20, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2News mentions
0No linked articles in our index yet.