Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister/authenticate as subscriber
-
DeliveryPost comment with HTML-comment payload
-
ExploitSet display_name to matching simple_html_dom noise key
-
ExecutionPayloads recombine during output-buffering pass
-
ImpactStored script executes in victim 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 | Exploitation requires an authenticated account with at least subscriber-level privileges on the target site (PR:L) and the plugin's default-on output-buffering/page-rewrite feature being active (which it is by default per the description). The attacker must supply two coordinated inputs: an HTML-comment payload stored verbatim in a comment body (preserved by WordPress comment kses) AND a matching simple_html_dom 'noise key' placed in the attacker's profile display_name, which survives esc_attr(); substitution only occurs after both filters run during the plugin's buffering pass over the rendered page. Limiting factors: authentication is mandatory, the dual-input coordination raises attack complexity (AC:H), and the payload only fires when another user accesses the injected page. These conditions make exploitation deliberate and targeted rather than opportunistic or automatable. |
| Impact | This is a genuinely low-priority issue despite the CRITICAL CWE class (CWE-79 Stored XSS). The provided CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N, base 4.9 Medium) is internally consistent with the description and understates nothing: exploitation is network-reachable but requires authentication (PR:L, subscriber-level) and has high attack complexity (AC:H), which is well justified because the description requires two coordinated, precisely-crafted inputs from the same attacker (an HTML-comment payload in a comment body plus a matching simple_html_dom noise key in display_name) that must survive two separate WordPress filters and then be recombined during the plugin's output-buffering pass. No EPSS score was provided, there is no CISA KEV listing, and no public exploit code is referenced - so no exploitation-probability signal elevates this above its base score. The SSVC framework is not supplied in the input. The signals are mutually consistent rather than conflicting: a Medium-severity, high-complexity, authenticated stored XSS reported by Wordfence with a vendor patch (changeset 3737485) available. The only mild caveat is that 'subscriber-level and above' plus the contrived two-input mechanism means real-world exploitation is unlikely to be opportunistic or automatable. |
| Exploit ScenarioDerived | An attacker who has registered a subscriber account on a WordPress site running Gallery Custom Links (≤2.3.3) posts a comment containing an HTML-comment payload and sets their profile display_name to a matching simple_html_dom noise key. When the plugin's default output-buffering pass rewrites the fully rendered page, the two fragments are recombined into executable script that runs in the browser of any user who views the affected page. No public exploit code is identified at time of analysis, and the two-input coordination plus AC:H make this a deliberate, non-trivial attack rather than a drive-by. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Stored cross-site scripting in the Gallery Custom Links WordPress plugin (all versions up to and including 2.3.3) lets an authenticated attacker with subscriber-level access or higher inject arbitrary script that executes in the browser of anyone viewing the affected page. Exploitation is not opportunistic: it requires two coordinated attacker-supplied inputs - an HTML-comment payload stored in a comment body (preserved by WordPress comment kses) plus a matching simple_html_dom 'noise key' in the attacker's profile display_name that survives esc_attr() - both of which must be present before the plugin's default-on output-buffering pass rewrites the rendered page (AC:H, PR:L, UI:N, scope-changed per CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N). There is no evidence of active exploitation (not in CISA KEV) and no public exploit code identified at time of analysis, and the low CVSS base score of 4.9 reflects genuine low priority despite the CWE-79 class.
RemediationAI
No patched release version is confirmed in the available data, but the vendor has committed a fix for this issue in Trac changeset 3737485 (https://plugins.trac.wordpress.org/changeset/3737485/gallery-custom-links), which touches the plugin core and the bundled simple_html_dom library; the recommended action is to update Gallery Custom Links to the first release that incorporates changeset 3737485 (check the plugin changelog before upgrading), so treat this as 'upstream fix available (commit); released patched version not independently confirmed' until a tagged version is verified. If upgrading is not immediately possible, the most effective compensating control is to disable the plugin's default-on output-buffering/page-rewrite feature, accepting the loss of automatic custom-link rewriting on gallery pages; additionally, restrict or moderate comment posting and subscriber self-registration (this removes the attacker's required inputs but may break legitimate community commenting), and consider disabling comments on pages where gallery custom links render. A WAF rule that flags script-bearing HTML comments combined with unusual display_name values can reduce exposure but is evasive and not a substitute for the fix. Monitor the vendor advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/f37a0db8-b13c-4d9f-bc6f-88576f9e3862?source=cve for the patched version number, and audit existing comments and user display names for injected payloads as a cleanup step after remediation.
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 affected component is the Gallery Custom Links WordPress plugin by tigroumeow (CPE cpe:2.3:a:tigroumeow:gallery_custom_links:*:*:*:*:*:*:*:*), which bundles the third-party PHP library kub-at/php-simple-html-dom-parser. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation, i.e. Stored Cross-Site Scripting): the plugin performs its string substitution on already-sanitized and escaped page output rather than sanitizing input at the boundary. WordPress's comment kses filter preserves certain HTML constructs verbatim in comment bodies, and esc_attr() leaves the display_name value intact; the plugin then runs a default-on output-buffering/page-rewrite pass over the full rendered page (referenced code in classes/core.php at lines 103 and 215, and in simple_html_dom.php at lines 502, 2112 and 2207), at which point the attacker's two coordinated fragments are combined after the platform's filters have already run and the resulting script markup is emitted into the page. Because the sink operates post-sanitization, ordinary WordPress escaping does not neutralize the payload - the flaw is architectural to the plugin's rewriting feature rather than a single missing escape call.
Know when Gallery Custom Links 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:H/PR:L/UI:N/S:C/C:L/I:L/A:N
Network-reachable stored XSS needing a subscriber account (PR:L) and two precisely-crafted, filter-surviving inputs (AC:H); script executes in other users' context so scope changes (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Gallery Custom Links plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'display_name (profile.php) + comment (wp-comments-post.php)' parameter in all versions up to, and including, 2.3.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The exploit requires two coordinated inputs from the same authenticated attacker: an HTML comment payload stored in a comment body (preserved verbatim by WordPress comment kses) and a matching simple_html_dom noise key placed in the attacker's display_name (which survives esc_attr() intact), with substitution occurring after both filters have run during the plugin's default-on output-buffering pass over the full rendered 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.
EUVD-2026-100914
GHSA-cq73-4rhf-ggqc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB