Description
The Subscriptions for WooCommerce plugin for WordPress is vulnerable to Privilege Escalation in versions up to, and including, 2.0.0. This is due to the `save_meta_boxes()` function persisting the `_wps_plan_user_role` membership plan meta from `$_POST` without an allowlist that excludes privileged roles — the only validations applied, `sanitize_key()` and `wp_roles()->is_role()`, both accept `'administrator'` as a valid value, and the UI's `disabled` attribute on the role dropdown is a client-side-only control trivially bypassed via DevTools or a direct POST request; additionally, because the `wps_membership_plan` custom post type is registered with `capability_type => 'post'`, any user who can edit posts satisfies the `current_user_can('edit_post', $post_id)` guard in `save_meta_boxes()`. This makes it possible for authenticated attackers, with Contributor-level access and above, to escalate their privileges to Administrator by storing `'administrator'` as the role granted on membership acquisition, which the Pro companion plugin then applies via `add_role()` during membership lifecycle events. Successful exploitation requires the Subscriptions for WooCommerce Pro companion plugin to be active, as it is the component that reads the stored `_wps_plan_user_role` meta via `get_post_meta()` and calls `add_role()` to apply the role during membership lifecycle events.
Published: 2026-08-01
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In Subscriptions for WooCommerce versions up to 2.0.0, the function that saves membership plan meta records the role assigned for members without applying a strict allowlist. The only checks performed are sanitization and a role existence test, both of which permit the value "administrator". An attacker with at least Contributor‑level access can bypass the client‑side disabled control on the role selector, submit a POST request setting the _wps_plan_user_role meta to "administrator", and the Pro companion plugin will later assign this role to the user when the membership lifecycle event fires. This allows an authenticated user to elevate their privileges to Administrator. The flaw hinges on the standard WordPress capability that permits any user who can edit posts to trigger the meta‑saving routine, because the custom post type is registered with a generic capability type. Therefore the exploitation path is direct and does not require additional privilege assumptions beyond the existing Contributor role. The vulnerability is a CWE‑269 Insecure Permission Assignment. While the exploit requires a compatible Pro plugin to process the stored meta, the impact is complete privilege escalation, giving the attacker full site control.

Affected Systems

The affected product is the Subscriptions for WooCommerce WordPress plugin, versions 2.0.0 and earlier, together with its Pro companion plugin. Sites running either plugin combination and possessing users with Contributor or higher roles are susceptible. The vulnerability is not present in plugin versions beyond 2.0.0.

Risk and Exploitability

The vulnerability has a CVSS score of 8.8, indicating high severity, and an EPSS score of less than 1%, suggesting low current exploitation likelihood. It is not listed in the CISA KEV catalog. Attackers need only an authenticated Contributor or higher account and the Pro plugin active; the attack vector is purely internal (authenticated user). Because many WordPress sites assign Contributor roles, the potential attack surface is large, so the risk of a successful privilege escalation remains significant if the plugin is vulnerable.

Generated by OpenCVE AI on August 2, 2026 at 03:47 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the latest update of Subscriptions for WooCommerce that removes the unchecked role assignment logic.
  • If an update is not yet available, temporarily disable or uninstall the Subscriptions for WooCommerce Pro companion plugin to prevent the add_role() call from executing.
  • Revoke the edit_post capability from contributors or restrict the post types they can edit to prevent them from triggering the vulnerable meta‑save routine.
  • Audit existing membership plan meta entries and delete any _wps_plan_user_role values set to "administrator" to eliminate already‑assigned elevated privileges.

Generated by OpenCVE AI on August 2, 2026 at 03:47 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 03 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 01 Aug 2026 04:45:00 +0000

Type Values Removed Values Added
First Time appeared Wordpress
Wordpress wordpress
Wpswings
Wpswings subscriptions For Woocommerce
Vendors & Products Wordpress
Wordpress wordpress
Wpswings
Wpswings subscriptions For Woocommerce

Sat, 01 Aug 2026 02:30:00 +0000

Type Values Removed Values Added
Description The Subscriptions for WooCommerce plugin for WordPress is vulnerable to Privilege Escalation in versions up to, and including, 2.0.0. This is due to the `save_meta_boxes()` function persisting the `_wps_plan_user_role` membership plan meta from `$_POST` without an allowlist that excludes privileged roles — the only validations applied, `sanitize_key()` and `wp_roles()->is_role()`, both accept `'administrator'` as a valid value, and the UI's `disabled` attribute on the role dropdown is a client-side-only control trivially bypassed via DevTools or a direct POST request; additionally, because the `wps_membership_plan` custom post type is registered with `capability_type => 'post'`, any user who can edit posts satisfies the `current_user_can('edit_post', $post_id)` guard in `save_meta_boxes()`. This makes it possible for authenticated attackers, with Contributor-level access and above, to escalate their privileges to Administrator by storing `'administrator'` as the role granted on membership acquisition, which the Pro companion plugin then applies via `add_role()` during membership lifecycle events. Successful exploitation requires the Subscriptions for WooCommerce Pro companion plugin to be active, as it is the component that reads the stored `_wps_plan_user_role` meta via `get_post_meta()` and calls `add_role()` to apply the role during membership lifecycle events.
Title Subscriptions for WooCommerce <= 2.0.0 - Authenticated (Contributor+) Privilege Escalation via '_wps_plan_user_role' Membership Plan Meta
Weaknesses CWE-269
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Subscriptions

Wordpress Wordpress
Wpswings Subscriptions For Woocommerce
cve-icon MITRE

Status: PUBLISHED

Assigner: Wordfence

Published:

Updated: 2026-08-03T19:08:41.988Z

Reserved: 2026-07-10T14:30:07.093Z

Link: CVE-2026-15414

cve-icon Vulnrichment

Updated: 2026-08-03T19:08:30.821Z

cve-icon NVD

Status : Deferred

Published: 2026-08-01T03:16:25.757

Modified: 2026-08-12T21:00:37.147

Link: CVE-2026-15414

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-02T04:00:06Z

Weaknesses
  • CWE-269

    Improper Privilege Management