CVE-2025-12360
WordPress vulnerability analysis and mitigation

Overview

CVE-2025-12360 is an improper authorization vulnerability in the Better Find and Replace – AI-Powered Suggestions WordPress plugin (by CodeSolz), affecting all versions up to and including 1.7.7. Due to a missing capability check on the rtafar_ajax() function, authenticated attackers with Subscriber-level access can trigger unauthorized OpenAI API calls, potentially exhausting the site owner's API quota and incurring unexpected costs. The vulnerability was published on November 6, 2025, and assigned a CVSS v3.1 base score of 4.3 (Medium) (Wordfence, ENISA EUVD).

Technical details

The root cause is classified as CWE-285 (Improper Authorization): the rtafar_ajax() function in core/actions/RTAFAR_CustomAjax.php does not verify whether the calling user has sufficient privileges before processing AI suggestion requests. Because no capability check is enforced, any authenticated WordPress user — including those with the lowest default role (Subscriber) — can invoke the AJAX handler and cause the plugin to make calls to the OpenAI API using the site administrator's configured API key. The vulnerable code path is publicly visible in the plugin's SVN repository, and the fix was introduced in changeset 3389979 (Wordfence, WordPress SVN).

Impact

Successful exploitation allows any authenticated subscriber to abuse the site owner's OpenAI API key, leading to unauthorized quota consumption and potential financial costs. There is no direct confidentiality or availability impact (no data exposure or service disruption), and the integrity impact is limited to unauthorized API usage. The primary business risk is unexpected billing charges and API rate-limit exhaustion, which could degrade AI-powered features for legitimate users (Wordfence, ENISA EUVD).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported for this vulnerability. The EPSS score is approximately 0.025% (0.000250), indicating a very low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires a valid WordPress account (Subscriber level or above), limiting the attack surface to sites that allow open user registration or have existing low-privilege accounts (Wordfence).

Exploitation steps

  1. Reconnaissance: Identify WordPress sites running the Better Find and Replace – AI-Powered Suggestions plugin (version ≤ 1.7.7) with an OpenAI API key configured, using tools like WPScan or by inspecting page source for plugin indicators.
  2. Obtain low-privilege access: Register a Subscriber-level account on the target site (if open registration is enabled) or use existing credentials.
  3. Craft AJAX request: As an authenticated user, send a POST request to the WordPress AJAX endpoint (/wp-admin/admin-ajax.php) with the action parameter targeting the rtafar_ajax() handler, including any required nonce or parameters expected by the function.
  4. Trigger unauthorized API call: The plugin, lacking a capability check, processes the request and forwards it to the OpenAI API using the site's configured API key, consuming quota.
  5. Repeat to exhaust quota: Automate repeated requests to rapidly deplete the API quota, potentially causing service disruption for legitimate AI features or incurring significant financial charges for the site owner (Wordfence, WordPress SVN).

Indicators of compromise

  • Logs: Unusual volume of WordPress AJAX requests (POST /wp-admin/admin-ajax.php) from low-privilege user accounts, particularly with actions associated with the rtafar_ajax handler.
  • Network: Elevated outbound API calls from the WordPress server to OpenAI API endpoints (api.openai.com) at abnormal frequency or volume.
  • Application: Sudden spike in OpenAI API usage or quota exhaustion alerts from the OpenAI dashboard not correlated with legitimate editorial activity.
  • WordPress Logs: Multiple AJAX handler invocations from Subscriber-level user IDs in a short time window.

Mitigation and workarounds

Update the Better Find and Replace – AI-Powered Suggestions plugin to version 1.7.8 or later, which introduces the missing capability check in the rtafar_ajax() function. As an interim workaround, site administrators can disable the plugin until the update is applied, or restrict user registration to prevent untrusted Subscriber accounts. Additionally, rotating or revoking the OpenAI API key and issuing a new one will invalidate any key exposure that may have occurred (Wordfence, WordPress SVN).

Community reactions

Wordfence included this vulnerability in their weekly WordPress vulnerability report for November 3–9, 2025, and Sucuri referenced it in their November 2025 vulnerability patch roundup (Wordfence Blog, Sucuri Blog). No significant independent researcher commentary or broader media coverage has been identified for this low-severity issue.

Additional resources


SourceThis report was generated using AI

Related WordPress vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-15413CRITICAL10
  • link-factory
NoNoAug 13, 2026
CVE-2026-18146HIGH7.2
  • fluentform
NoYesAug 13, 2026
CVE-2026-3639MEDIUM6.4
  • password-protect-page
NoNoAug 13, 2026
CVE-2026-14332MEDIUM5.4
  • ecwid-shopping-cart
NoYesAug 13, 2026
CVE-2026-3835MEDIUM5.3
  • prevent-direct-access
NoYesAug 13, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management