MEDIUM 5.3

CVE-2026-12093: Simple Membership WordPress Plugin Authorization Bypass Allows Account Deactivation

The Simple Membership WordPress plugin contains a flaw that allows attackers to forcibly deactivate user accounts without authentication. An attacker can forge a fake payment refund notification that the plugin trusts, causing it to disable a victim's membership account. This only affects websites running version 4.7.5 or earlier that haven't manually configured Stripe webhook security—which is the default setup most sites use out of the box.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weaknesses (CWE)
CWE-862
Affected products
0 configuration(s)
Published / Modified
2026-06-18 / 2026-06-18

NVD description (verbatim)

The Simple Membership plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 4.7.5. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for unauthenticated attackers to deactivate arbitrary member accounts by forging a charge.refunded webhook event containing a victim's subscription ID, setting the target member's account_state to 'inactive' and triggering cancellation hooks, transaction-record status changes, and cancellation notification emails. This vulnerability is exploitable only on installations where no Stripe webhook signing secret has been configured, which is the default out-of-the-box state; sites that have configured the stripe-webhook-signing-secret option are routed to the properly verified HMAC path and are not affected.

10 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-12093 is an authorization bypass vulnerability in the Simple Membership plugin (≤4.7.5) stemming from inadequate webhook signature verification. The plugin processes charge.refunded events from Stripe but, in its default configuration, does not validate HMAC signatures using the stripe-webhook-signing-secret. An unauthenticated attacker can POST a forged webhook event specifying a victim's subscription ID, which the plugin accepts and acts upon by setting account_state to 'inactive', triggering cancellation hooks, transaction-record updates, and notification emails. The vulnerability is classified under CWE-862 (Missing Authorization).

Business impact

Compromised site operators face loss of membership revenue and customer trust when legitimate member accounts are arbitrarily suspended. Bulk exploitation could disrupt the customer base of e-commerce or subscription-based WordPress sites. While the impact is limited to integrity (account state modification) with no confidentiality loss, the operational disruption and customer service burden are non-trivial. Affected organizations may experience increased support tickets, disputed chargebacks, and reputational damage if members discover their accounts were maliciously deactivated.

Affected systems

Simple Membership plugin for WordPress, all versions up to and including 4.7.5. Only installations without a configured Stripe webhook signing secret are vulnerable; this is the default configuration. Sites that have explicitly set the stripe-webhook-signing-secret option in their WordPress configuration are not affected because they use the secure HMAC verification path.

Exploitability

Exploitability is straightforward: an attacker needs only to craft and send a POST request to the plugin's webhook handler with a forged charge.refunded event payload containing a valid subscription ID from the target site. No authentication, user interaction, or advanced technical knowledge is required. The network-accessible webhook endpoint accepts requests from any source by default. However, exploitation is limited to the subset of sites running vulnerable versions without webhook signature verification configured.

Remediation

Upgrade Simple Membership to the patched version that properly enforces HMAC signature verification on all incoming Stripe webhooks. As an immediate mitigation, administrators can manually configure the stripe-webhook-signing-secret option with the correct signing secret from their Stripe account settings, which routes webhook processing through the verified HMAC validation code path and prevents forged events from being accepted.

Patch guidance

Update Simple Membership to the latest version available from WordPress.org plugin repository or the vendor's official channel. Verify the update includes restored or enhanced webhook signature validation logic. After patching, test the Stripe integration to ensure webhooks are still processed correctly. If upgrading is delayed, apply the temporary mitigation by configuring stripe-webhook-signing-secret in wp-config.php or via your WordPress configuration manager, then verify the setting takes effect by checking that the HMAC verification path is invoked in the plugin logs.

Detection guidance

Monitor web server access logs for POST requests to the Simple Membership webhook endpoint (typically /wp-content/plugins/simple-membership/webhook.php or similar) from unexpected IP addresses or at unusual times. Check WordPress database transaction logs for sudden account_state changes to 'inactive' for multiple members within a short window, especially if no corresponding legitimate charge.refunded events appear in your Stripe dashboard. Enable WordPress debug logging and audit membership plugin logs for webhook processing errors or unsigned event acceptance. Correlate any member account deactivations with Stripe webhook event timestamps to identify spoofed events.

Why prioritize this

Although CVSS 5.3 (MEDIUM) reflects limited scope and no confidentiality impact, this vulnerability warrants prompt attention because: (1) it requires no authentication and zero user interaction, (2) it directly targets revenue-generating membership systems, (3) the default configuration of most installations leaves them vulnerable, and (4) exploitation is trivial to automate at scale. Organizations relying on Simple Membership for subscription revenue should prioritize remediation alongside their critical-severity issues.

Risk score, explained

The CVSS 5.3 MEDIUM score reflects a network-accessible, unauthenticated attack (AV:N/AC:L/PR:N) with no user interaction (UI:N) that impacts integrity only (I:L), without confidentiality or availability loss. While account deactivation is a meaningful business impact, the absence of data exfiltration or service unavailability keeps the severity moderate. The score appropriately reflects that this is a targeted, authorization-based issue rather than a critical system compromise. Context matters: for a membership-dependent business, the actual risk may feel higher due to customer friction and revenue impact.

Frequently asked questions

Do I need to patch if I've already configured a Stripe webhook signing secret?

No. Sites with stripe-webhook-signing-secret properly configured use the secure HMAC verification code path and are not vulnerable to this attack. Patching is still recommended for defense-in-depth and to ensure the vulnerability cannot be exploited if the configuration is accidentally removed.

How do I know if I have a Stripe webhook signing secret configured?

Check your wp-config.php or WordPress configuration for the stripe-webhook-signing-secret constant or option. If you don't see it defined, your site is using the default (no signature verification) and is vulnerable. You can retrieve the correct secret from your Stripe Dashboard under Developers > Webhooks > click the endpoint > Signing secret.

Can attackers deactivate an account without knowing the subscription ID?

The attack requires a valid subscription ID for the target member. Attackers would typically enumerate subscription IDs by registering test accounts, scraping publicly visible content, or using timing/logic attacks. However, even if IDs must be guessed, the attack is still trivial at scale and the barrier is low.

Will patching break my existing Stripe integrations?

Proper patching should only add signature verification without disrupting legitimate webhook flow. After updating, test a refund in your Stripe sandbox environment to confirm webhooks are processed. If you have custom Stripe integrations, verify they're compatible with the patched version.

This analysis is based on the official CVE description and CVSS assessment as of the publication date. Vulnerability details and patch availability should be verified against the WordPress plugin repository and Simple Membership vendor advisories before implementing any remediation. CVSS scores reflect attack surface and technical impact but do not account for organizational context, asset criticality, or business workflows; security teams should factor those into risk prioritization. No exploit code or weaponized proof-of-concept is provided. Organizations should conduct their own testing in non-production environments before deploying patches to production systems. Source: NVD (public-domain), retrieved 2026-07-27. Analysis generated by SEC.co (claude-haiku-4-5).