/

CVE-2026-107764

Severity:

HIGH RISK

(7.2)

Stored XSS (CWE-79) in SiteOrigin CSS WordPress Plugin

CVE-2026-107764

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Arbitrary JavaScript execution in a victim's browser

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

A stored DOM-based cross-site scripting vulnerability in the SiteOrigin CSS WordPress plugin allows unauthenticated attackers to place a crafted script-bearing value in a comment Website field. When a user views a page containing the stored value, browser-side decoding may turn it into executable markup because insufficient sanitization and output escaping allow the payload to reach a DOM sink.

A stored DOM-based cross-site scripting vulnerability in the SiteOrigin CSS WordPress plugin allows unauthenticated attackers to place a crafted script-bearing value in a comment Website field. When a user views a page containing the stored value, browser-side decoding may turn it into executable markup because insufficient sanitization and output escaping allow the payload to reach a DOM sink.

Affected context

The issue affects WordPress sites using the SiteOrigin CSS plugin in versions up to and including 1.6.7 where comment author website values are accepted, stored, and later rendered. The risk is higher when an unauthenticated visitor can submit or influence a comment value and a user subsequently accesses a page containing the stored content.

The issue affects WordPress sites using the SiteOrigin CSS plugin in versions up to and including 1.6.7 where comment author website values are accepted, stored, and later rendered. The risk is higher when an unauthenticated visitor can submit or influence a comment value and a user subsequently accesses a page containing the stored content.

Exploit preconditions

  • Attack surface: WordPress comment submission and rendering flows
  • Required access: Ability to submit a comment or otherwise provide the url (comment_author_url) value; authentication is not necessarily required
  • Trigger point: A victim views a page where the stored value is rendered and processed by the browser
  • Why exploitation is possible: Entity-encoded characters can survive server-side URL escaping, then be decoded by the browser and interpreted as executable markup at a DOM sink
  • Attack surface: WordPress comment submission and rendering flows
  • Required access: Ability to submit a comment or otherwise provide the url (comment_author_url) value; authentication is not necessarily required
  • Trigger point: A victim views a page where the stored value is rendered and processed by the browser
  • Why exploitation is possible: Entity-encoded characters can survive server-side URL escaping, then be decoded by the browser and interpreted as executable markup at a DOM sink

Why this happens

The vulnerability results from insufficient input sanitization and output escaping for a user-controlled comment website value. The processing path preserves entity-encoded characters through esc_url(), allowing browser-side decoding to change data into markup when it reaches a client-side DOM context. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

The vulnerability results from insufficient input sanitization and output escaping for a user-controlled comment website value. The processing path preserves entity-encoded characters through esc_url(), allowing browser-side decoding to change data into markup when it reaches a client-side DOM context. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

Potential impact

  • A victim's browser may execute attacker-controlled JavaScript
  • Session-related data or page content could be exposed, subject to browser and application protections
  • Attackers could perform actions in the victim's authenticated context
  • Site content, forms, or user interactions could be manipulated
  • The vulnerability could support phishing or further client-side compromise
  • A victim's browser may execute attacker-controlled JavaScript
  • Session-related data or page content could be exposed, subject to browser and application protections
  • Attackers could perform actions in the victim's authenticated context
  • Site content, forms, or user interactions could be manipulated
  • The vulnerability could support phishing or further client-side compromise

General mitigation guidance

Mitigation generally focuses on treating comment metadata as untrusted at every processing stage and ensuring output is safe for its final context.

Common defensive patterns include:

  • Apply context-appropriate allowlisting and sanitization to URL values before storage
  • Encode output for the exact HTML or DOM context in which it is inserted
  • Avoid placing untrusted values into HTML or DOM sinks that interpret markup
  • Preserve safe-by-default browser and content security policies as defense in depth
  • Limit comment capabilities and administrative privileges where practical
  • Keep security validation separate from URL normalization so encoded characters cannot bypass it

Mitigation generally focuses on treating comment metadata as untrusted at every processing stage and ensuring output is safe for its final context.

Common defensive patterns include:

  • Apply context-appropriate allowlisting and sanitization to URL values before storage
  • Encode output for the exact HTML or DOM context in which it is inserted
  • Avoid placing untrusted values into HTML or DOM sinks that interpret markup
  • Preserve safe-by-default browser and content security policies as defense in depth
  • Limit comment capabilities and administrative privileges where practical
  • Keep security validation separate from URL normalization so encoded characters cannot bypass it

How teams detect issues like this

Organizations can identify similar issues through:

  • Static analysis for user-controlled data flowing from comment fields into HTML or DOM sinks
  • Code review checks for URL escaping being used as a substitute for context-specific output encoding
  • Tests using encoded delimiters and browser-based rendering to verify that values remain inert
  • Policy enforcement requiring trusted-type or safe DOM APIs where supported
  • Monitoring for unexpected script-like content in comment metadata and rendered responses

Automated security scanners and browser-focused testing tools may help identify stored XSS paths, but findings should be confirmed against the actual rendering context.

Organizations can identify similar issues through:

  • Static analysis for user-controlled data flowing from comment fields into HTML or DOM sinks
  • Code review checks for URL escaping being used as a substitute for context-specific output encoding
  • Tests using encoded delimiters and browser-based rendering to verify that values remain inert
  • Policy enforcement requiring trusted-type or safe DOM APIs where supported
  • Monitoring for unexpected script-like content in comment metadata and rendered responses

Automated security scanners and browser-focused testing tools may help identify stored XSS paths, but findings should be confirmed against the actual rendering context.

Sources

SourceLink
github.comgithub.com/siteorigin/so-css/compare/1.6.7...1.6.8
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/so-css/tags/1.6.6/js/inspector.js#L280
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/so-css/tags/1.6.6/so-css.php#L69
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/so-css/tags/1.6.6/so-css.php#L899
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/b0ff9652-1b45-43d6-949a-92bfeaee96d3?source=cve

Frequently asked

questions

Yes. An attacker may be able to submit the crafted comment value remotely without authentication, although successful impact requires a user to access a page where the value is stored and rendered.

No. The described attack path uses an unauthenticated comment field, but site configuration and comment moderation controls may affect whether the value is stored and displayed.

Treat the value as untrusted, validate and sanitize it according to its intended URL purpose, and apply context-specific output encoding without placing it into an executable DOM context.

Combine allowlisted input handling, context-aware output encoding, safe DOM APIs, security-focused code review, and automated tests that include entity-encoded and browser-decoded input.

Yes. An attacker may be able to submit the crafted comment value remotely without authentication, although successful impact requires a user to access a page where the value is stored and rendered.

No. The described attack path uses an unauthenticated comment field, but site configuration and comment moderation controls may affect whether the value is stored and displayed.

Treat the value as untrusted, validate and sanitize it according to its intended URL purpose, and apply context-specific output encoding without placing it into an executable DOM context.

Combine allowlisted input handling, context-aware output encoding, safe DOM APIs, security-focused code review, and automated tests that include entity-encoded and browser-decoded input.

Find out what's already
exploitable in your codebase.