Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister Subscriber account on target
-
DeliveryComplete attacker's own Stripe Connect OAuth
-
ExploitVisit /wp-admin/ to fire admin_init callback
-
ExecutionConnect::complete() writes attacker Stripe keys to wpum_settings
-
ImpactCustomer payments routed to attacker account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires (1) an authenticated account at Subscriber level or above on the target site, and (2) the site actively using the WP User Manager Stripe Connect integration so that wpum_settings holds live payment credentials worth hijacking. The vulnerable Connect::complete() is hooked on admin_init, which fires for any authenticated user who reaches /wp-admin/, so no admin role, nonce, or user interaction is needed beyond loading an admin page. Limiting factors: the attacker must first obtain a low-privilege account (registration must be open or otherwise obtainable), must complete their own Stripe Connect OAuth flow to have credentials to inject, and the attack is only meaningful on sites that process payments through WPUM's Stripe integration - sites not using Stripe Connect have nothing to hijack. |
| Impact | The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N, base 4.3) is internally consistent with the description: a network-reachable flaw requiring only low privileges (any authenticated Subscriber-and-above account), no user interaction, and delivering integrity-only impact (I:L) with no confidentiality or availability loss. The CWE-862 (missing authorization) mapping is accurate and matches the described lack of current_user_can()/nonce checks. No EPSS score, no CISA KEV listing, and no public exploit code are provided, so all three exploitation-probability signals are absent rather than negative. SSVC-style reasoning: exploitation status is 'none observed', the flaw is technically simple and could be automatable in principle, but its technical impact is partial (payment rerouting, not full site takeover). The headline nuance is that although CVSS rates this only Medium (4.3) on I:L, the real-world business impact can be high - diverting all future Stripe payments to an attacker's account is direct financial theft, which the abstract 'low integrity' score understates. Conversely, the gating requirements (a valid low-priv account AND the site actively using the WPUM Stripe Connect integration) keep the practical attack surface narrow. The 'Authentication Bypass' tag conflicts with the data: the attacker is already authenticated, so this is a missing-authorization/broken-access-control issue, not an auth bypass - verify tagging. |
| Exploit ScenarioDerived | An attacker registers a Subscriber account on a target WordPress site running WP User Manager with Stripe Connect enabled, completes their own Stripe Connect OAuth flow to obtain attacker-controlled credentials, then simply loads /wp-admin/ to trigger the unprotected Connect::complete() on admin_init, which overwrites the site's stored Stripe publishable key, secret key, gateway mode, and connected account ID. All subsequent customer payments are then routed to the attacker's Stripe account. No public exploit code is identified at time of analysis, and the low complexity (AC:L, no nonce/UI) makes reliable exploitation straightforward for anyone with a low-privilege account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Authenticated Stripe integration hijacking in WP User Manager (User Profile Builder & Membership) versions up to and including 2.9.18 lets any logged-in user at Subscriber level or above overwrite the site's stored Stripe credentials, causing future payments to be routed to an attacker-controlled Stripe account. The flaw is a missing authorization check (CWE-862): Connect::complete() runs on admin_init without any current_user_can() or nonce verification, so merely reaching a /wp-admin/ page is enough to trigger it. Exploitation requires a low-privilege account on the target site plus a completed attacker-side Stripe Connect OAuth flow, and it only has impact where WPUM's Stripe Connect integration is actively in use; CVSS 3.1 base is 4.3 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N), reflecting integrity-only impact, and no public exploit code was identified at time of analysis.
RemediationAI
Vendor patch status: an upstream fix is available in the wp-user-manager changeset at revision 3701837 (https://plugins.trac.wordpress.org/changeset?reponame=&old=3701837%40wp-user-manager&new=3701837%40wp-user-manager), but a separately released patched plugin version is not independently confirmed by the data provided, so administrators should check the plugin's changelog and update to the first release that includes this changeset rather than assuming 2.9.18 is safe. Until an updated release is installed, the most effective compensating control is to disable the Stripe Connect integration entirely or deactivate the WP User Manager plugin if Stripe Connect is not in active use - the trade-off being loss of the membership/Stripe payment functionality that depends on it. Because the attack requires a logged-in account, closing self-registration, disabling open membership sign-ups, or removing Subscriber accounts that should not exist raises the bar considerably, with the side effect of blocking legitimate new user onboarding. Restricting access to /wp-admin/ (for example via a reverse-proxy/IP allowlist or an auth-gating plugin) prevents the admin_init hook from firing for low-privilege sessions, though this can interfere with legitimate front-end admin-ajax workflows and normal subscriber dashboard usage. Sites that must remain live should also treat the integration as potentially compromised: rotate the Stripe API keys in the Stripe dashboard, re-verify the connected account ID in the plugin's Stripe settings, and audit wpum_settings and Stripe payment routing logs for keys or account IDs that do not match the owner's own account. Finally, if immediate patching is impossible, a short mu-plugin that returns early from Connect::complete() unless current_user_can('manage_options') is true can restore the missing authorization check, at the cost of also blocking any legitimate non-admin completion path - which is an acceptable trade since legitimate Stripe Connect configuration is normally performed by administrators.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
WP User Manager is a WordPress membership and user-profile plugin that optionally integrates with Stripe via Stripe Connect. The vulnerable code lives in includes/integrations/stripe/Connect.php, where the complete() method (referenced around lines 21, 177 and 203 in the 2.9.18 tag) is registered as a callback on the admin_init action hook. Because admin_init fires on every request to /wp-admin/ for any authenticated user - including Subscribers, who have no administrative capabilities - the callback is reachable by anyone with a valid low-privilege session. The method performs no current_user_can() capability check and no nonce validation before contacting the external WPUM connect service, retrieving Stripe credentials, and persisting them (publishable key, secret key, gateway mode, and connected Stripe account ID) into the wpum_settings option through wpum_update_option()/update_option(). This is the classic CWE-862 Missing Authorization pattern: a privileged state-changing operation is exposed on a hook that is not limited to privileged users, and the only guard absent is an authorization check. The practical consequence is an OAuth-callback-style hijack: an attacker who completes their own Stripe Connect flow can replay the callback against the victim site and silently rebind the site's payment gateway to their own Stripe account.
Know when Wordpress Plugin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
Network-reachable admin_init callback exploitable by any Subscriber (PR:L) with no nonce or user interaction (AC:L/UI:N); impact is integrity-only payment reroute (I:L), no confidentiality or availability loss.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The WP User Manager plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the Connect::complete() function in versions up to, and including, 2.9.18. The function is registered on the admin_init hook (which fires for every authenticated user that reaches /wp-admin/, including Subscribers) and performs no current_user_can() or nonce verification before fetching Stripe credentials from the external WPUM connect service and writing them (publishable key, secret key, gateway mode, and connected Stripe account ID) into the wpum_settings option via wpum_update_option()/update_option(). This makes it possible for authenticated attackers, with Subscriber-level access and above, to hijack the site's Stripe integration by completing their own Stripe Connect OAuth flow and then invoking the callback on the target site, causing all subsequent Stripe payments to be routed to the attacker's Stripe account.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
EUVD-2026-84307
GHSA-9596-j6mw-33fx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB