CVE-2025-12492
📋 TL;DR
This vulnerability allows unauthenticated attackers to extract sensitive user information from WordPress sites using the Ultimate Member plugin. Attackers can enumerate predictable directory IDs or brute-force a small token space to access usernames, display names, user roles (including administrators), profile URLs, and user IDs. All WordPress sites running Ultimate Member plugin versions up to 2.11.0 are affected.
💻 Affected Systems
- Ultimate Member - User Profile, Registration, Login, Member Directory, Content Restriction & Membership Plugin for WordPress
⚠️ Manual Verification Required
This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.
Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).
🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.
- Review the CVE details at NVD
- Check vendor security advisories for your specific version
- Test if the vulnerability is exploitable in your environment
- Consider updating to the latest version as a precaution
⚠️ Risk & Real-World Impact
Worst Case
Attackers obtain complete user directory including administrator accounts, enabling targeted phishing, credential stuffing, or privilege escalation attacks.
Likely Case
Attackers harvest user data for spam campaigns, social engineering, or credential stuffing against other services using the same usernames/emails.
If Mitigated
With proper network segmentation and monitoring, impact is limited to information disclosure without direct system compromise.
🎯 Exploit Status
Exploitation requires minimal technical skill - attackers can use simple scripts to enumerate predictable tokens or brute-force the small 16^5 space.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 2.11.1 or later
Vendor Advisory: https://wordpress.org/plugins/ultimate-member/#developers
Restart Required: No
Instructions:
1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find Ultimate Member plugin. 4. Click 'Update Now' if update is available. 5. Alternatively, download version 2.11.1+ from WordPress plugin repository and manually update.
🔧 Temporary Workarounds
Disable vulnerable AJAX endpoint
allRemove or restrict access to the vulnerable ajax_get_members function by modifying plugin files or using WordPress hooks.
Add to theme's functions.php or custom plugin: add_action('wp_ajax_nopriv_um_get_members', '__return_false'); add_action('wp_ajax_um_get_members', '__return_false');
Temporary plugin deactivation
linuxDisable the Ultimate Member plugin until patched version can be installed.
wp plugin deactivate ultimate-member
🧯 If You Can't Patch
- Implement web application firewall (WAF) rules to block requests to /wp-admin/admin-ajax.php with 'action=um_get_members' parameter
- Restrict access to admin-ajax.php endpoint using IP whitelisting or authentication requirements
🔍 How to Verify
Check if Vulnerable:
Check WordPress admin panel → Plugins → Ultimate Member → Version number. If version is 2.11.0 or lower, system is vulnerable.
Check Version:
wp plugin get ultimate-member --field=version
Verify Fix Applied:
After updating, verify plugin version shows 2.11.1 or higher. Test the AJAX endpoint with unauthenticated requests to confirm it no longer returns user data.
📡 Detection & Monitoring
Log Indicators:
- Multiple POST requests to /wp-admin/admin-ajax.php with 'action=um_get_members' parameter
- Unusual volume of requests with directory_id parameter values from unauthenticated IPs
Network Indicators:
- Bursts of requests to admin-ajax.php endpoint from single IPs
- Pattern of sequential or predictable directory_id values in requests
SIEM Query:
source="web_logs" AND uri_path="/wp-admin/admin-ajax.php" AND query_string="*action=um_get_members*" AND user_agent!="*bot*" | stats count by src_ip
🔗 References
- https://plugins.trac.wordpress.org/browser/ultimate-member/tags/2.10.6/includes/class-functions.php#L41
- https://plugins.trac.wordpress.org/browser/ultimate-member/tags/2.10.6/includes/core/class-ajax-common.php#L61
- https://plugins.trac.wordpress.org/browser/ultimate-member/tags/2.10.6/includes/core/class-member-directory.php#L205
- https://plugins.trac.wordpress.org/browser/ultimate-member/tags/2.10.6/includes/core/class-member-directory.php#L2795
- https://plugins.trac.wordpress.org/browser/ultimate-member/tags/2.10.6/templates/members.php#L26
- https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&new=3421362%40ultimate-member%2Ftrunk&old=3408617%40ultimate-member%2Ftrunk&sfp_email=&sfph_mail=
- https://www.wordfence.com/threat-intel/vulnerabilities/id/61337d2d-d15a-45f2-b730-fc034eb3cd31?source=cve