CVE-2026-8896: WordPress MIR Plugin Stored XSS Vulnerability
The MIR blocks and shortcodes WordPress plugin contains a vulnerability that allows authenticated users with contributor-level permissions or higher to embed malicious code into pages. When someone visits an affected page, that malicious code runs in their browser. The vulnerability exists because the plugin doesn't properly clean user input in its 'msc_stats' shortcode—specifically in the 'title' and 'ready_animation_text' attributes. While this requires an attacker to already have login access to WordPress, it's a serious risk for multi-user sites or those with guest contributor roles.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.4 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-79
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-06-30
NVD description (verbatim)
The MIR blocks and shortcodes plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'title' attribute (and other attributes such as 'ready_animation_text') of the 'msc_stats' shortcode in versions up to, and including, 1.0.0. This is due to insufficient input sanitization and output escaping on user supplied shortcode attributes inside the msc_stats() rendering function. 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.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-8896 is a Stored Cross-Site Scripting (XSS) vulnerability in the MIR blocks and shortcodes plugin affecting versions up to 1.0.0. The flaw resides in the msc_stats() function, which renders shortcode attributes without adequate input sanitization or output escaping. An authenticated attacker with contributor-level or higher privileges can inject arbitrary JavaScript through shortcode parameters like 'title' and 'ready_animation_text'. The injected payload persists in the database as part of page content, executing for all subsequent visitors. The vulnerability is classified as CWE-79 (Improper Neutralization of Input During Web Page Generation).
Business impact
This vulnerability could enable unauthorized modification of page content visible to site visitors, credential theft via malicious scripts, malware distribution, or reputation damage through defaced pages. The risk is elevated in organizations with broad contributor access, managed WordPress services with multiple content creators, or sites handling sensitive information. Multi-user WordPress installations face the greatest exposure, as the barrier to exploitation is simply having an internal account rather than requiring external access.
Affected systems
The MIR blocks and shortcodes plugin version 1.0.0 and earlier is affected. WordPress installations using this plugin with authenticated users (especially those with contributor or higher roles) are at risk. The vulnerability requires authentication, so it does not affect sites where plugin use is present but no user accounts beyond administrator exist. Verify your installed version and review which user roles have access to shortcode editing.
Exploitability
Exploitation requires authentication to WordPress, limiting the attack surface to trusted insiders, compromised accounts, or users with intentionally granted contributor access. An attacker must craft a shortcode with malicious JavaScript in the vulnerable attributes and insert it into a page or post. No complex technical steps or special tools are required; the attack executes automatically when any user views the affected content. The CVSS score of 6.4 reflects the moderate severity: network accessibility and low privilege requirements are offset by the authentication prerequisite and lack of availability impact.
Remediation
Update the MIR blocks and shortcodes plugin to a patched version that implements input sanitization and output escaping for all shortcode attributes. If a patch is not yet available, disable the plugin entirely or restrict contributor-level access to trusted individuals only. Audit existing pages and posts for suspicious shortcode usage, especially any containing script tags or event handlers within shortcode attributes.
Patch guidance
Check the plugin's official repository or vendor advisory for the latest version addressing this vulnerability. Apply updates through the WordPress plugin dashboard (Plugins > Installed Plugins > Update). Test the update on a staging environment before deploying to production. If no patch has been released as of your assessment date, verify the vendor's security advisory for expected availability and consider alternative plugins that offer equivalent functionality with better security practices.
Detection guidance
Search your WordPress database for instances of the 'msc_stats' shortcode containing suspicious attributes (script tags, event handlers, or encoded JavaScript). Review page revision history and audit logs for unexpected changes to pages or posts using this shortcode. Monitor for unusual JavaScript execution in user browsers via network inspection or endpoint detection tools. Implement content security policies (CSP) headers to limit inline script execution, which provides defense-in-depth even if malicious shortcodes are present.
Why prioritize this
Although the CVSS score is moderate (6.4), this vulnerability should be prioritized for sites with multiple content contributors or guest author permissions. The stored nature of the XSS means every visitor to an affected page could be compromised. Organizations handling user data, financial information, or operating public-facing WordPress sites should treat this as a near-term remediation target. Sites with tightly restricted contributor access and administrative oversight of all content can deprioritize slightly, but should still patch promptly.
Risk score, explained
The CVSS 3.1 score of 6.4 (MEDIUM) reflects: network-accessible attack vector (AV:N), low attack complexity (AC:L), low privilege requirement (PR:L), no user interaction needed (UI:N), changed scope (S:C indicating impact beyond the vulnerable component), and partial confidentiality and integrity impact (C:L, I:L) with no availability impact (A:N). The score appropriately penalizes the authentication requirement but credits the persistent nature and cross-scope impact of stored XSS.
Frequently asked questions
Do we need to patch immediately if our WordPress site has no external contributors?
If only administrators with strong access controls manage content, immediate patching is less urgent but should still be completed within your standard patch cycle. However, audit any third-party plugins or backup processes that might create content automatically, and verify no compromised accounts exist with contributor access.
Can this vulnerability be exploited without WordPress admin access?
No. The vulnerability specifically requires authentication with contributor-level access or higher. Attackers must already have a valid login. This is why insider risk and account compromise are the primary concerns.
Will a Web Application Firewall (WAF) protect us?
A WAF with XSS detection rules may block some attempts to inject malicious shortcodes during the edit phase, but a determined attacker with legitimate login credentials could bypass WAF protections. WAF is a helpful layer, but plugin patching is essential.
How do we find all pages affected by this plugin?
Search your WordPress database directly using a MySQL query for posts containing the '[msc_stats' shortcode. Review the post_content table filtered by post_type IN ('page', 'post'). Additionally, check plugin activity logs or use WordPress security plugins that inventory shortcode usage across your site.
This analysis is provided for informational purposes to assist security professionals in risk assessment and remediation planning. It does not constitute professional security advice or a warranty of complete vulnerability coverage. Verify all patch version numbers, availability, and applicability against the official plugin repository and vendor security advisories before implementation. Test all updates in non-production environments. SEC.co does not endorse specific plugins or provide warranty for third-party software security. Organizations remain responsible for their security posture and should conduct independent assessments appropriate to their risk tolerance and environment. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2016-20070MEDIUMPrivilege Escalation & Stored XSS in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2018-25384MEDIUMStored XSS in Wikidforum 2.20 Allows Authenticated Attackers to Inject Malicious Scripts
- CVE-2019-25731MEDIUMStored XSS in Zuz Music 2.1 Contact Form
- CVE-2019-25737MEDIUMStored XSS in Live Chat Unlimited 2.8.3 – Admin Session Compromise
- CVE-2019-25739MEDIUMGigToDo 1.3 Stored XSS Vulnerability in Proposal Descriptions
- CVE-2019-25742MEDIUMStored XSS in Zoner Real Estate WordPress Theme 4.1.1 – Admin Account Compromise Risk
- CVE-2019-25743MEDIUMWordPress Soliloquy Lite 2.5.6 Stored XSS Vulnerability
- CVE-2019-25744MEDIUMWordPress Popup Builder 3.49 Stored XSS Vulnerability – Exploit Prevention & Patch Guide