CVE-2025-14844
📋 TL;DR
This vulnerability allows unauthenticated attackers to access Stripe SetupIntent client_secret values for any membership in the Restrict Content WordPress plugin. Attackers can potentially intercept payment setup data, though they cannot directly access payment cards. All WordPress sites using vulnerable plugin versions are affected.
💻 Affected Systems
- Membership Plugin – Restrict Content for WordPress
📦 What is this software?
⚠️ Risk & Real-World Impact
Worst Case
Attackers could intercept payment setup flows, potentially redirecting payments or accessing sensitive Stripe transaction data for all memberships.
Likely Case
Attackers leak Stripe SetupIntent secrets, enabling them to monitor or interfere with payment setup processes for compromised memberships.
If Mitigated
With proper authentication checks, only authorized users can access SetupIntent data, limiting exposure to legitimate payment flows.
🎯 Exploit Status
Exploitation requires crafting requests to the vulnerable function without authentication.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 3.2.17
Vendor Advisory: https://plugins.trac.wordpress.org/changeset/3438168/restrict-content/tags/3.2.17/core/includes/gateways/stripe/functions.php
Restart Required: No
Instructions:
1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'Restrict Content' plugin. 4. Click 'Update Now' if available, or manually update to version 3.2.17+. 5. Verify plugin is active and functioning.
🔧 Temporary Workarounds
Disable vulnerable function via code modification
allAdd authentication checks to the rcp_stripe_create_setup_intent_for_saved_card function
Edit core/includes/gateways/stripe/functions.php lines 848-987 to add capability checks
🧯 If You Can't Patch
- Temporarily disable the Restrict Content plugin if not essential
- Implement web application firewall rules to block unauthenticated requests to the vulnerable endpoint
🔍 How to Verify
Check if Vulnerable:
Check WordPress admin → Plugins → Installed Plugins for Restrict Content version ≤3.2.16
Check Version:
wp plugin list --name='restrict-content' --field=version
Verify Fix Applied:
Confirm plugin version is 3.2.17 or higher in WordPress admin
📡 Detection & Monitoring
Log Indicators:
- Unusual unauthenticated POST requests to WordPress admin-ajax.php with 'rcp_stripe_create_setup_intent_for_saved_card' action
Network Indicators:
- HTTP requests to /wp-admin/admin-ajax.php with action parameter containing 'rcp_stripe' from unauthenticated sources
SIEM Query:
source="wordpress.log" AND "admin-ajax.php" AND "rcp_stripe_create_setup_intent_for_saved_card" AND (user="-" OR user="unauthenticated")
🔗 References
- https://cwe.mitre.org/data/definitions/639.html
- https://docs.stripe.com/api/setup_intents/object
- https://plugins.trac.wordpress.org/browser/restrict-content/tags/3.2.16/core/includes/gateways/stripe/functions.php#L848
- https://plugins.trac.wordpress.org/browser/restrict-content/tags/3.2.16/core/includes/gateways/stripe/functions.php#L987
- https://plugins.trac.wordpress.org/changeset/3438168/restrict-content/tags/3.2.17/core/includes/gateways/stripe/functions.php
- https://www.wordfence.com/threat-intel/vulnerabilities/id/0c28545d-c7cd-469f-bccf-90e8b52fd4e7?source=cve