MapPress Maps for WordPress <= 2.96.6 - Unauthenticated Insecure Direct Object Reference via REST API Endpoints
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- 1 Nuclei template
- Exploitation: none
- Automatable: yes
- Technical impact: partial
Summary
The MapPress Maps for WordPress plugin for WordPress is vulnerable to Authorization Bypass Through User-Controlled Key in all versions up to, and including, 2.96.6. This is due to missing ownership verification in the REST API routes registered via `Mappress_Api::rest_api_init()`, where the GET `/wp-json/mapp/v1/maps/{mapid}` endpoint uses `'permission_callback' => '__return_true'` and the write endpoints (POST update, DELETE, PATCH mutate, POST clone, POST empty_trash) only check the generic `edit_posts` capability without confirming that the requester owns the targeted map — a gap that is not compensated at the model layer, as `Mappress_Map::get()`, `save()`, `delete()`, `mutate()`, and `empty_trash()` all operate on any caller-supplied map ID without an ownership check. This makes it possible for unauthenticated attackers to read sensitive map data — including POI titles, addresses, coordinates, and body content — for any map on the site by enumerating map IDs, and for authenticated attackers with Contributor-level access and above to modify, delete, trash/restore, or clone any map regardless of its author.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- chrisvrichardson MapPress Maps for WordPress
through 2.96.6
References 25
plugins.trac.wordpress.org
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L328
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L328
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L90
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L268
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L39
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L253
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L50
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_api.php#L75
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_map.php#L239
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_map.php#L493
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_map.php#L379
- browser/mappress-google-maps-for-wordpress/tags/2.96.6/mappress_map.php#L550
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L90
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L268
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L39
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L253
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L50
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_api.php#L75
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_map.php#L239
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_map.php#L493
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_map.php#L379
- browser/mappress-google-maps-for-wordpress/tags/2.95.10/mappress_map.php#L550
- changeset?old_path=/mappress-google-maps-for-wordpress/tags/2.96.6&new_path=/mappress-google-maps-for-wordpress/tags/2.97.1