Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister Subscriber account on site
-
DeliveryStore double-quote payload in display_name
-
ExploitPayload breaks out of alt attribute
-
ExecutionVictim loads archive title block
-
ImpactArbitrary script executes in browser
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 Subscriber-level (or higher) account, so the site must have open user registration or allow attacker-controlled low-privilege accounts; the attacker sets a double-quote-bearing value in their display_name via /wp-admin/profile.php, relying on WordPress core's pre_user_display_name filter using ENT_NOQUOTES (encodes &, <, > but not double-quotes). Exploitation further requires the site to render the PostX Archive Title block, where display_name is output into the alt="" attribute at Archive_Title.php:144 without sufficient escaping. Limiting factors: authentication is needed (Subscriber), so it is not truly unauthenticated despite the stated PR:N; sites that disable registration or do not use the Archive Title block are not exploitable in this path. |
| Impact | This is a moderate-priority stored XSS (CWE-79) in a popular WordPress plugin, but the signals conflict in a way defenders must reconcile. The input CVSS of 7.2 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N) encodes PR:N (unauthenticated), yet the description itself states the payload is stored by 'a Subscriber-level user' via /wp-admin/profile.php - meaning an authenticated Subscriber account is actually required. This is a direct contradiction: CVSS vector says unauthenticated but the described mechanism requires authentication, so the true privilege requirement is PR:L, not PR:N - verify with Wordfence. No EPSS score, no CISA KEV listing, and no public exploit code are present in the provided data, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The scope-change (S:C) and network vector are legitimate because the stored script executes in the browser of any visitor to the rendered archive page, crossing a trust boundary from a low-privileged user to other users/admins. Net assessment: a real but not emergency issue - exploitation depends on open user registration and use of the PostX Archive Title block, which lowers real-world risk below what the 7.2 base score alone suggests. |
| Exploit ScenarioDerived | An attacker registers a free Subscriber account on a site where registration is open, then edits their profile at /wp-admin/profile.php to set a display_name containing a double-quote payload that WordPress's pre_user_display_name filter (ENT_NOQUOTES) fails to encode. When any visitor or administrator loads a page rendering the PostX Archive Title block, the stored payload breaks out of the alt="" attribute at Archive_Title.php:144 and executes arbitrary JavaScript in their session. No public exploit code is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Stored cross-site scripting in the Post Grid Gutenberg Blocks - PostX WordPress plugin, affecting all versions up to and including 5.1.0, allows an attacker holding a Subscriber-level account to plant JavaScript in the user display_name field that executes for any visitor viewing a page where the plugin renders its Archive Title block. The bypass works because WordPress core's pre_user_display_name filter uses ENT_NOQUOTES, encoding ampersands, angle brackets and greater-than signs but leaving double-quotes intact, so a crafted display_name breaks out of the alt="" attribute at Archive_Title.php:144. Reported by Wordfence with a CVSS v3.1 base score of 7.2; no public exploit identified at time of analysis, though the published CVSS vector claims PR:N while our assessment holds PR:L, since the attack requires an authenticated Subscriber-or-higher account created through open registration or an attacker-controlled low-privilege user.
RemediationAI
Upgrade PostX past 5.1.0 once a patched release is published; the supplied references include an upstream trunk changeset for Archive_Title.php (https://plugins.trac.wordpress.org/changeset/3727209/ultimate-post/trunk/addons/builder/blocks/Archive_Title.php), which indicates an upstream fix available (PR/commit) but does not by itself confirm a tagged, released patched version, so administrators should verify the plugin's changelog or the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/39472e87-174c-4abf-bc83-fed0939440af?source=cve before assuming a given version is safe. Where upgrading is not immediately possible, the tightest compensating control is to stop the sink from being reachable: remove or replace any page or template that uses the PostX Archive Title block, accepting the loss of that archive heading styling, since without that block the double-quote display_name has no attribute context to escape. A second control is to remove the attacker's ability to plant the payload at all by disabling open user registration and auditing/deleting untrusted Subscriber accounts, which carries the trade-off of blocking legitimate self-service signups and is ineffective on membership or multi-author sites where low-privilege accounts are the norm. Sites that must keep both the block and open registration can put a WAF or plugin-level guard in front of the profile update endpoint (and /wp-admin/profile.php generally) that rejects or strips double-quote characters from the display_name field after core's pre_user_display_name filter runs, understanding that this deviates from core behavior and can mangle legitimate names containing quotes. Finally, treat any historic display_name values as potentially tainted: scan wp_users.display_name (and the usermeta copies) for quote characters followed by markup and sanitize them, because patching the plugin does not retroactively clean already-stored payloads.
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 root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically the context-confusion class of stored XSS where a value is escaped for one HTML context but emitted into another. The PostX plugin (WordPress slug ultimate-post) ships Gutenberg block renderers, including an Archive Title block whose code at addons/builder/blocks/Archive_Title.php outputs a user's display_name directly into an alt="" attribute (line 144, with related handling around line 98) without attribute-aware escaping. WordPress core does sanitize the display_name on save through the pre_user_display_name filter, but that filter is called with ENT_NOQUOTES, which encodes &, < and > while permitting the double-quote character to survive unmodified - the quote is harmless in a text node but is the single character required to terminate an unquoted or double-quoted HTML attribute. The chain therefore is: low-privileged user sets display_name containing a double-quote plus script/tag payload via /wp-admin/profile.php, core stores it, and the plugin's block markup later echoes it into alt="..." where the injected quote closes the attribute and the remaining markup is parsed as new HTML elements or event handlers. Because the payload is persisted in user metadata rather than a per-request parameter, it executes for every page view that renders the block, giving the site's own origin and its cookies and nonces to the attacker's script in the victim's browser. The relevant CPE (cpe:2.3:a:wpxpo:post_grid_gutenberg_blocks_-_postx) confirms the vendor as wpxpo and the package as the PostX plugin.
Know when PHP 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:N/UI:N/S:C/C:L/I:L/A:N
PR:L because the description requires a Subscriber account to store the payload (contradicting the input PR:N); S:C as stored script executes in other users' browsers; C:L/I:L/A:N for typical XSS impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Post Grid Gutenberg Blocks - PostX plugin for WordPress is vulnerable to Stored Cross-Site Scripting via display_name User Field in all versions up to, and including, 5.1.0 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. WordPress core's pre_user_display_name filter encodes &, <, and > but leaves double-quotes intact (ENT_NOQUOTES), allowing a Subscriber-level user to store a double-quote in their display_name via /wp-admin/profile.php that subsequently breaks out of the alt="" attribute at Archive_Title.php:144.
Executive ViewAI
WordPress sites running the PostX (Post Grid Gutenberg Blocks) plugin versions up to and including 5.1.0 are exposed to stored cross-site scripting that can execute for visitors viewing pages that render the Archive Title block. A low-privilege Subscriber account is sufficient to inject the malicious payload, so sites with open registration or weak account controls face elevated risk of visitor session theft, malicious redirects, or content manipulation. No public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis, making this a live operational and reputational risk to public-facing WordPress properties.
No vendor-released patch identified at time of analysis. Interim mitigations include disabling or removing the PostX plugin until fixed, restricting open registration and low-privilege account creation, sanitizing or validating display_name profile fields, deploying WAF rules to block XSS payloads and double-quote breakout attempts, and monitoring logs for suspicious profile changes or Archive Title block access.
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.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-96224
GHSA-8pf3-qx3w-w4jg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB