| Plugin Name | FunnelKit Automations |
|---|---|
| Type of Vulnerability | Authorization bypass |
| CVE Number | CVE-2025-12469 |
| Urgency | Low |
| CVE Publish Date | 2025-11-04 |
| Source URL | CVE-2025-12469 |
FunnelKit Automations (≤ 3.6.4.1) — Missing Authorization Allows Authenticated Subscriber Accounts to Send Arbitrary Email (CVE-2025-12469)
Date: 2025-11-05 | Author: Hong Kong Security Expert
Categories: WordPress Security, Vulnerabilities, WAF
Executive summary
On 5 November 2025 a broken access control vulnerability (CVE-2025-12469) affecting FunnelKit Automations (and some marketing automation suites that bundle it) was published. Versions ≤ 3.6.4.1 permit an authenticated user with the Subscriber role — or other similarly low-privileged roles common on many WordPress sites — to trigger the plugin’s email-sending functionality and send arbitrary emails. The plugin author released version 3.6.4.2 to address the issue.
Although the CVSS base score is 4.3 (low), the operational impact depends on context. An attacker who can create or control a Subscriber account can send phishing, spam, or emails that impersonate administrators to external parties — harming deliverability, reputation, and enabling follow-on attacks.
Read the technical analysis and immediate actions below, and apply the patch without delay.
What happened (brief)
- Vulnerability type: Broken Access Control (missing authorization)
- Affected software: FunnelKit Automations plugin (marketing automation / CRM add-on)
- Vulnerable versions: ≤ 3.6.4.1
- Fixed in: 3.6.4.2
- CVE: CVE-2025-12469
- Reported/credited to: security researcher (credited in public advisories)
- Required privilege: Subscriber (authenticated low-privileged user)
- Severity / patch priority: Low (CVSS 4.3), but operational risk can be higher
The root cause is a missing capability or nonce check on an endpoint or action within the plugin that performs email sending. Without sufficient validation, low-privileged accounts could invoke that functionality.
Why you should care (threat scenarios)
Even vulnerabilities labelled “low” can be consequential in practice. Relevant scenarios include:
- Phishing and credential harvesting: Attackers can send emails impersonating the website or administrators, directing recipients to phishing pages.
- Reputation and deliverability damage: Abuse from your domain can lead to spam classification and reduced deliverability for legitimate mail.
- Business Email Compromise (BEC) facilitation: Messages from a trusted domain can be used to social-engineer partner organisations.
- Spam blacklisting: Your sending IP or domain may be placed on blocklists, requiring remediation.
- Chained attacks: This capability can be combined with other compromises for broader impact.
Because many sites allow user registration, creating a Subscriber account on a target site can be straightforward for attackers.
Technical analysis (what is likely happening)
This is a standard broken access control issue: the plugin exposes an action (AJAX, REST route, or form handler) that composes and sends email but does not properly verify the caller’s privileges or a nonce.
Typical missing checks include:
- Absence of a proper capability check (for example, not calling current_user_can() with an appropriate capability).
- No wp_verify_nonce() or equivalent request validation.
- REST endpoints registered without a strict permission_callback, or with an overly permissive callback.
Consequently, an authenticated Subscriber can POST parameters that control recipient, subject, and body; the plugin then uses the site mailer (wp_mail or configured SMTP) to send messages.
Common entry points are:
- AJAX endpoints via admin-ajax.php handlers
- REST API routes (registered by register_rest_route)
- Front-end pages that accept POST data and call internal mail functions without server-side checks
Do not attempt to probe live sites for exploitation code. The correct response is to patch immediately and apply mitigations where needed.
Exploitation workflow (attacker view)
- Create or obtain an authenticated Subscriber account on the target site.
- Discover the vulnerable endpoint (via the plugin UI, JS network calls, or inspection).
- Craft a POST request with parameters controlling recipient, subject, or body. With missing authorization checks the request is processed.
- The site mailer sends the email using the site domain and configured transport.
- Repeat or scale to send many messages.
Attackers can automate this process to send to lists of addresses, vary content, and obfuscate payload links. Rate-limiting and monitoring are critical to detect abuse.
Immediate actions for site owners (0–24 hours)
- Update the plugin to 3.6.4.2 or later. This is the single most important step — apply the update on every affected site.
- If you cannot update immediately, apply temporary mitigations:
- Disable user registration if it is not required (Settings → General → Membership).
- Deactivate or remove the FunnelKit Automations plugin on critical sites until patched.
- Review and revoke suspicious Subscriber accounts; reset passwords for recently created accounts.
- Monitor outgoing mail queues and SMTP activity for sudden spikes.
- Check mail provider and domain reputation for early signs of deliverability issues.
If you manage many sites and cannot patch them all immediately, consider deploying targeted runtime rules (WAF or hosting-level rule sets) as a temporary measure until patches are applied.
Temporary runtime rules and WAF guidance (vendor-neutral)
Below are conceptual, vendor-neutral rules that hosting providers or security teams can implement to reduce risk until the patch is applied. Adapt these to your environment and test before wide deployment.
Conceptual rule examples
- Block suspect AJAX calls
- Conditions:
- Request method = POST
- Request URL contains /wp-admin/admin-ajax.php
- POST parameter action matches known mailer actions or request body contains parameters such as to=, subject=, or body=
- Request originates from an authenticated low-privilege session (session cookie indicates Subscriber)
- Action: block or challenge (403, CAPTCHA, or equivalent)
- Conditions:
- Block REST route misuse
- Conditions:
- Request path matches plugin-specific REST routes (e.g., /wp-json/funnelkit/*)
- Missing or invalid nonce / permission header
- Action: block
- Conditions:
- Rate-limit by user
- Conditions: more than N email-sending requests from a single account within M minutes
- Action: throttle, block, and alert
- Nonce / referer enforcement
- Block requests that lack expected WordPress nonces or valid Referer headers for actions that send email
Do not use these rules as an exact copy-paste; tailor them to your logs and application behaviour.
Detecting exploitation — indicators to search for
Look for these signs in logs and systems:
- Sudden increase in outgoing messages in mail logs (postfix, exim, mail.log) originating from the web server.
- HTTP POST requests to admin-ajax.php or REST routes with parameters referencing email, send, to, recipients, subject, or body.
- Newly created Subscriber accounts or a spike in registrations.
- Unusual scheduled tasks (wp-cron) invoking plugin actions.
- Outbound email provider alerts about abuse or blacklisting.
Useful log search examples:
grep "admin-ajax.php" /var/log/apache2/access.log | grep -i "action="
tail -n 1000 /var/log/mail.log | grep "postfix" | grep "from=
If you suspect exploitation, preserve logs immediately and proceed with incident response steps below.
Incident response — if you were exploited
- Patch immediately: Update FunnelKit Automations to 3.6.4.2 or later; if you cannot, deactivate the plugin.
- Stop further email sending: Temporarily disable outbound emailing (switch to maintenance gateway, restrict SMTP credentials, or disable the plugin).
- Remove attacker access: Revoke suspicious accounts and enforce password resets.
- Contain and scan: Run full server and site scans for web shells, modified files, and unexpected crons.
- Preserve evidence: Collect web server logs, mail logs, and WordPress debug logs for the relevant time window.
- Remediate deliverability: Check blocklists and follow provider procedures to delist if needed.
- Notify impacted parties: If phishing or fraud was sent, notify affected customers or partners with clear guidance.
- Post-incident hardening: Rotate SMTP/API credentials, review installed plugins and themes, and enable strong authentication for administrators.
Speed matters: the longer unauthorised mail-sending continues, the greater the damage to reputation and the harder the recovery.
Hardening recommendations (prevent similar problems)
- Least privilege: Limit user capabilities. Avoid granting elevated permissions to accounts that do not need them.
- Restrict plugin functionality by role: Ensure plugins with mail or administrative features require appropriate capabilities.
- Disable anonymous registration: If not required, disable registration at Settings → General.
- Enforce strong authentication: Use strong passwords and two-factor authentication for privileged users.
- Use authenticated SMTP and proper DNS records: DKIM, SPF, and DMARC help with deliverability and forensic analysis.
- Monitor outgoing email telemetry: Alert on spikes in outbound mail volume.
- Keep software updated: Apply updates promptly and test on staging before wide rollout.
- Perform code reviews: For custom plugins, ensure server-side checks such as current_user_can() and wp_verify_nonce() are present for privileged actions.
- Runtime protections: Use hosting-level controls or a WAF to apply virtual patches, rate limits, and role-aware rules when immediate patching is delayed.
How to validate the fix
- Upgrade FunnelKit Automations to 3.6.4.2 or later.
- On a staging or test environment, attempt the previously possible action with a Subscriber account and confirm the request is denied with a 403 or permission error.
- Check logs to ensure no outbound messages are generated by Subscriber-level tests.
- If runtime rules were applied, verify they are no longer required once the plugin is patched and that they do not block legitimate admin activity.
If you cannot test in production, ask your hosting provider or an independent security consultant to validate the remediation.
Why this class of bug keeps happening
Marketing and automation plugins often mix administrative and user-facing functionality. Rapid feature development or insufficient security review can lead to missing server-side permission checks. Common coding mistakes include:
- Lack of current_user_can() checks, or use of overly broad checks.
- Missing or improperly used nonces for AJAX/REST endpoints.
- Exposing admin hooks to front-end contexts without adequate validation.
- Relying on client-side checks (JavaScript) instead of server-side enforcement.
Prevention requires developer training, code review, and automated checks that verify permission enforcement on all code paths that perform side-effect actions (sending mail, changing roles, deleting content).
Checklist — Immediate steps (actionable)
- ☐ Update FunnelKit Automations to 3.6.4.2 or later on all sites.
- ☐ Review user registration settings; disable if not required.
- ☐ Scan mail logs for suspicious outgoing activity.
- ☐ Revoke or review recently created Subscriber accounts.
- ☐ If you manage many sites, deploy hosting-level or WAF rules to virtual-patch the vulnerability until updates are applied.
- ☐ Check domain/IP reputation and follow delisting procedures if blacklisted.
- ☐ Harden plugin settings to restrict email-sending functions to appropriate roles.
- ☐ Enable monitoring and alerts for outbound mail spikes.
Disclosure and patch priority
The vulnerability was responsibly disclosed and fixed by the vendor. The CVSS score reflects the requirement for an authenticated low-privileged account; however, because many sites allow such accounts, operational priority should be elevated beyond the numeric score.
Closing remarks — advice from a Hong Kong security perspective
From a Hong Kong operations standpoint — where many organisations rely on trusted domains for customer communications — protecting your mail channel is critical. Even a “low severity” bug that enables sending from your domain can rapidly erode trust and cause business disruption.
Patch promptly, apply short-term runtime controls if patching will be delayed, review account registration flows, and keep a close eye on outbound mail telemetry. If you require help, engage a reputable security consultant or your hosting provider for assistance with patch deployment, log analysis, and containment.
Stay vigilant.
— Hong Kong Security Expert