JustAppSec
Back to news

Missing auth checks let Subscribers tamper with Stripe webhooks in PMPro

2 min readPublished 02 May 2026Updated 02 May 2026Source: CVEProject (cvelistV5)

TL;DR - Paid Memberships Pro <= 3.6.5: three Stripe webhook management AJAX handlers have no capability checks. Any authenticated user - Subscriber or above - can delete, create, or rebuild your site's Stripe webhook configuration, breaking payment processing.

What happened

Paid Memberships Pro is a WordPress membership and subscriptions plugin that handles paid plans via Stripe. CVE-2026-4100 identifies missing authorization checks on three authenticated AJAX handlers:

  • wp_ajax_pmpro_stripe_create_webhook
  • wp_ajax_pmpro_stripe_delete_webhook
  • wp_ajax_pmpro_stripe_rebuild_webhook

All three are reachable through admin-ajax.php with nothing more than a low-privilege WordPress account. A Subscriber can call them directly. No admin session required.

The blast radius is operational. Stripe webhooks are how your site hears about renewals, cancellations, failed charges, and refunds. Tamper with that configuration and payment state goes silent - subscriptions stay active after cancellation, failed payment retries never fire, and your Stripe dashboard diverges from your membership database.

ItemDetail
Affected componentWordPress plugin Paid Memberships Pro
Affected versions<= 3.6.5
SeverityCVSS 3.1 7.1 (High)

This is not an exotic bug class. It is a standard WordPress pattern gone wrong: admin-grade actions exposed to all authenticated users because the capability check was skipped. Any site with open registration gives every free member a working exploit.

Who is impacted

  • WordPress sites running Paid Memberships Pro at versions <= 3.6.5.
  • Sites with open registration or free membership tiers - anywhere an untrusted user can obtain a Subscriber account.
  • Any deployment relying on Stripe webhooks for subscription renewals, cancellation handling, failed payment retries, or payment state synchronisation.

What to do now

  • Update Paid Memberships Pro to the latest patched release (the CVE record lists affected versions as <= 3.6.5).
  • Audit your WordPress user roster. Remove stale Subscriber accounts, test users, and any role grants that should not exist.
  • Check your Stripe dashboard directly and confirm that webhook endpoints and signing secrets match what you expect.
  • Review admin-ajax.php access logs and WAF telemetry for requests invoking:
    • pmpro_stripe_create_webhook
    • pmpro_stripe_delete_webhook
    • pmpro_stripe_rebuild_webhook
  • If you find evidence of tampering, treat it as a payments integrity incident. Scope the impact, restore the correct webhook configuration, and verify that Stripe event delivery resumed cleanly.

Additional Information


Content is AI-assisted and reviewed by our team, but issues may be missed and best practices evolve rapidly, send corrections to [email protected]. Always consult official documentation and validate key implementation decisions before making design or security choices.

Need help?Get in touch.