Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain or register contributor-level WordPress account
-
DeliveryNavigate to post editor with Canvas block-section-heading block
-
ExploitInject XSS payload into 'tag' parameter
-
InstallPublish or save the post
-
C2Victim user loads the injected page
-
ExecuteMalicious script executes in victim's browser context
-
ImpactSteal session cookies or perform actions as victim
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 the attacker to possess a valid WordPress account with at least contributor-level role on the target site - anonymous or unauthenticated access is insufficient. The Canvas plugin must be installed, activated, and running version 2.5.2 or earlier. The attacker must have permission to create or edit posts or pages that use the block-section-heading Gutenberg block and must be able to supply a custom value to its 'tag' parameter. Execution of the injected payload additionally requires a separate victim user (any role, including unauthenticated visitors) to load the affected page. Sites that do not grant contributor or higher roles to untrusted parties, or that have no externally-registered contributor accounts, face negligible exploitation risk regardless of plugin version. |
| Impact | The NVD CVSS 3.1 base score of 6.4 (Medium) is underpinned by a vector of AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N. The scope change (S:C) is the most significant signal here: even though direct confidentiality and integrity impacts are individually rated Low, the cross-context execution against arbitrary site visitors substantially amplifies real-world impact beyond what a '6.4' headline suggests. The PR:L metric confirms exploitation requires at minimum contributor-level WordPress credentials, which meaningfully limits the attacker pool to those with existing authenticated access. No EPSS score was included in the provided intelligence, so numeric exploitation probability cannot be stated. KEV status is absent, meaning no active exploitation has been confirmed by CISA. No standalone POC exploit code is referenced, though Wordfence's disclosure includes direct source-code line references that substantially lower the bar for independent reconstruction. Overall, this is a genuine medium-priority issue for sites that grant contributor access to untrusted or semi-trusted users - not a theoretical high-CVSS noise item. |
| Exploit ScenarioDerived | An attacker registers or compromises a WordPress contributor account on the target site, then creates or edits a post using the Canvas block-section-heading Gutenberg block, setting the 'tag' parameter to a crafted XSS payload such as a script tag or event-handler attribute. Once the post is published or saved, any authenticated or unauthenticated visitor who loads that page triggers the script in their browser, allowing the attacker to silently harvest session cookies or administrator credentials without further interaction. The Wordfence source-code disclosure at lines 13 and 32 of render.php provides sufficient technical detail to construct such a payload without a separate standalone POC. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 13, 2026
Stored Cross-Site Scripting in the Canvas plugin for WordPress (versions ≤ 2.5.2) allows an authenticated attacker holding contributor-level access or above to inject persistent JavaScript via the unsanitized 'tag' parameter in the block-section-heading Gutenberg block. The payload is stored in the database and executes in the browser of any user who subsequently loads the compromised page, enabling session hijacking, credential theft, or malicious redirects at scale. No active exploitation is confirmed (not listed in CISA KEV), but the low privilege bar makes this a realistic threat on multi-author WordPress installations; a fix is available in version 2.5.3.
RemediationAI
Update the Canvas plugin to version 2.5.3 or later immediately. The fix is documented in WordPress plugin repository changeset 3553553, which modifies components/basic-elements/block-section-heading/render.php to apply proper input sanitization and output escaping to the 'tag' parameter (https://plugins.trac.wordpress.org/changeset/3553553/canvas/trunk/components/basic-elements/block-section-heading/render.php). The changeset diff between tags/2.5.2 and tags/2.5.3 confirms the scope of the fix (https://plugins.trac.wordpress.org/changeset?old_path=%2Fcanvas/tags/2.5.2&new_path=%2Fcanvas/tags/2.5.3). If immediate patching is not possible, the most targeted compensating control is to audit and revoke contributor-level (and above) accounts for any untrusted or externally-facing users until the update is applied - this eliminates the PR:L prerequisite entirely. Sites running Wordfence with an active firewall subscription may benefit from virtual patching rules. Restricting the block-section-heading block from contributor-authored content via capability filters is a surgical workaround but requires custom code and carries maintenance overhead.
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 Canvas plugin (CPE: cpe:2.3:a:codesupplyco:canvas:*:*:*:*:*:*:*:*) extends WordPress with custom Gutenberg blocks. The root cause, classified under CWE-79 (Improper Neutralization of Input During Web Page Generation), lies in the block-section-heading render component: the 'tag' parameter accepted via the block attribute is neither sanitized on input nor escaped on output before being rendered into the HTML DOM. The vulnerable code paths are specifically identified in components/basic-elements/block-section-heading/render.php (lines 13 and 32) and the block registration in gutenberg/custom-blocks/index.php (line 798). Because the payload is stored server-side upon post save rather than reflected from a URL, it persists and fires on every page load without further attacker interaction - the hallmark of the Stored XSS variant.
Know when Canvas 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 credentials required (PR:L); stored payload still requires a victim to load the page (UI:R); script executes cross-context in visitor browsers (S:C).
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Canvas plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'tag' parameter in all versions up to, and including, 2.5.2 due to insufficient input sanitization and output escaping. 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.
A buffer overflow is present in canvas version <= 1.6.9, which could lead to a Denial of Service or execution of arbitra
cnvs.io Canvas 3.3.0 has XSS in the title and content fields of a "Posts > Add New" action, and during creation of new t
EUVD-2026-36648
GHSA-v675-74rr-5jfh
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB