CVE-2025-12030

4.3 MEDIUM

📋 TL;DR

The ACF to REST API WordPress plugin has an insecure direct object reference vulnerability that allows authenticated users with Contributor-level access or higher to modify Advanced Custom Fields data they shouldn't have permission to access. This includes editing posts they don't own, user accounts, comments, taxonomy terms, and global options. Any WordPress site using vulnerable versions of this plugin is affected.

💻 Affected Systems

Products:
  • ACF to REST API WordPress Plugin
Versions: All versions up to and including 3.3.4
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires plugin activation and REST API endpoints accessible. WordPress multisite installations are also affected.

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

An attacker could modify global WordPress options, compromise user accounts, deface content, or manipulate critical site configuration through unauthorized ACF field modifications.

🟠

Likely Case

Unauthorized content modification, user profile tampering, or comment manipulation by authenticated users exceeding their intended permissions.

🟢

If Mitigated

Limited to authorized users only performing actions within their proper scope, with proper capability checks preventing unauthorized object access.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access (Contributor role or higher) and knowledge of object IDs. The vulnerability is straightforward to exploit once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.3.5 or later

Vendor Advisory: https://wordpress.org/plugins/acf-to-rest-api/#developers

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'ACF to REST API' and click 'Update Now'. 4. Alternatively, download version 3.3.5+ from WordPress.org and replace the plugin files.

🔧 Temporary Workarounds

Disable REST API endpoints

all

Temporarily disable the vulnerable REST API endpoints until patching is possible

Add to wp-config.php: define('ACF_TO_REST_API_DISABLED', true);

Restrict user roles

all

Temporarily remove Contributor and Author roles from untrusted users

🧯 If You Can't Patch

  • Implement web application firewall rules to block requests to /wp-json/acf/v3/* endpoints
  • Enable detailed logging for all REST API requests and monitor for unauthorized ACF modifications

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin → Plugins → Installed Plugins for ACF to REST API version. If version is 3.3.4 or lower, you are vulnerable.

Check Version:

wp plugin list --name=acf-to-rest-api --field=version

Verify Fix Applied:

Verify plugin version is 3.3.5 or higher in WordPress admin panel. Test authenticated API calls to /wp-json/acf/v3/ endpoints with insufficient permissions should return 403 errors.

📡 Detection & Monitoring

Log Indicators:

  • HTTP 200 responses to PUT/POST requests at /wp-json/acf/v3/* from Contributor/Author roles
  • Unauthorized modification of posts, users, or options via REST API

Network Indicators:

  • REST API requests to ACF endpoints with unexpected user-agent patterns
  • Burst of PUT/POST requests to /wp-json/acf/v3/*

SIEM Query:

source="wordpress.log" AND (uri_path="/wp-json/acf/v3/*" AND (http_method="PUT" OR http_method="POST") AND user_role IN ("contributor", "author"))

🔗 References

📤 Share & Export