CVE-2025-9209

9.8 CRITICAL

📋 TL;DR

This vulnerability allows unauthenticated attackers to bypass authentication in the RestroPress WordPress plugin by exploiting exposed user tokens via the REST API. Attackers can forge JWT tokens for any user, including administrators, and gain full access to affected WordPress sites. All WordPress sites using RestroPress versions 3.0.0 through 3.1.9.2 are affected.

💻 Affected Systems

Products:
  • RestroPress - Online Food Ordering System for WordPress
Versions: 3.0.0 to 3.1.9.2
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all WordPress installations with the vulnerable plugin version enabled. No special configuration required for exploitation.

⚠️ 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.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete site takeover where attackers gain administrative access, install backdoors, steal sensitive data, deface the site, or use it for further attacks.

🟠

Likely Case

Unauthorized access to user accounts, data theft, privilege escalation, and potential malware installation.

🟢

If Mitigated

Limited impact if proper network segmentation, WAF rules, and monitoring are in place to detect and block exploitation attempts.

🌐 Internet-Facing: HIGH - WordPress sites are typically internet-facing, making them directly accessible to attackers worldwide.
🏢 Internal Only: LOW - This primarily affects internet-facing WordPress installations; internal-only deployments have reduced exposure.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires minimal technical skill as the vulnerability is in a public API endpoint and token forgery is straightforward once tokens are exposed.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.1.9.3 or later

Vendor Advisory: https://wordpress.org/plugins/restropress/

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find RestroPress and click 'Update Now'. 4. Verify the plugin version is 3.1.9.3 or higher.

🔧 Temporary Workarounds

Disable REST API User Endpoint

all

Temporarily disable the vulnerable /wp-json/wp/v2/users endpoint using a code snippet or security plugin.

Add to theme's functions.php or a custom plugin: add_filter('rest_endpoints', function($endpoints){ if (isset($endpoints['/wp/v2/users'])){ unset($endpoints['/wp/v2/users']); } return $endpoints; });

Block API Access via WAF

all

Configure web application firewall to block unauthenticated access to /wp-json/wp/v2/users endpoint.

WAF-specific rules to block: ^/wp-json/wp/v2/users$ for unauthenticated requests

🧯 If You Can't Patch

  • Disable the RestroPress plugin completely until patched.
  • Implement strict network access controls to limit who can access the WordPress admin interface.

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > RestroPress details for version number. If version is between 3.0.0 and 3.1.9.2, the site is vulnerable.

Check Version:

wp plugin list --name=restropress --field=version (if WP-CLI installed) or check WordPress admin interface

Verify Fix Applied:

Confirm RestroPress plugin version is 3.1.9.3 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Multiple 200/403 requests to /wp-json/wp/v2/users from unauthenticated users
  • Unusual user login events, especially admin logins from new IPs
  • Failed authentication attempts followed by successful logins

Network Indicators:

  • Unusual traffic patterns to REST API endpoints
  • Requests to /wp-json/wp/v2/users without authentication headers

SIEM Query:

source="web_logs" AND (url="/wp-json/wp/v2/users" AND (user="-" OR user="anonymous")) | stats count by src_ip

🔗 References

📤 Share & Export