Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as subscriber-level user
-
DeliverySubmit hex-escaped payload in 'note' parameter
-
ExploitBypass sanitize_textarea_field storage filtering
-
Executionstripcslashes() decodes payload during admin render
-
PersistScript executes in admin browser session
-
ImpactHijack admin privileges or session
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account with subscriber-level access or above (PR:L). The attacker injects into the 'note' parameter (order notes) a payload encoded as a hex-escaped sequence (e.g., \x3cimg onerror=...\x3e); this specific encoding is required because sanitize_textarea_field() does not strip it and stripcslashes() only decodes it back into a live HTML tag during admin-side rendering of the order-notes view (src/Admin/Order/views/order-notes.php). The principal limiting factor is that the stored payload only executes when a privileged user (typically an administrator) opens the affected order-notes page - so exploitation depends on victim-side viewing - and the attacker must already possess a valid subscriber+ account, limiting impact on sites that disable open registration. Affects all versions up to and including 7.2.8. |
| Impact | This is a genuine but moderate-priority issue rather than a critical one. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N, base 6.4) shows network-reachable, low-complexity exploitation, but the PR:L requirement means an attacker must first hold a subscriber-level (or higher) account, which meaningfully narrows the attacker pool to sites allowing self-registration or to insiders. The scope change (S:C) and low-value C/I/A reflect a classic stored XSS payoff: code executes in the victim's authenticated browser context (typically an admin viewing order notes) rather than directly compromising the server. No EPSS score, KEV listing, or public POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active or widespread exploitation; this is a Wordfence-reported research finding, not an in-the-wild campaign. The novel technical detail - hex-escaped payloads surviving sanitize_textarea_field() and being reconstituted by stripcslashes() during admin rendering - makes the bypass credible and reproducible, but realized impact still depends on an administrator rendering the malicious order note. Net: treat as a routine-to-elevated patch priority for affected sites that permit untrusted registration, not an emergency. |
| Exploit ScenarioDerived | An attacker registers or uses a subscriber-level account on a store running the plugin and submits an order note containing a hex-escaped payload such as \x3cimg onerror=...\x3e via the 'note' parameter. The sequence stores without being stripped, then fires as live script when an administrator opens the order-notes view, running in the admin's authenticated session. No public exploit code was identified at time of analysis, though the described hex-escape/stripcslashes() bypass is reproducible from the advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Stored cross-site scripting in the Premium Packages - Sell Digital Products Securely WordPress plugin, affecting all versions up to and including 7.2.8, allows an authenticated attacker with subscriber-level access or above to inject arbitrary script into an order 'note' that executes when a privileged user opens the affected order-notes page in wp-admin. The payload defeats WordPress' sanitize_textarea_field() filtering because it is saved as a hex-escaped sequence such as \x3cimg onerror=...\x3e that is only reconstituted into a live HTML tag by stripcslashes() during admin-side rendering, after sanitization has already run. No public exploit code has been identified at time of analysis, and exploitation is conditional on the victim (typically an administrator) viewing the poisoned notes view, so the practical risk is moderate rather than critical; the vendor has committed an upstream code fix in the plugin's order-notes view.
RemediationAI
The vendor has committed an upstream fix to the order-notes view in changeset 3747528 (https://plugins.trac.wordpress.org/changeset/3747528/wpdm-premium-packages/trunk/src/Admin/Order/views/order-notes.php), so upgrade to the first tagged release that contains this change; a released patched version number is not independently confirmed in the available data, so verify against the plugin's changelog before assuming any specific version is fixed. Until an upgrade can be applied, the most effective compensating control is to eliminate the prerequisite account: disable open WordPress registration and audit accounts so no untrusted subscriber-or-higher users exist, accepting that this breaks legitimate customer self-registration and order tracking for logged-in buyers. Because exploitation requires an administrator to open the poisoned order-notes page, restricting wp-admin access (for example, IP allow-listing or a strong-password/2FA requirement on administrative accounts) reduces the chance of the stored script firing, at the cost of operational flexibility for admins working remotely. Sites that do not need the internal order-note feature can disable or remove that capability at the theme/plugin level, though this sacrifices order communication history. A web application firewall or the Wordfence rule set for CVE-2026-110664 can add virtual patching but should be treated as a stopgap, since the payload is stored data that bypassed native sanitization and may not be caught by signature patterns keyed to raw tags; note that any WAF rule targeting the literal '<img' string will not match the hex-escaped form actually used by this exploit.
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 flaw is a CWE-79 (Improper Neutralization of Input During Web Page Generation / stored cross-site scripting) in the WordPress plugin wpdm-premium-packages, whose CPE (cpe:2.3:a:codename065:premium_packages_-_sell_digital_products_securely) covers the affected component. The vulnerable data flow starts in the REST/API layer at src/Api/Endpoints/OrderEndpoint.php (lines 101 and 501) and src/Order/OrderService.php (line 700), where the user-supplied 'note' value for an order is accepted and persisted. WordPress' sanitize_textarea_field() is applied, but that function strips HTML tags and disallowed characters rather than the literal escape sequence backslash-x-hex, so a payload submitted as \x3cimg onerror=...\x3e survives intact. The rendering sink is the order-notes admin view at src/Admin/Order/views/order-notes.php (line 28), which passes the stored value through stripcslashes(), converting the previously harmless escape sequence back into a real <img onerror=...> tag that the browser parses and executes. This sanitize-then-decode ordering error is the root cause class: encoding-based filter bypass, a well-known weakness pattern where the defensive transformation is reversed at output time after the sanitization stage has concluded. Because the CVSS vector is PR:L, the endpoint is reachable by any authenticated user at subscriber level or higher, and the scope change (S:C) reflects that the injected script executes in the administrative browsing context rather than the attacker's own session.
Know when Premium Packages Sell Digital Products Securely 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
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Network-reachable 'note' input needs subscriber auth (PR:L); stored XSS executes in a different security context (S:C) yielding limited C/I in the victim's browser and no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Premium Packages - Sell Digital Products Securely plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'note' parameter in all versions up to, and including, 7.2.8 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The exploit bypasses tag-based filtering because the payload is stored as a hex-escaped sequence (e.g., \x3cimg onerror=...\x3e) that sanitize_textarea_field does not strip, and is only decoded back into a live HTML tag by stripcslashes() during admin rendering - after all sanitization has occurred.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
The Premium Packages - Sell Digital Products Securely plugin for WordPress is vulnerable to privilege escalation in vers
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in Shahjada WPDM - Pr
Unauthenticated stored cross-site scripting in the WordPress plugin Premium Packages - Sell Digital Products Securely (a
Stored cross-site scripting in the Premium Packages - Sell Digital Products Securely WordPress plugin (versions up to an
SQL Injection in the Premium Packages - Sell Digital Products Securely WordPress plugin (all versions through 7.0.4) all
Stored cross-site scripting in Premium Packages - Sell Digital Products Securely (wpdm-premium-packages) through version
The Premium Packages - Sell Digital Products Securely plugin for WordPress is vulnerable to Cross-Site Request Forgery i
EUVD-2026-102786
GHSA-5r3f-rfrx-qxp9
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB