Skip to main content

Wholesale for WooCommerce CVE-2026-12144

| EUVDEUVD-2026-50097 HIGH
Improper Privilege Management (CWE-269)
2026-07-29 security@wordfence.com GHSA-fgx3-jj2q-3c9j
8.8
CVSS 3.1 · Vendor: wordfence
Share

Severity by source

Vendor (wordfence) PRIMARY
8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
8.8 HIGH

Remote, low-complexity; PR:L because an author-level account plus an authored wwp_requests post is required; escalation to administrator yields full C/I/A impact, scope unchanged within WordPress.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (wordfence).

CVSS VectorVendor: wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

3
Metadata Corrected
Sep 16, 2026 - 09:40 vuln.today
tag: Woocommerce added
Analysis Generated
Jul 29, 2026 - 04:30 vuln.today
CVE Published
Jul 29, 2026 - 02:16 nvd
HIGH 8.8

DescriptionCVE.org

The Wholesale for WooCommerce plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 2.0.5. This is due to the save_requests_meta() function applying only sanitize_text_field() to the user_role_set POST parameter before passing it directly to WP_User::add_role(), with no allowlist validation against permitted wholesale roles and no capability check such as current_user_can('promote_users') or current_user_can('manage_options'). This makes it possible for authenticated attackers with author-level access and above to escalate their privileges to administrator by supplying administrator as the user_role_set value in a crafted request. The function is gated only by a nonce (request_user_role_nonce) that is rendered in the meta box on the wwp_requests post edit screen; because the post type is registered with capability_type => 'post', any author-level user who has authored a wwp_requests post - such as one created via the wholesale registration form - can access this nonce and submit the role-assignment request.

AnalysisAI

Privilege escalation in the Wholesale for WooCommerce WordPress plugin (all versions up to and including 2.0.5) lets any authenticated author-level user promote their own account to administrator, giving full control of the WordPress site. The save_requests_meta() handler runs the user_role_set POST parameter through only sanitize_text_field() and hands it straight to WP_User::add_role() with no allowlist of permitted wholesale roles and no current_user_can('promote_users') or manage_options check, while the request_user_role_nonce that gates the call is reachable by any author who has authored a wwp_requests post (obtainable through the plugin's own wholesale registration form). No public exploit identified at time of analysis - EPSS is 0.37% (29th percentile) and CISA SSVC records exploitation as 'none' - but the assessed technical impact is total once the low-privilege foothold requirement is satisfied, and the CVSS 3.1 vector AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H is faithfully reflected here.

Technical ContextAI

The flaw is an instance of CWE-269 (Improper Privilege Management) in the WooCommerce wholesale-pricing plugin (slug woo-wholesale-pricing, main class file inc/class-wwp-wholesale-requests.php). WordPress roles are stored per user in the wp_capabilities usermeta key, and WP_User::add_role() appends a role without removing existing ones, so an attacker does not need to break anything - they simply add 'administrator' alongside their existing author role and the elevated capabilities are live immediately. The vulnerable code path (save_requests_meta(), around lines 274/369/397) is reached from the meta box rendered on the wwp_requests custom-post edit screen. Its only guard is the request_user_role_nonce, and because the wwp_requests post type is registered with capability_type => 'post', WordPress maps its edit capability onto the primitive 'post' capabilities (edit_posts, edit_published_posts), which every author-level user already holds. The nonce is therefore not a security boundary: an attacker with an author account can create or claim a wwp_requests post via the plugin's wholesale registration workflow, load the edit screen, harvest the nonce, and then POST user_role_set=administrator. sanitize_text_field() only strips tags, whitespace and invalid UTF-8 - it performs no semantic validation, so arbitrary role strings pass through unchecked. The missing controls are a hard allowlist of assignable wholesale roles plus a capability gate such as current_user_can('promote_users'), the standard WordPress check for changing another user's role.

RemediationAI

An upstream fix is available in the plugin's Trac changeset 3621257 (https://plugins.trac.wordpress.org/changeset?reponame=&old=3621257%40woo-wholesale-pricing&new=3621257%40woo-wholesale-pricing), which adds the missing validation and capability gate to save_requests_meta(); a released patched version number is not independently confirmed from the supplied data, so administrators should check the plugin's WordPress.org page and the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/327a155c-7a7d-494d-94d1-f7e7ee8927f0?source=cve) and update to the first release that contains that changeset rather than assuming 2.0.5 is the last affected build. If an update cannot be applied immediately, the highest-value compensating control is to deactivate the Wholesale for WooCommerce plugin - the site loses wholesale pricing and the wholesale registration workflow but the vulnerable code path disappears entirely. Where the plugin must stay live, remove the ability of untrusted roles to create or edit wwp_requests posts (for example via a roles/capabilities editor, granting that post type only to trusted shop-manager accounts) and audit which accounts currently hold author or higher with post-creation rights, since that trade-off breaks self-service wholesale registration for customers. Auditing and preventing non-admin role changes is also advisable: enable WordPress audit logging for the wp_capabilities usermeta key, and deploy a WAF rule that rejects requests containing user_role_set=administrator (or any role token outside the expected wholesale set) to the wwp_requests edit endpoint - accepting that string-matching rules are evadable via encoding and only buy time. Finally, review existing administrators for unexpected promotion, because the vulnerable operation leaves no trace beyond the role change itself.

CVE-2017-17058 HIGH POC
7.5 Nov 29

The WooCommerce plugin through 3.x for WordPress has a Directory Traversal Vulnerability via a /wp-content/plugins/wooco

CVE-2021-24212 CRITICAL POC
9.8 Apr 05

The WooCommerce Help Scout WordPress plugin before 2.9.1 (https://woocommerce.com/products/woocommerce-help-scout/) allo

CVE-2022-50972 CRITICAL POC
9.3 Jun 20

WooCommerce 7.1.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary PHP code by

CVE-2020-35627 HIGH POC
8.8 Dec 28

Ultimate WooCommerce Gift Cards 3.0.2 is affected by a file upload vulnerability in the Custom GiftCard Template that ca

CVE-2026-14962 HIGH POC
8.6 Sep 09

Unauthenticated SQL injection in the ELEX WooCommerce Request a Quote WordPress plugin (all versions before 2.4.1) allow

CVE-2023-34000 HIGH POC
7.5 Jun 14

Unauth. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no authentication required, low atta

CVE-2020-11497 HIGH POC
7.5 Aug 26

An issue was discovered in the NAB Transact extension 2.1.0 for the WooCommerce plugin for WordPress. Rated high severit

CVE-2026-74925 HIGH POC
7.2 Sep 11

Privilege escalation in MultiVendorX WordPress plugin before 5.0.16 allows authenticated vendor-role users to grant admi

CVE-2023-47777 MEDIUM POC
6.5 Nov 30

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in Automattic WooComm

CVE-2023-3508 MEDIUM POC
6.5 Jul 31

The WooCommerce Pre-Orders WordPress plugin before 2.0.3 has a flawed CSRF check when processing its tab actions, which

CVE-2023-3507 MEDIUM POC
6.5 Jul 31

The WooCommerce Pre-Orders WordPress plugin before 2.0.3 has a flawed CSRF check when canceling pre-orders, which could

CVE-2023-2179 MEDIUM POC
6.5 May 15

The WooCommerce Order Status Change Notifier WordPress plugin through 1.1.0 does not have authorisation and CSRF when up

Share

CVE-2026-12144 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy