Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEnumerate sequential WooCommerce order IDs
-
ExploitSet gtm_server_side_order_id cookie to target ID
-
ExecutionLoad any page on the site
-
ImpactRead victim order data and PII from dataLayer
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | WooCommerce must be installed and active and the plugin's 'Ecommerce' dataLayer feature must be enabled; this is the core prerequisite. In versions 2.0.0-2.1.46 the primary trigger is direct manipulation of the unauthenticated, integrity-free client-side gtm_server_side_order_id cookie set to any valid (sequential, easily enumerated) order ID, after which the purchase event renders on any page because the is_wc_endpoint_url('order-received') guard was commented out. Full PII exposure (customer name, email, billing address, new/returning status) additionally requires the plugin's 'User Data' option to be enabled; without it, exposure is limited to non-PII order/transaction fields. In version 2.1.47 the direct cookie vector is closed (order ID moved to WC()->session), so residual exposure is limited to deployments running a full-page caching plugin (e.g., WP Rocket, LiteSpeed Cache, W3 Total Cache) that can cache and replay a legitimate purchase dataLayer to later visitors. Version 2.1.48 removes all of these conditions. |
| Impact | Signals are moderately strong but not emergency-grade. The CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N, VC:H) correctly reflects a remotely reachable, unauthenticated confidentiality breach with no user interaction, yielding the published 8.7. The vuln.today decision label is 'this_week' (not act_now/emergency), consistent with a serious-but-not-wormable information-disclosure flaw. No EPSS score was provided, and the CVE is NOT in CISA KEV, so there is no evidence of active exploitation. A detailed reproduction PoC is published inside the GHSA advisory, but the input does not mark it as confirmed working exploit code. The flaw is real and easy to trigger (sequential, enumerable order IDs; a client-settable cookie with no integrity protection in versions 2.0.0-2.1.46), which argues for prompt patching; however, impact is bounded to confidentiality of WooCommerce order data (I and A are N), and exploitation is gated on specific plugin/feature configuration. Net: a genuine priority for affected WooCommerce sites, but not a drop-everything event absent KEV or EPSS corroboration. One data conflict to verify: the package-metadata line states 'fixed in >= 2.1.47,' while the vendor GHSA advisory explicitly states 2.1.47 is only a partial fix and 2.1.48 is the first fully remediated release - treat 2.1.48 as the fixed version. |
| Exploit ScenarioDerived | On a vulnerable site (plugin 2.0.0-2.1.46 with WooCommerce and the Ecommerce dataLayer feature active), an unauthenticated attacker sets the client-side gtm_server_side_order_id cookie to a guessed sequential order ID, loads any page, and reads the targeted customer's full purchase dataLayer - including name, email, and billing address when the 'User Data' option is enabled. A step-by-step public PoC reference exists in the GHSA advisory (it is not verified as working exploit code). On 2.1.47 sites, the residual risk shifts to full-page caching plugins inadvertently caching and replaying a real customer's purchase dataLayer to later anonymous visitors. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Unauthenticated visitors to WordPress sites running the GTM Server Side plugin (stape.io, also published as Stape Conversion Tracking) versions 2.0.0 through 2.1.46 can cause another customer's complete WooCommerce order record - transaction ID, items, value, shipping and, when the plugin's 'User Data' option is enabled, name, email and billing address - to be rendered into the page's JavaScript dataLayer simply by setting the gtm_server_side_order_id cookie to an enumerable, sequential order ID and loading any page of the site. The root cause is that the guard restricting purchase-event output to the WooCommerce order-received endpoint was commented out, so the wp_footer hook trusts an integrity-free client-side value; version 2.1.47 moved the order ID into WC()->session and closed the direct cookie manipulation path, but full remediation only arrived in 2.1.48, which adds a once-per-order sent flag to stop full-page caching plugins replaying a legitimate purchase event to later anonymous visitors. CVSS 4.0 scores this 8.7 (AV:N/AC:L/PR:N/UI:N/VC:H) and the practical prerequisite is WooCommerce plus the 'Ecommerce' dataLayer feature being enabled; a public proof-of-concept reproduction procedure is documented in the GitHub advisory, though it is not verified as working exploit code, and no confirmed active exploitation (CISA KEV) is indicated. Priority is set to this_week rather than emergency because exploitation depends on that configuration prerequisite and yields read-only disclosure.
RemediationAI
Vendor-released patch: update the GTM Server Side plugin to version 2.1.48 or later, available from https://github.com/stape-io/gtm-server-side-wordpress-plugin/releases/tag/2.1.48; the session-migration and once-only order-meta fix is in commit https://github.com/stape-io/gtm-server-side-wordpress-plugin/commit/9ff46a050028c40fad5416f2fa35be574c823434. Do not treat 2.1.47 as sufficient: it only migrates the order ID from the gtm_server_side_order_id cookie into WC()->session and leaves the any-page emission and cache-replay risk in place, so sites already on 2.1.47 still need 2.1.48. After updating, purge all full-page caches (WP Rocket, LiteSpeed Cache, W3 Total Cache and similar) immediately, because cached pages may still carry a previously rendered purchase dataLayer, and review cached or logged pages for exposed customer data if caching was active during the vulnerable period. If the 'User Data' option was enabled, review WooCommerce order logs for suspicious access patterns and assess breach-notification obligations under GDPR, CCPA or similar regimes. If updating is not immediately possible, the only exposure-limiting option supported by the available evidence is disabling the plugin's 'Ecommerce' dataLayer feature (which stops both the order dataLayer emission and purchase tracking generally), or deactivating WooCommerce purchase-event tracking for the plugin; no other vendor-stated workaround exists.
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
The plugin hooks WordPress's wp_footer action through includes/class-gtm-server-side-event-purchase.php to emit a WooCommerce 'purchase' ecommerce event into the GTM dataLayer. To avoid pushing the same purchase twice it stored the most recent order ID in a client-side cookie named gtm_server_side_order_id (introduced in 2.0.0), and the footer routine read that value, fetched the matching order from the database and printed the full event - including, when the 'User Data' setting is on, customer name, email, billing address and new/returning status - into an inline script. The code that would have confined this to the order confirmation page, a call to is_wc_endpoint_url('order-received'), was left commented out, so the emission happened on every page of the site. Because the cookie carries no integrity protection and WooCommerce order IDs are sequential integers, an anonymous actor can enumerate IDs and force disclosure of arbitrary orders; this is tracked as CWE-200 exposure of sensitive information. The 2.1.47 change moved the order ID from the cookie to server-side WC()->session, defeating cookie stuffing, but because the hook still fired on any page and no deduplication existed, a full-page caching plugin (WP Rocket, LiteSpeed Cache, W3 Total Cache) could persist a legitimate purchase dataLayer in the page cache and serve it to subsequent anonymous visitors. The 2.1.48 commit adds WC()->session null-guards, immediately unsets the session key after reading it, and introduces a _gtm_server_side_order_sent order meta flag that permanently marks an order as emitted, closing both the direct manipulation and the cache-replay vectors.
Know when Woocommerce 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Remote, unauthenticated, no user interaction (settable cookie, enumerable order IDs) gives AV:N/AC:L/PR:N/UI:N; impact is confidentiality-only disclosure of customer PII, so C:H, I:N, A:N, S:U.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
The GTM Server Side plugin by stape.io implements server-side tracking on WordPress websites. From version 2.0.0 to before version 2.1.48, the WooCommerce purchase event tracking mechanism allows an unauthenticated attacker to trigger the rendering of another customer's full order data - including personally identifiable information (PII) - into the page's JavaScript dataLayer. This issue has been patched in version 2.1.48.
Technical POC Analysis
CWE-200 (Exposure of Sensitive Information).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The GTM Server Side plugin for WordPress, used on WooCommerce sites, exposes complete customer order records-including names, emails, billing addresses, and transaction details-to any unauthenticated visitor who sets a simple cookie. This affects all customers whose orders are stored on sites running vulnerable versions (2.0.0-2.1.46), potentially leading to widespread privacy breaches, regulatory non-compliance (e.g., GDPR, CCPA), and reputational damage. Leadership should prioritize immediate patching and assess whether any data has already been exfiltrated.
Apply vendor patch (version 2.1.48 or later).
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
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Woocommerce
View allThe WooCommerce plugin through 3.x for WordPress has a Directory Traversal Vulnerability via a /wp-content/plugins/wooco
Unauthenticated remote code execution in Print Invoice & Delivery Notes for WooCommerce through 5.8.0 lets remote attack
Unauthenticated arbitrary file upload in Addify's Request a Quote for WooCommerce plugin, affecting all versions up to a
The WooCommerce Help Scout WordPress plugin before 2.9.1 (https://woocommerce.com/products/woocommerce-help-scout/) allo
WooCommerce 7.1.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary PHP code by
Unauthenticated path traversal in OrderConvo (the "Admin and Customer Messages After Order for WooCommerce" plugin), aff
Unauthenticated remote attackers can seize control of the payment configuration on WordPress stores running the Fundiin
Ultimate WooCommerce Gift Cards 3.0.2 is affected by a file upload vulnerability in the Custom GiftCard Template that ca
Unauthenticated attackers can exploit the Walletdoc Payment Gateway for WooCommerce plugin before version 1.8.5 to execu
Unauthenticated SQL injection in the ELEX WooCommerce Request a Quote WordPress plugin (all versions before 2.4.1) allow
Unauthenticated, network-reachable attackers can read the WooCommerce API consumer key and secret stored by the MgoSync
Unauth. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no authentication required, low atta
EUVD-2026-108976
NVD
CVE.org
EPSS
GitHub
Exploit-DB