Enable Media Replace CVE-2025-9496
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain contributor-level account
-
DeliveryInsert file_modified shortcode with crafted attribute
-
ExploitStored payload rendered unsanitized on page
-
ExecutionScript executes in victim's authenticated session
-
ImpactHijack admin session or inject content
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 contributor-level capability or above (PR:L) on the target WordPress site running Enable Media Replace ≤4.1.6, and the ability to use the plugin's file_modified shortcode, whose user-supplied attributes are insufficiently sanitized/escaped. Exploitation is further limited by the need for a victim (admin or other user) to subsequently view the page containing the injected shortcode for the stored script to execute; sites that do not grant untrusted users contributor access are not realistically exposed. |
| Impact | This is a moderate-risk, authenticated Stored XSS (CVSS 6.4, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) rather than a top-tier emergency. The network vector and low attack complexity are offset by the PR:L requirement - the attacker must already hold a contributor-level (or higher) WordPress account, which meaningfully narrows the threat population to users who can author content. The scope change (S:C) and low confidentiality/integrity impacts reflect that injected script executes in other users' browser sessions (e.g. admins/visitors viewing the page), the classic stored-XSS blast radius. Exploitation signals are low and consistent: EPSS is 0.24% (14th percentile), the CVE is NOT in CISA KEV, and no public exploit code is referenced - no public exploit identified at time of analysis. None of the signals conflict; they jointly indicate a real-but-non-urgent issue that should be patched on a normal cycle, prioritized higher only on multi-author/membership sites where untrusted users hold contributor accounts. |
| Exploit ScenarioDerived | An attacker who has registered or obtained a contributor-level account on a WordPress site embeds the Enable Media Replace file_modified shortcode with a malicious attribute value containing JavaScript. When an administrator or other user later views the page containing that shortcode, the unsanitized attribute renders and the script executes in their authenticated session. No public exploit code is referenced; exploitation requires the low-complexity, remote-but-authenticated access described by the CVSS vector. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Stored cross-site scripting in the Enable Media Replace WordPress plugin affects all versions up to and including 4.1.6, allowing authenticated users with contributor-level access or above to inject arbitrary JavaScript into pages through the plugin's [file_modified] shortcode, whose attributes are insufficiently sanitized and escaped. The injected script executes when any user - including administrators - subsequently views the affected page, though exploitation requires a victim to load that page and sites that do not grant contributor access to untrusted users are not realistically exposed. No public exploit code has been identified at time of analysis, this CVE is not in CISA KEV, and the EPSS score is low at 0.24% (14th percentile), consistent with a moderate-risk authenticated issue rather than an emergency.
RemediationAI
Apply the upstream plugin fix: the referenced WordPress Trac changeset (3371681 for enable-media-replace) addresses the sanitization/escaping of the [file_modified] shortcode attributes, so administrators should update Enable Media Replace to the first released version that includes that change - patch status is 'upstream fix available (PR/commit); released patched version not independently confirmed', so verify the current changelog at https://wordpress.org/plugins/enable-media-replace/ before assuming a given release is clean. Where updating immediately is not possible, compensating controls include restricting or temporarily removing contributor-level and higher accounts on sites that must keep the vulnerable version, and reviewing stored content for unexpected [file_modified] shortcode usage; note the trade-off that revoking contributor roles disrupts legitimate editorial workflows. Disabling the plugin outright eliminates the shortcode entirely but also removes media-replacement functionality, and adding a WordPress WAF or output-escaping filter that strips script/HTML from shortcode attributes can block payloads at the cost of possible false positives on legitimate markup. Consult the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/07aafbe4-d2ac-4cc3-beb4-37e681ed5285) for the vendor-published fix guidance.
Affected ProductsAI
The Enable Media Replace plugin for WordPress is affected in all versions up to and including 4.1.6, the version named in the CVSS and the plugin repository tag referenced in the advisory (CPE-style identification: WordPress plugin enable-media-replace, vendor/plugin page https://wordpress.org/plugins/enable-media-replace/). The vulnerable code path is documented at https://plugins.trac.wordpress.org/browser/enable-media-replace/tags/4.1.6/classes/emr-plugin.php#L645, and the associated fix changeset is recorded at https://plugins.trac.wordpress.org/changeset?old=3371681%40enable-media-replace&new=3371681%40enable-media-replace. The vendor-agnostic tracking advisory is the Wordfence threat-intel entry https://www.wordfence.com/threat-intel/vulnerabilities/id/07aafbe4-d2ac-4cc3-beb4-37e681ed5285. Any WordPress site running the plugin at or below 4.1.6 and permitting contributor-level or higher accounts is in scope.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability is a classic CWE-79 cross-site scripting flaw rooted in the WordPress shortcode API. WordPress shortcodes accept user-supplied attributes that the plugin is responsible for sanitizing on input and escaping on output; Enable Media Replace registers a [file_modified] shortcode and, per the referenced source (classes/emr-plugin.php, line 645 in tag 4.1.6), fails to do so adequately. Because shortcode output is rendered into stored post/page content, the payload persists in the database and is served to every viewer, making it a stored (persistent) XSS rather than a reflected one. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N reflects network-reachable exploitation, low attack complexity, low privileges required (PR:L, matching the contributor-level requirement), and a scope change (S:C) because injected script executes in the context of other users' sessions and the hosting WordPress site rather than the attacker's own. Reported by Wordfence and tagged for WordPress/XSS, the affected component is the Enable Media Replace plugin distributed through the official WordPress plugin repository.
Know when Wordpress Plugin 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
Contributor authentication is required so PR:L; stored XSS executing in other users' browsers is a scope change (S:C) with low C/I and no availability impact.
Primary rating from Vendor (wordfence).
CVSS VectorVendor: wordfence
DescriptionCVE.org
The Enable Media Replace plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's file_modified shortcode in all versions up to, and including, 4.1.6 due to insufficient input sanitization and output escaping on user supplied attributes. 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 Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
NVD
CVE.org
EPSS
GitHub PoC
Exploit-DB