/

CVE-2026-109193

Severity:

HIGH RISK

(7.2)

Stored XSS (CWE-79) in HivePress WP Directory Plugin

CVE-2026-109193

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Arbitrary script execution in users' browsers

Severity:

HIGH RISK

(7.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

HivePress for WordPress contains a stored cross-site scripting vulnerability in custom user attribute handling because submitted values are not sufficiently sanitized and escaped in every output context. An unauthenticated attacker may inject script content that executes when users visit an affected page, provided an administrator has configured a custom attribute template that places the value inside an href, src, or style attribute.

HivePress for WordPress contains a stored cross-site scripting vulnerability in custom user attribute handling because submitted values are not sufficiently sanitized and escaped in every output context. An unauthenticated attacker may inject script content that executes when users visit an affected page, provided an administrator has configured a custom attribute template that places the value inside an href, src, or style attribute.

Affected context

The issue occurs in WordPress sites using the HivePress Business Directory, Listings & Classified Ads Plugin with custom user attributes. Exploitation depends on an administrator configuring an attribute display_format template that inserts the %value% token into an href, src, or style attribute context, which is a documented feature configuration. The risk is greater when attacker-controlled attribute values are displayed on pages accessible to other users.

The issue occurs in WordPress sites using the HivePress Business Directory, Listings & Classified Ads Plugin with custom user attributes. Exploitation depends on an administrator configuring an attribute display_format template that inserts the %value% token into an href, src, or style attribute context, which is a documented feature configuration. The risk is greater when attacker-controlled attribute values are displayed on pages accessible to other users.

Exploit preconditions

  • Attack surface: HivePress custom user attribute input and rendered directory or listing pages
  • Required access: The attacker may be unauthenticated, but must be able to submit or influence a value processed as the custom attribute
  • Trigger point: A visitor loads a page where the stored attribute value is rendered through the affected display template
  • Configuration requirement: An administrator has configured a custom user attribute with the %value% token inside an href, src, or style attribute
  • Why exploitation is possible: Insufficient sanitization and context-aware output escaping allow stored input to be interpreted as browser-executable markup or script
  • Attack surface: HivePress custom user attribute input and rendered directory or listing pages
  • Required access: The attacker may be unauthenticated, but must be able to submit or influence a value processed as the custom attribute
  • Trigger point: A visitor loads a page where the stored attribute value is rendered through the affected display template
  • Configuration requirement: An administrator has configured a custom user attribute with the %value% token inside an href, src, or style attribute
  • Why exploitation is possible: Insufficient sanitization and context-aware output escaping allow stored input to be interpreted as browser-executable markup or script

Why this happens

The underlying bug is a failure to treat custom attribute values as untrusted data at both input and output boundaries. Values are stored and later interpolated into HTML attribute contexts without applying escaping appropriate to the specific context, allowing attacker-controlled content to alter page behavior. This maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

The underlying bug is a failure to treat custom attribute values as untrusted data at both input and output boundaries. Values are stored and later interpolated into HTML attribute contexts without applying escaping appropriate to the specific context, allowing attacker-controlled content to alter page behavior. This maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

Potential impact

  • An attacker may execute arbitrary script in a visitor's browser
  • Session-related information may be exposed depending on browser and application protections
  • Page content or links may be modified for other users
  • Users could be redirected to attacker-controlled destinations
  • Administrative actions could be attempted when a privileged user views an affected page
  • An attacker may execute arbitrary script in a visitor's browser
  • Session-related information may be exposed depending on browser and application protections
  • Page content or links may be modified for other users
  • Users could be redirected to attacker-controlled destinations
  • Administrative actions could be attempted when a privileged user views an affected page

General mitigation guidance

Mitigation generally focuses on enforcing context-aware trust boundaries for custom attribute values.

Common defensive patterns include:

  • Sanitize and validate values according to the intended attribute type and allowed scheme
  • Apply output escaping appropriate to HTML, URL, CSS, and other rendering contexts
  • Avoid interpolating unrestricted user input into href, src, or style attributes
  • Use allowlists for permitted protocols, CSS properties, and attribute formats
  • Keep custom attribute display templates restricted to safe, predefined patterns
  • Apply least privilege to administrative configuration and content-management roles
  • Use browser protections such as a restrictive Content Security Policy as defense in depth

These controls reduce the chance that stored values are interpreted as executable content.

Mitigation generally focuses on enforcing context-aware trust boundaries for custom attribute values.

Common defensive patterns include:

  • Sanitize and validate values according to the intended attribute type and allowed scheme
  • Apply output escaping appropriate to HTML, URL, CSS, and other rendering contexts
  • Avoid interpolating unrestricted user input into href, src, or style attributes
  • Use allowlists for permitted protocols, CSS properties, and attribute formats
  • Keep custom attribute display templates restricted to safe, predefined patterns
  • Apply least privilege to administrative configuration and content-management roles
  • Use browser protections such as a restrictive Content Security Policy as defense in depth

These controls reduce the chance that stored values are interpreted as executable content.

How teams detect issues like this

Organizations can identify similar issues through:

  • Static analysis rules for unsanitized values reaching HTML, URL, CSS, or attribute output functions
  • Code review checks for template interpolation involving user-controlled custom fields
  • Tests that render attribute values containing characters and schemes requiring contextual escaping
  • Inventory and review of display templates that place dynamic tokens inside href, src, or style contexts
  • Policy enforcement requiring allowlists and context-specific escaping for user-generated content

Automated security testing and code review tools may help detect common stored XSS data flows, but should be supplemented with manual review of plugin configuration behavior.

Organizations can identify similar issues through:

  • Static analysis rules for unsanitized values reaching HTML, URL, CSS, or attribute output functions
  • Code review checks for template interpolation involving user-controlled custom fields
  • Tests that render attribute values containing characters and schemes requiring contextual escaping
  • Inventory and review of display templates that place dynamic tokens inside href, src, or style contexts
  • Policy enforcement requiring allowlists and context-specific escaping for user-generated content

Automated security testing and code review tools may help detect common stored XSS data flows, but should be supplemented with manual review of plugin configuration behavior.

Sources

SourceLink
github.comgithub.com/hivepress/hivepress/pull/375/changes/60df383473ff4b7a85f24b06895ec236edf20c9d
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/hivepress/tags/1.7.32/includes/components/class-attribute.php#L1199
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/hivepress/tags/1.7.32/includes/components/class-attribute.php#L1293
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/hivepress/tags/1.7.32/includes/controllers/class-user.php#L292
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/hivepress/tags/1.7.32/includes/fields/class-field.php#L572
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/hivepress/tags/1.7.32/includes/fields/class-text.php#L197
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/hivepress/tags/1.7.32/includes/fields/class-text.php#L214
plugins.trac.wordpress.orgplugins.trac.wordpress.org/changeset/3747070/hivepress/trunk/includes/fields/class-field.php
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/d2c3752b-0d2f-402d-bdbf-fb3fd76cf558?source=cve

Frequently asked

questions

It can be triggered through web-accessible functionality by an unauthenticated attacker when the required custom attribute configuration is present. The stored value executes when another user views an affected page.

No administrator access is required to trigger the issue according to the vulnerability description, but an administrator must have configured the relevant custom attribute display template for the vulnerable output context.

Treat custom attribute values as untrusted, validate them against an allowlist, and apply context-aware escaping before rendering them in HTML, URL, or CSS attribute contexts.

Restrict dynamic template contexts, test stored values in every supported rendering location, review custom field configurations, and enforce secure output-encoding policies during development.

It can be triggered through web-accessible functionality by an unauthenticated attacker when the required custom attribute configuration is present. The stored value executes when another user views an affected page.

No administrator access is required to trigger the issue according to the vulnerability description, but an administrator must have configured the relevant custom attribute display template for the vulnerable output context.

Treat custom attribute values as untrusted, validate them against an allowlist, and apply context-aware escaping before rendering them in HTML, URL, or CSS attribute contexts.

Restrict dynamic template contexts, test stored values in every supported rendering location, review custom field configurations, and enforce secure output-encoding policies during development.

Find out what's already
exploitable in your codebase.