Skip to main content

Gallery Custom Links EUVDEUVD-2026-100914

| CVE-2026-107757 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-14 Wordfence GHSA-cq73-4rhf-ggqc
4.9
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register/authenticate as subscriber
  2. Delivery
    Post comment with HTML-comment payload
  3. Exploit
    Set display_name to matching simple_html_dom noise key
  4. Execution
    Payloads recombine during output-buffering pass
  5. Impact
    Stored 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Gallery Custom Links 0 ≤2.3.3

Affected Packages

euvd gallery_custom_links no fix

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

Vendor (Wordfence) PRIMARY 4.9 MEDIUM
AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 4.9 MEDIUM

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

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

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche WordPress gallery-links plugin, limited install base
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy