← Back to Feed CACHED · 2026-06-29 22:08:07 · CACHE_KEY CVE-2026-57329
CVE-2026-57329 · CWE-79 · Disclosed 2026-06-29

Subscriber Cross Site Scripting

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A logged-in shopper can scribble JavaScript on a niche e-commerce plugin's form, and the vendor called it medium

CVE-2026-57329 is a stored/reflected Cross-Site Scripting flaw (CWE-79) in the WooCommerce Designer Pro plugin, affecting all versions ≤ 1.9.34. An attacker who already holds a Subscriber-level account on the target WordPress site can inject script payloads via plugin-controlled input that doesn't sanitize before rendering. The CVSS vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L) tells the whole story: network reachable, but requires *low privilege* auth, *user interaction*, and only yields *low* impact across the triad — with a scope change because the script runs in another user's browser session.

Vendor severity of MEDIUM (6.5) is generous. This is a Subscriber-authenticated XSS in a paid third-party WooCommerce add-on with a small installed base — *not* the core WooCommerce platform, not unauthenticated, not in a Critical path. The realistic worst case is hijacking a shop admin who happens to view the attacker's payload. For most operators of 10,000 hosts this is a hygiene patch, not a fire drill.

"Subscriber-auth stored XSS in a WooCommerce add-on plugin. Vendor's MEDIUM is a paper tiger — friction stacks deep and blast radius is one shop."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Acquire Subscriber account on target site

The CVSS vector requires PR:L. The attacker registers as a normal shop customer (most WooCommerce stores allow self-service registration) or compromises an existing low-privilege account. No admin, no editor — just a subscriber-level cookie. Tooling here is trivial: curl, Burp Suite, or just a browser.
Conditions required:
  • Target site runs WooCommerce Designer Pro ≤ 1.9.34
  • Customer self-registration is enabled (default for WooCommerce shops)
Where this breaks in practice:
  • Sites that disable customer self-registration force the attacker to compromise an existing credential first
  • Plugin is a paid commercial add-on with a far smaller install base than core WooCommerce
Detection/coverage: WAF logs show new account creation; not anomalous in an e-commerce context.
STEP 02

Inject XSS payload into vulnerable plugin field

Authenticated as a subscriber, the attacker submits a crafted payload to the unsanitized input handled by Designer Pro — typically a design-name, customization-text, or saved-template field. Payloads use standard XSS gadgets (<svg onload=…>, <img src=x onerror=…>) wrapped in BeEF or a custom JS stager. The payload is stored server-side, ready to render in another user's browser.
Conditions required:
  • Identified injectable field within Designer Pro flow
  • No edge WAF doing payload filtering (Cloudflare/Sucuri/Wordfence rules)
Where this breaks in practice:
  • Modern managed WordPress hosts (WP Engine, Kinsta) ship generic XSS WAF rules that catch naive payloads
  • CSP headers — if set — block inline script execution
Detection/coverage: Wordfence and Patchstack signatures typically catch known XSS strings post-disclosure.
STEP 03

Lure a higher-privileged user to view the payload

UI:R is mandatory. The attacker needs a shop admin, store manager, or other elevated user to navigate to the page that renders the stored payload — usually the order-review or design-management screen inside wp-admin. Tooling: BeEF hook, custom JS to exfiltrate wp_session_tokens or chain into REST-API calls as the viewer.
Conditions required:
  • Victim user has access to the admin view that renders attacker-controlled content
  • Victim is authenticated and clicks through to the affected page
Where this breaks in practice:
  • Admins on busy stores may not review individual subscriber-submitted designs within the patch window
  • WordPress core has SameSite cookie defaults and nonce checks that limit blind CSRF chaining
Detection/coverage: EDR on the admin's workstation may flag credential-stealing JS via browser-extension telemetry; rarely catches in-DOM exfil.
STEP 04

Execute in admin's browser, attempt session takeover

Script runs with the admin's origin. Attacker uses fetch() to call wp-admin/admin-ajax.php and wp-json/wp/v2/users to create a new administrator account, exfiltrate the auth cookie, or pivot to a plugin-install endpoint for code execution. Scope change (S:C) is reflected here — impact crosses from the subscriber session boundary into the admin's.
Conditions required:
  • WP nonces obtainable from admin DOM (usually true)
  • Admin user has manage_options or install_plugins capability
Where this breaks in practice:
  • Two-factor auth on admin actions (rare but increasing) blocks silent account creation
  • File-edit-disabled hardening (DISALLOW_FILE_MODS) breaks the pivot-to-RCE step
Detection/coverage: Audit-log plugins (WP Activity Log, Simple History) record new-admin-creation events; SIEM rarely ingests WordPress logs.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. No campaign attribution; not on CISA KEV; no GreyNoise tagged traffic.
Public PoCNo public PoC repository at time of writing. Patchstack typically withholds payload details for ≥30 days post-disclosure.
EPSSExpected <0.5% — typical for authenticated XSS in low-install-base WordPress plugins.
KEV statusNot listed. Unlikely to be added — XSS rarely meets CISA's RCE/active-exploitation bar.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L → 6.5. Note: PR:L + UI:R are the load-bearing constraints; remove either and severity stays MEDIUM.
Affected versionsWooCommerce Designer Pro ≤ 1.9.34.
Fixed versionVerify with vendor advisory — 1.9.35 or later expected. No distro backports (commercial WP plugin).
Exposure populationDesigner Pro is a paid CodeCanyon-style add-on; installed base estimated in the low tens of thousands of sites globally — *far* below core WooCommerce's ~6M install footprint.
Disclosure date2026-06-29 via Patchstack coordinated disclosure program.
ReporterIndependent researcher via Patchstack mVDP — confirm specific credit on the Patchstack database entry.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.5/10)

Downgraded one bucket because the single most decisive factor is the compounding friction of PR:L + UI:R + S:C on a small-install-base commercial plugin — the attacker needs an account, needs a privileged victim to click, and the bug lives in an add-on that no high-value-role deployment depends on. Blast radius is bounded to a single shop's admin session, with no role-multiplier path to identity, hypervisor, or supply chain.

HIGH Friction audit and PR:L+UI:R interpretation
MEDIUM Installed-base estimate (Designer Pro is paid; no public telemetry)
LOW Exact injection field — vendor advisory withheld specifics

Why this verdict

  • Authentication required (PR:L): the attacker must hold a subscriber account. Self-registration is common on shops, but this still gates the population of viable targets and provides forensic attribution.
  • User interaction required (UI:R): a higher-privileged victim must navigate to the affected page. Stored XSS in admin contexts is real, but the time-to-impact is bounded by admin workflow cadence.
  • Narrow installed base: Designer Pro is a niche commercial WooCommerce add-on. Per-site impact is bounded; there is no aggregate fleet exposure comparable to core WooCommerce or Elementor.
  • Role multiplier — workstation/LOB shop role: chain succeeds; outcome is *single-shop admin hijack* → site defacement / customer-data scrape. Local-to-tenant blast radius only.
  • Role multiplier — high-value role: N/A. Designer Pro does not run on domain controllers, hypervisors, IdPs, PAM, backup admin servers, or CI/CD. There is no canonical high-value-role deployment, so the CRITICAL/HIGH role floor does not apply.
  • No KEV, no public PoC, no active exploitation: zero upgrade pressure from threat-intel signals.

Why not higher?

MEDIUM would be defensible if Designer Pro were widely deployed core software or if the bug were unauthenticated. Neither is true — PR:L plus a small installed base plus no exploitation evidence plus no role-multiplier path keeps this below the MEDIUM threshold for an enterprise patch backlog.

Why not lower?

IGNORE would be wrong: it *is* a real XSS with stored impact on the admin session, and S:C confirms scope crosses the privilege boundary. Some shops do allow open subscriber registration, making opportunistic exploitation feasible. LOW correctly reflects that this is real but non-urgent.

05 · Compensating Control

What to do — in priority order.

  1. Deactivate WooCommerce Designer Pro on any site not actively using it — Most stores install it during a campaign and forget — deactivating eliminates the attack surface entirely. No mitigation SLA at LOW; treat as opportunistic hardening alongside the next maintenance window.
  2. Enforce a WAF rule blocking known XSS payload signatures on plugin endpoints — Cloudflare / Wordfence / Sucuri all ship generic stored-XSS rule packs. Push the ruleset to block <script>, onerror=, onload=, and javascript: in Designer Pro submission paths.
  3. Require 2FA for all administrator and shop-manager accounts — Even if the XSS fires in an admin browser, 2FA on high-impact actions (plugin install, user creation) limits the pivot path. Use WP 2FA or Wordfence Login Security.
  4. Set a restrictive Content-Security-Policy header on /wp-admin/ — Block inline-script execution and restrict script-src to first-party. Designer Pro's payload becomes inert even if injected. Roll out behind report-only mode first to catch breakage.
  5. Audit existing subscriber-submitted content for stored payloads — Use wp db search or a SQL query against postmeta/options tables for <script, onerror=, onload=, <svg/onload. If the plugin shipped vulnerable for months, payloads may already be staged.
What doesn't work
  • Disabling customer self-registration alone — attackers can buy compromised WooCommerce credentials on dark-web markets for under $5; this slows but does not stop the chain.
  • Network-edge IPS signatures — XSS payloads in legitimate POST bodies look indistinguishable from product customization data; rule false-positive rates are unacceptable on shop traffic.
  • Database-level WAFs — the input is sanitized (or not) at the PHP layer; DB-tier controls cannot inspect serialized HTML payloads in postmeta.
06 · Verification

Crowdsourced verification payload.

Run this on each WordPress host as root or the www-data user with read access to the WordPress install. Invoke with the document root as the argument: ./check_cve_2026_57329.sh /var/www/html. Exits 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN (plugin not installed or version unreadable).

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-57329 — WooCommerce Designer Pro XSS (<= 1.9.34)
# Usage: ./check_cve_2026_57329.sh /path/to/wordpress
set -u

WP_ROOT="${1:-/var/www/html}"
PLUGIN_DIR="${WP_ROOT}/wp-content/plugins/woocommerce-designer-pro"
FIXED_VERSION="1.9.35"

if [[ ! -d "${WP_ROOT}" ]]; then
  echo "UNKNOWN: WordPress root ${WP_ROOT} not found"
  exit 2
fi

if [[ ! -d "${PLUGIN_DIR}" ]]; then
  echo "PATCHED: WooCommerce Designer Pro not installed at ${PLUGIN_DIR}"
  exit 0
fi

# Locate the plugin's main PHP header file (any *.php at top level with 'Version:' header)
MAIN_FILE=$(grep -lE '^[[:space:]]*\*?[[:space:]]*Version:' "${PLUGIN_DIR}"/*.php 2>/dev/null | head -n1)
if [[ -z "${MAIN_FILE}" ]]; then
  echo "UNKNOWN: cannot locate plugin header file in ${PLUGIN_DIR}"
  exit 2
fi

INSTALLED_VERSION=$(grep -iE '^[[:space:]]*\*?[[:space:]]*Version:' "${MAIN_FILE}" | head -n1 | sed -E 's/.*Version:[[:space:]]*([0-9][0-9A-Za-z.\-]*)\b.*/\1/I')
if [[ -z "${INSTALLED_VERSION}" ]]; then
  echo "UNKNOWN: could not parse version from ${MAIN_FILE}"
  exit 2
fi

# Semantic version compare — installed < fixed ?
ver_lt() {
  [[ "$1" == "$2" ]] && return 1
  local IFS=.
  local a=($1) b=($2)
  local len=$(( ${#a[@]} > ${#b[@]} ? ${#a[@]} : ${#b[@]} ))
  for ((i=0; i<len; i++)); do
    local x=${a[i]:-0} y=${b[i]:-0}
    # strip non-numeric trailers
    x=${x%%[!0-9]*}
    y=${y%%[!0-9]*}
    x=${x:-0}; y=${y:-0}
    if (( 10#$x < 10#$y )); then return 0; fi
    if (( 10#$x > 10#$y )); then return 1; fi
  done
  return 1
}

if ver_lt "${INSTALLED_VERSION}" "${FIXED_VERSION}"; then
  echo "VULNERABLE: WooCommerce Designer Pro ${INSTALLED_VERSION} <= 1.9.34 (CVE-2026-57329). Upgrade to >= ${FIXED_VERSION}."
  exit 1
fi

echo "PATCHED: WooCommerce Designer Pro ${INSTALLED_VERSION} >= ${FIXED_VERSION}"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Treat this as backlog hygiene, not an incident. The noisgate mitigation SLA for a LOW verdict carries no mitigation deadline — go straight to the noisgate remediation SLA of ≤ 365 days, which in practice means rolling the plugin update into your next scheduled WordPress maintenance window (typically within 30-60 days for any sane ops cadence). Monday morning: run the verification script across your WordPress fleet to identify exposed sites, deactivate Designer Pro on any site not actively using it, push generic stored-XSS WAF signatures via Cloudflare/Wordfence, and confirm 2FA is enforced on every wp-admin account. If you happen to operate a shop where Designer Pro is in active customer-facing use, accelerate the patch to the next sprint — but do not interrupt anything more urgent for this.

Sources

  1. Patchstack vulnerability database
  2. WPScan WordPress plugin vulnerability index
  3. WooCommerce official security advisories
  4. WooCommerce GitHub Security Advisories
  5. MITRE CWE-79: Improper Neutralization of Input During Web Page Generation
  6. FIRST EPSS scoring
  7. CISA Known Exploited Vulnerabilities Catalog
  8. CVE Details — WooCommerce vendor page
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.