CVE-2026-15214
Executive Summary
CVE-2026-15214 is an Insecure Direct Object Reference (IDOR) vulnerability in the "Subscriptions for WooCommerce" WordPress plugin, affecting versions prior to 2.0.1. The flaw allows any authenticated user with Subscriber-level privileges or higher to retrieve and read another customer's subscription details—including the subscribed product, subscription status, and relevant dates—by simply supplying the target subscription's numeric ID via the plugin's unauthenticated (within the authenticated context) detail view endpoint. While the CVSS base score is 4.3 (Medium) due to low confidentiality impact and no integrity/availability impact, the vulnerability constitutes a meaningful privacy breach within an e-commerce platform, potentially exposing sensitive customer data and facilitating further social engineering or account-specific targeting. The patch is confirmed to exist in version 2.0.1, though the fix is currently evidenced by a single source (NVD) and has not been independently verified.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The root cause of CVE-2026-15214 lies in the plugin's failure to enforce an ownership check on the subscription detail retrieval function. In typical WordPress plugin implementations, a shortcode or AJAX handler such as subscription_details( $subscription_id ) would query the wp_posts and wp_postmeta tables to fetch a subscription's metadata (e.g., _subscription_status, _product_id, _start_date, _end_date) based on a user-supplied subscription_id parameter. The vulnerable code path, likely triggered via a page using the [subscriptions] shortcode or a dedicated REST endpoint, instantiates a subscription object using the ID from the HTTP request (e.g., $_GET['subscription_id'] or a route parameter) without checking that the requesting user's user_id matches the subscription's _customer_id meta value.
The attack surface is the front-end subscription management area accessible to authenticated users. The application accepts the subscription ID as a direct object reference and renders its details in the response, omitting any authorization check. The vulnerability is classified under CWE-639 (Authorization Bypass Through User-Controlled Key), indicating the flaw is a direct consequence of trusting user input as an object reference without a capability/ownership check. The affected code likely uses get_post( $id ) and get_post_meta( $id ) directly, which do not incorporate user context.
The CVSS attack vector is Network (AV:N), requiring Low attack complexity (AC:L) and Low privileges (PR:L—an authenticated Subscriber account is sufficient). No user interaction is needed (UI:N). The scope is Unchanged (S:U) as the compromised component is isolated, and the confidentiality impact is Low (C:L), as only limited subscription metadata (status, dates, product reference) is disclosed, not full PII or payment data. There is no integrity (I:N) or availability (A:N) impact.
Exploitation Scenarios
The exploitation of CVE-2026-15214 is straightforward and requires only basic WordPress user credentials. The attack chain proceeds as follows:
Reconnaissance / Target Identification: The attacker registers a free Subscriber account on the target WooCommerce site (or compromises an existing low-privilege account). For WooCommerce plugin endpoints, the attacker must first identify the URL structure for accessing subscription details. This is typically under the "My Account" section, e.g.,
https://target.com/my-account/subscriptions/view/152or through a shortcode-driven page likehttps://target.com/subscription-details/?subscription_id=152. The attacker enumerates the endpoint by navigating to their own subscription (if any) or by analyzing the plugin's source code (available via the WordPress plugin repository) to locate the parameter name.Weaponization / Trigger: The attacker crafts a direct HTTP GET request to the identified endpoint, iterating the subscription ID parameter. For example:
GET /my-account/subscriptions/view/153 HTTP/1.1 Host: target.com Cookie: wordpress_logged_in_xxxx=abc123 (attacker's session)Or via the shortcode approach:
GET /subscription-details/?subscription_id=153The attacker can use standard tools like
curl, Burp Suite, or a simple Python script to automate the iteration of IDs from 1 to N, capturing responses.Payload / Execution: As the plugin renders the subscription details without ownership verification, the server responds with the subscription metadata for ID 153, belonging to a different customer. The response contains the subscribed product name/ID, subscription status (e.g., "active", "cancelled", "pending"), and associated dates (start, trial end, expiry). No special payload is required—the flaw is purely in the server-side authorization logic, not input validation.
Post-Exploitation Impact: The attacker collects subscription IDs and associated data across the entire customer base. This enables targeted phishing campaigns (knowing which product a victim subscribes to), competitive intelligence gathering (if the store offers subscription-based services), or building a profile of high-value customers for further attacks. If the attacker also finds multiple subscriptions linked to the same customer, they can infer account activity patterns. In cases where the product ID reveals details about a business relationship, this could have compliance implications.
Impact Assessment
The business impact of CVE-2026-15214 centers on confidentiality and privacy within the e-commerce ecosystem. A successful exploit allows an authenticated low-privilege user to enumerate all subscription records on the platform, exposing:
- The specific products or services to which other customers are subscribed.
- Subscription lifecycle status (active, paused, cancelled).
- Contractual dates (start, renewal, expiry), which can reveal billing cycles.
While payment card data and full names are not disclosed (the vulnerability is limited to subscription object details), the information can be leveraged for social engineering and provides a tangible foothold for broader reconnaissance. For organizations subject to GDPR, CCPA, or similar privacy regulations, this data exposure could constitute a reportable breach, particularly if subscription product types reveal sensitive health, financial, or lifestyle information.
The affected systems are any WordPress-powered e-commerce store running the "Subscriptions for WooCommerce" plugin in versions before 2.0.1. Given that WooCommerce powers a significant portion of the e-commerce web, the attack surface is substantial, though exploitation is constrained to authenticated users, reducing the likelihood of mass opportunistic scanning. The CVSS subscores confirm this limited scope: Low privileges required (PR:L) and Low confidentiality impact (C:L), yielding the Medium overall score of 4.3. The blast radius is limited to data leakage; there is no potential for privilege escalation, data modification, or denial of service via this specific vulnerability.
Detection Guidance
Detection of this vulnerability is challenging because the exploit traffic is indistinguishable from legitimate user enumeration or normal browsing of subscription views, and it occurs over standard HTTP(S) on the WordPress site. Detection focuses on anomalous patterns in API/endpoint access, unusual ID sequencing, and access control audit failures.
Sigma Rule
The Sigma rule below detects anomalous enumeration patterns against WooCommerce subscription endpoints. It monitors web server access logs for requests to the subscription view URL with consecutive or high-volume numeric IDs from a single user session.
title: WooCommerce Subscription IDOR Enumeration Attempt
id: 9f3c2b1a-4d5e-6f78-90ab-cdef12345678
status: experimental
description: Detects multiple requests to the WooCommerce subscription view endpoint with varying subscription IDs from the same IP or user, indicating possible IDOR enumeration for CVE-2026-15214.
author: Valters IT Security Research
date: 2026/01/15
logsource:
category: webserver
product: apache
service: accesslog
detection:
selection:
cs-uri-path:
- '/my-account/subscriptions/view/*'
- '*subscription_id=*'
condition: selection | count() by clientip > 10
timeframe: 60s
falsepositives:
- Legitimate support agents viewing multiple subscriptions
- Administrators bulk-reviewing subscriptions
level: medium
YARA Rule
This YARA rule targets server-side log entries or HTTP payload captures containing the vulnerable endpoint signatures, aiding in forensic analysis of compromised stores.
rule WooCommerce_Subscription_IDOR_Indicator
{
meta:
author = "Valters IT Security"
description = "Detects HTTP request patterns or log lines indicating subscription IDOR exploitation attempts."
cve = "CVE-2026-15214"
date = "2026-01-15"
strings:
$a = "/my-account/subscriptions/view/" ascii
$b = "subscription_id=" ascii
$c = "subscriptions/view/" ascii nocase
$d = "subscription-details" ascii
condition:
any of them
}
Suricata IDS Rule
The Suricata rule examines HTTP traffic for rapid sequential requests to the subscription detail endpoint, flagging potential enumeration bursts.
alert http any any -> $HOME_NET any (msg:"CVE-2026-15214 WooCommerce Subscription IDOR Enumeration"; flow:established,to_server; content:"subscription_id="; http_uri; content:"/my-account/subscriptions/view/"; http_uri; threshold:type both, track by_src, count 15, seconds 60; sid:1521401; rev:1;)
Elastic Detection
This EQL query, for Elastic Security, detects user-driven enumeration by counting distinct subscription IDs per user session within a short time frame.
sequence by user.id with maxspan=1m
[ webRequest where url.path == "/my-account/subscriptions/view/*" ]
| stats distinct_count(url.path) as paths by user.id
where paths > 10
Splunk SPL Query
The following Splunk search analyzes IIS/Apache access logs to find users requesting a high number of unique subscription IDs.
index=web sourcetype=access_combined
| rex field=uri_path "/my-account/subscriptions/view/(?<id>\d+)"
| where isnotnull(id)
| stats dc(id) as distinct_ids values(id) as id_list by clientip user
| where distinct_ids > 10
| table _time clientip user distinct_ids id_list
Wazuh OSSEC Rule
The Wazuh XML rule below triggers an alert when the web server access log contains an unusual pattern of subscription ID requests from a single source.
<group name="web,accesslog,attacks,">
<rule id="152140" level="8">
<decoded>predecoder.hostname</decoded>
<match>subscription_id=</match>
<regex>subscription_id=(\d+)</regex>
<description>Potential IDOR enumeration against WooCommerce subscriptions</description>
<group>pci_dss_6.5,gdpr_32,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence is rated 2/4 (CLAIMED). A patched version exists (2.0.1), but the vendor advisory is not independently confirmed across multiple sources. Immediate action is required.
1) Immediate Mitigations (without patching):
- Restrict the "Subscriptions" page via a shortcode filter or custom code snippet to only render details if the curent user's ID matches the subscription's
_customer_idmeta. This can be done using theuser_has_capfilter or a custom template override. - If you cannot patch immediately, disable the public-facing subscription detail view via plugin settings or by removing the shortcode from the My Account page.
- Implement a WAF rule to rate-limit requests to the subscription endpoints, restricting the number of ID-based requests per IP per minute.
2) Patch / Upgrade Steps:
- Primary Fix (Recommended): Update the "Subscriptions for WooCommerce" plugin to version 2.0.1 or later. In the WordPress admin panel, navigate to Plugins → Installed Plugins, locate the plugin, and click "Update Now." Alternatively, download the latest version from the WordPress Plugin Repository and replace the plugin folder via FTP or a package manager.
- Verification: After updating, test the fix by attempting to view another user's subscription ID (using two test accounts). If the updated version correctly returns an "access denied" or redirects, the patch is effective.
3) Long-Term Hardening:
- Adopt a maintenance routine that includes regular plugin updates and subscribing to WordPress security advisories.
- Enforce the principle of least privilege: ensure that only customers needing subscription access are assigned appropriate roles, and audit user roles monthly.
- Deploy a Web Application Firewall (WAF) with virtual patching capabilities to block IDOR patterns if immediate patching is not possible.
- Thoroughly examine access logs for evidence of prior exploitation (refer to the Detection Guidance section) and consider notifying affected customers if a breach is suspected, aligning with GDPR/CCPA disclosure requirements.
References
- NVD Entry: NVD – CVE-2026-15214 (Primary source for CVE metadata and CVSS vector)
- WordPress Plugin Repository: Subscriptions for WooCommerce (Source for obtaining the patched version 2.0.1)
- CWE-639 Reference: MITRE CWE-639 – Authorization Bypass Through User-Controlled Key (Underlying weakness classification)
- FIRST.org CVSS Calculator: CVSS v3.1 Vector String Calculator (For vector breakdown and score validation)
Threat Actor Campaigns / Active Exploitation: As of this report, there is no known exploit-in-the-wild evidence or tracked threat actor campaigns specifically targeting CVE-2026-15214. The CISA KEV (Known Exploited Vulnerabilities) catalog has not listed this CVE, and no public exploit code or Nuclei templates have been published. However, due to the trivial nature of the flaw, independent security researchers may soon release proof-of-concept scripts, increasing the exploitation risk. EPSS has not yet scored this vulnerability.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.