Forminator Access Control Vulnerability Advisory//Published on 2026-05-05//CVE-2026-2729

WP-FIREWALL SECURITY TEAM

Forminator CVE-2026-2729 Vulnerability

Plugin Name Forminator
Type of Vulnerability Access Control Vulnerability
CVE Number CVE-2026-2729
Urgency Low
CVE Publish Date 2026-05-05
Source URL CVE-2026-2729

Broken Access Control in Forminator (≤ 1.52.0): What WordPress Site Owners Must Do Now

Date: 4 May, 2026
Author: WP-Firewall Security Team

A recently disclosed vulnerability affecting the Forminator WordPress plugin (versions up to and including 1.52.0) allows unauthenticated attackers to interact with Stripe PaymentIntents in a way that can enable reuse of PaymentIntent objects or “underpayment bypass” scenarios. The issue is classified as Broken Access Control (OWASP A1) and has been assigned CVE‑2026‑2729 with a CVSS score reported at 5.3.

As a WordPress Web Application Firewall (WAF) vendor and security practitioner, we want to give site owners practical, usable guidance: what this vulnerability means, how attackers may abuse it, how you can quickly protect your site (even if you cannot immediately update), and what longer term remediation and monitoring steps you should take. This guide is written for site owners, developers, and hosters in plain, actionable language.


Executive summary (the short version)

  • A broken access control bug in Forminator <= 1.52.0 can allow unauthenticated actors to submit requests that reuse Stripe PaymentIntent IDs or manipulate the payment flow so an order is recorded despite an underpayment.
  • Affected sites: those using Forminator for payments (Stripe integration) and running plugin version <= 1.52.0.
  • Immediate remediation: update Forminator to 1.52.1 or later as soon as possible.
  • If you cannot update immediately: deploy WAF rules (virtual patching), limit access to the affected endpoints, enable rate limiting, add server-side validation of amounts and PaymentIntent ownership, and monitor logs for suspicious PaymentIntent reuse patterns.
  • Additional: rotate Stripe API keys if you detect suspicious activity; verify webhooks; reconcile transactions and refund/charge where appropriate.

What is the vulnerability (high-level)

This vulnerability is a Broken Access Control issue in Forminator’s payment handling logic for Stripe. In essence:

  • The plugin accepts requests that interact with a Stripe PaymentIntent without performing adequate authorization checks.
  • An unauthenticated user may be able to reuse an existing PaymentIntent or manipulate the payment confirmation flow so that an order is created even when the paid amount does not match the expected amount (underpayment).
  • Because payments are financial by nature, even a relatively low technical severity can result in real-world financial loss or operational disruption.

Broken access control problems frequently come from missing capability checks, absent nonce verification, or endpoints erroneously exposed to unauthenticated requests. In payment integrations, the server must always validate that a PaymentIntent used for a particular order belongs to that order and that amounts match expectations.


Why this matters: attack scenarios and impact

Potential attacker actions enabled by this flaw could include:

  • Reusing a previously created PaymentIntent that has a lower amount, applying it to a new order, and thereby completing checkout with less money than required.
  • Submitting crafted requests that simulate a successful payment confirmation to the site without the site verifying ownership and amount of the PaymentIntent.
  • Mass exploitation to cause revenue loss or enable fraud on sites that rely on Forminator’s payment handling.

Impact to site owners can range from isolated underpayments (chargebacks, refunds, reconciliation headaches) to more systemic fraud. Even if monetary loss is limited, there’s reputational damage, support costs, and potential compliance issues (depending on your business).


Who’s affected?

  • Sites using Forminator for payments (Stripe integration).
  • Only plugin versions <= 1.52.0 are affected; plugin version 1.52.1 contains the patch.
  • Sites that do not use Forminator payment features are not directly affected by this specific issue — though they should still keep plugins updated.

Immediate steps (if you run Forminator)

  1. Update immediately
    – The single most important action: update the Forminator plugin to version 1.52.1 or later. That update contains a fix for this broken access control issue.
  2. If you cannot update right away, apply temporary mitigations (see next section for WAF/virtual patch recommendations):
    – Put the site into maintenance mode (if feasible) while you coordinate the update.
    – Disable Forminator payment forms until you can update.
    – Add rate limiting or request throttling to payment endpoints.
    – Closely monitor logs for suspicious payment behavior (see detection section).
  3. Reconcile recent payments
    – Audit transactions and compare recorded orders to Stripe charges. Look for mismatches, partial payments, or repeated reuse of the same PaymentIntent across different orders.
  4. Review Stripe configuration
    – Verify webhook signing is enabled and validated on your server.
    – Confirm PaymentIntent creation is happening server-side and that your server validates the PaymentIntent ID against the order before marking orders paid.
  5. Consider rotating Stripe keys only if you detect evidence of compromise affecting your platform credentials.

WP-Firewall recommended virtual patching and WAF rules

If you cannot update immediately, WP-Firewall can provide rapid virtual patching to reduce exploitation risk. Virtual patching blocks malicious traffic at the WAF layer so attacks fail before they reach the vulnerable code.

Below are practical rule concepts you can implement in your WAF (generic, adaptable):

  1. Block unauthenticated access to payment-confirmation endpoints
    • Many WordPress plugins expose endpoints via admin-ajax.php or the REST API. Block anonymous POSTs to endpoints that should require authentication.
    • Example pattern (conceptual): Disallow unauthenticated POST requests where URI matches /wp-json/forminator/*/payment* or requests with action parameters tied to payment confirmation. (Adapt to concrete endpoint names on your site.)
  2. Enforce a server-side validation policy for PaymentIntent usage
    • Block requests that include a PaymentIntent ID that has been used for a different order/session (replay protection).
    • Detect repeated use of the same PaymentIntent across different session identifiers — flag and block such traffic.
  3. Reject requests that attempt to change order amount fields on the client side
    • Many underpayment attacks involve the client supplying an amount. Block or flag POSTs where the client-submitted price differs from the server-calculated price.
  4. Rate limit requests by IP and by PaymentIntent ID
    • Excessive attempts to confirm payments from one IP or for a single PaymentIntent indicate abuse.
  5. Challenge suspicious requests
    • For borderline cases, present an extra verification step (Captcha/JavaScript challenge) to prohibit automated abuse.
  6. Sample ModSecurity-style rule (conceptual)
    • Note: Do not copy verbatim; adapt to your environment:
    • Deny POST requests to endpoints matching the Forminator payment route if request lacks a valid authenticated cookie or valid nonce token.
    • Monitor for repeated attempts that include a PaymentIntent ID already seen in logs mapped to a different user/session.

WP-Firewall can deploy highly targeted rules for you. The aim of virtual patching is not to replace the plugin update — it’s to buy time safely.


How to detect exploitation attempts — what to look for in logs

When checking server logs, look for these indicators:

  • Repeated POST requests to Forminator payment endpoints that do not have an authenticated session cookie or valid nonce.
  • Multiple orders referencing the same PaymentIntent ID or the same stripe payment identifier across different users or sessions.
  • Mismatched amounts: the order recorded in WordPress shows a different amount than the corresponding Stripe PaymentIntent or charge.
  • High frequency of requests from the same IP addresses shortly before an order appears as “paid”.
  • Requests with missing or malformed webhook signatures (if your webhook processing endpoint is exposed).

Practical detection steps:

  • Export Stripe logs for the last 7–30 days and compare PaymentIntent IDs against orders recorded in WordPress.
  • Search your webserver logs for common Forminator routes and payment-related parameters (e.g., payment_intent, intent, stripe_*). Flag any cases where the same payment_intent appears in multiple orders.
  • In WordPress, search orders/meta for payment_intent IDs that appear more than once.

If you find suspicious activity, collect logs (webserver, plugin logs, Stripe logs) and preserve them before making changes that overwrite or rotate logs.


Incident response checklist (if you suspect exploitation)

  1. Patch the plugin to 1.52.1 (if not done already).
  2. Take forensic snapshots: export logs (web, php-fpm, WAF logs), database backup, and plugin files.
  3. Rotate Stripe API keys only if there’s evidence of API key leakage or misuse. Do this carefully — rotating keys will require reconfiguring your live payment flow and webhooks.
  4. Reconcile all recent transactions: compare orders vs Stripe charges; determine which transactions were legitimate and which were potentially fraudulent or underpaid.
  5. For affected transactions: contact customers, issue refunds when appropriate, and work with your payment processor for chargebacks or disputes.
  6. Strengthen webhooks: make sure webhook signing is enabled and always validated.
  7. Review user accounts and plugins for additional suspicious activity.
  8. If you cannot conclusively determine impact, consider temporarily disabling Forminator payment forms until you complete your investigation.
  9. Notify affected stakeholders (finance, legal, your host) and consider a short communication to customers if financial data was involved.

Stripe-specific technical safeguards (best practices)

  • Always create and confirm PaymentIntents server-side. Never trust client-supplied parameters for amount, currency, or order mapping.
  • Use idempotency keys for creating PaymentIntents to avoid duplicate charges and to detect replayed operations.
  • Confirm on the server that the PaymentIntent’s amount and currency match your expected order amount before marking an order as paid.
  • Use Stripe webhooks, and always verify the webhook signature to ensure the webhook truly originated from Stripe.
  • Map PaymentIntents to your internal order IDs and ensure that a PaymentIntent cannot be used for multiple orders.
  • Implement robust reconciliation (match Stripe charges to orders) and automated alerts for mismatches.

Long-term hardening: developer and operational recommendations

  • Principle of least privilege: ensure plugin endpoints require the minimal privilege necessary and make all payment confirmation flows require server-side checks.
  • Nonces and capability checks: enforce WordPress nonces and capability checks on any admin-ajax.php or REST API endpoints dealing with payments.
  • Keep the tech stack patched: update WordPress core, PHP, plugins, and themes regularly.
  • Isolate critical administrative actions to be reachable only over secure channels (e.g., restrict wp-admin to known IPs where feasible).
  • Use a reputable WAF and intrusion detection system to block known abuse patterns and to provide virtual patching.
  • Implement monitoring and alerting: automated alerts for anomalies (e.g., PaymentIntent reuse, price mismatches, mass failed attempts).
  • Test your backup and restore process; ensure backups are available and can be used to restore a site to a known-good state if needed.

How WP-Firewall protects you (and what our service can do for this issue)

At WP-Firewall we provide layered protections that reduce risk from this type of flaw:

  • Managed WAF rules: our team can rapidly implement targeted rules to block unauthenticated access to payment confirmation endpoints and patterns associated with PaymentIntent reuse.
  • Virtual patching: we can deploy temporary mitigations at the edge so exploit attempts are blocked before ever reaching the vulnerable plugin.
  • Rate limiting and bot mitigation: we throttle suspicious traffic and challenge automated tools to prevent mass abuse.
  • Monitoring and alerting: our platform watches for repeated PaymentIntent reuse patterns, anomalies in checkout flows, and unusual volumes of aborted transactions.
  • Incident triage: our analysts can advise on whether to rotate keys, how to reconcile transactions, and what evidence to collect for a forensic review.

If you use WP-Firewall, we can push a rule set specifically aimed at the Forminator Stripe PaymentIntent flow patterns, detect attempts, and give you steps to safely update and remediate.


Sample detection signatures and rule ideas (for your devs or WAF team)

Below are non-exhaustive detection heuristics your engineering team or WAF vendor can use. They are conceptual and should be adjusted to your site’s exact endpoints and parameter names.

  • Alert when a PaymentIntent ID appears in more than one order within a short time window (e.g., 24 hours).
  • Block POSTs to payment confirmation endpoints that do not include a valid authenticated session cookie, WordPress nonce, or verified webhook signature.
  • Flag requests where client-submitted amount != server-calculated product price for the same cart/order ID.
  • Rate-limit the number of distinct PaymentIntent confirmation attempts per IP or per PaymentIntent ID.
  • Flag orders where status is “paid” in WordPress but Stripe shows no corresponding charge or shows a different amount.

These heuristics help you detect and block suspicious behavior even when you are still in the process of applying the plugin update.


Practical developer fixes (if you maintain custom code or forms)

If you developed custom code or have modified plugin behaviors, ensure:

  • Server-side amount validation: compute the total amount on the server using authoritative data and compare to any client-supplied amount before accepting payment complete status.
  • PaymentIntent ownership check: store the PaymentIntent ID when you create it and verify that a subsequent confirmation request includes the same order/session identifier; reject other uses.
  • Webhook verification: validate Stripe webhook signatures using Stripe’s library and the webhook secret.
  • Avoid relying solely on client-side signals (hidden fields, JS variables) for payment truth.

If you are not a developer, ask your web developer or host to implement these checks quickly.


Communication and customer experience considerations

If you find evidence of exploit or underpayment:

  • Be transparent with internal stakeholders (finance, support, legal).
  • Communicate with impacted customers on a case-by-case basis and offer remediation (refunds, apologies).
  • Minimize public statements until you have facts, but be ready to respond promptly and professionally if customers ask.

Frequently asked questions

Q: Is this vulnerability actively being exploited?
A: At the time of disclosure, there is no definitive public evidence that the vulnerability is in mass exploitation, but broken access control in payment flows is the kind of issue attackers can and do exploit rapidly. You should assume risk until patched.

Q: My site doesn’t use Stripe or Forminator payments — do I need to worry?
A: If you do not use Forminator’s payment features or do not have Forminator installed/activated, you are not affected by this specific issue. Still, maintaining up-to-date plugins and WAF protection is always recommended.

Q: Will the WAF fix replace the plugin update?
A: No. Virtual patching (WAF) protects you while you implement the true fix. Always update the plugin to the patched version as soon as possible.


Get immediate basic protection — Try WP‑Firewall Free

Exclusive offer for site owners seeking fast, reliable protection: try WP‑Firewall’s Basic (Free) plan to immediately reduce your exposure.

Title: Simple, Immediate Protection — Start with WP‑Firewall Free

Our Basic (Free) plan gives you essential protections right away: managed firewall, unlimited bandwidth, WAF, malware scanning, and mitigation for OWASP Top 10 risks. If you’re concerned about this Forminator issue and need a quick safeguard while updating plugins, the free plan is an easy step to get protection in place immediately. For more features, our Standard and Pro plans add automatic malware removal, IP blacklisting/whitelisting, monthly security reports, auto virtual patching, and premium add-ons for managed security services.

Sign up or learn more: https://my.wp-firewall.com/buy/wp-firewall-free-plan/


Checklist: a practical day-0 through day-7 plan

Day 0 (now)

  • Update Forminator to v1.52.1 or later.
  • If update not possible: disable Forminator payment forms and/or enable maintenance mode.
  • Enable WP-Firewall protections or equivalent edge rules.

Day 1

  • Reconcile Stripe transactions and orders for the last 30 days. Look for mismatches and reused PaymentIntent IDs.
  • Export logs (web, PHP, WAF) and start a filtered search for relevant payment endpoints.

Day 2–3

  • Deploy additional WAF rules (virtual patching), enable rate limits on payment endpoints, and enforce webhook signature verification.
  • Rotate API keys if there’s evidence of key compromise.

Day 4–7

  • Review custom integrations/code for server-side validation of amounts and PaymentIntent ownership.
  • Hardening: enable two-factor authentication for admin users, restrict admin access where possible, and run a malware scan.
  • Prepare a lessons-learned and update schedule to ensure plugins are kept patched.

Final words — don’t wait to act

Payment-related vulnerabilities are sensitive and can lead to direct financial loss. While a CVSS score and classification help prioritize, the business impact is specific to each site. The single fastest, most reliable step is to update Forminator to 1.52.1 or later. If that’s not immediately feasible, deploy WAF virtual patching, harden Stripe integrations, and reconcile transactions now.

If you’d like assistance, WP‑Firewall’s team can rapidly deploy protective rules, monitor exploitation indicators, and help with triage and recovery. We specialize in protecting WordPress payment flows and can help you keep your site live and secure while you patch.

Stay safe — act fast, update, and monitor.

— WP‑Firewall Security Team


wordpress security update banner

Receive WP Security Weekly for Free 👋
Signup Now
!!

Sign up to receive WordPress Security Update in your inbox, every week.

We don’t spam! Read our privacy policy for more info.