/

CVE-2026-111122

Severity:

HIGH RISK

(7.2)

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

CVE-2026-111122

Deferred

Vulnerability type

Category:

Stored DOM-Based Cross-Site Scripting

CWE:

CWE-79

Impact:

Client-Side Code Execution and Administrator Session Compromise

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

The SiteOrigin CSS WordPress plugin contains a stored DOM-based cross-site scripting vulnerability in its href handling. An unauthenticated attacker may inject script content through a malicious comment, which can execute in an administrator's browser when the comment is approved and the link is opened in the Visual Inspector.

The SiteOrigin CSS WordPress plugin contains a stored DOM-based cross-site scripting vulnerability in its href handling. An unauthenticated attacker may inject script content through a malicious comment, which can execute in an administrator's browser when the comment is approved and the link is opened in the Visual Inspector.

Affected context

This issue affects WordPress sites using the SiteOrigin CSS plugin through version 1.6.7 where comment content or link attributes are processed without sufficient sanitization and later inserted into a browser DOM context. Exploitation depends on the malicious comment being approved and an administrator interacting with the injected anchor while using the Visual Inspector.

This issue affects WordPress sites using the SiteOrigin CSS plugin through version 1.6.7 where comment content or link attributes are processed without sufficient sanitization and later inserted into a browser DOM context. Exploitation depends on the malicious comment being approved and an administrator interacting with the injected anchor while using the Visual Inspector.

Exploit preconditions

  • Attack surface: WordPress comment handling and the SiteOrigin CSS Visual Inspector
  • Required access: No authenticated account is necessarily required to submit the malicious comment, but the comment must pass the site's approval workflow
  • Trigger point: An administrator opens the Visual Inspector and clicks the affected anchor link
  • Why exploitation is possible: Insufficient input sanitization and output escaping allow attacker-controlled href data to reach a browser-executable DOM context
  • Attack surface: WordPress comment handling and the SiteOrigin CSS Visual Inspector
  • Required access: No authenticated account is necessarily required to submit the malicious comment, but the comment must pass the site's approval workflow
  • Trigger point: An administrator opens the Visual Inspector and clicks the affected anchor link
  • Why exploitation is possible: Insufficient input sanitization and output escaping allow attacker-controlled href data to reach a browser-executable DOM context

Why this happens

The vulnerability results from treating attacker-controlled link data as trusted content when it is stored and later inserted into the document object model. Insufficient sanitization and context-inappropriate output escaping allow a crafted value to be interpreted as script-capable browser content rather than as inert link data. This maps to CWE-79: Improper Neutralization of Input During Web Page Generation, specifically a stored DOM-based cross-site scripting pattern.

The vulnerability results from treating attacker-controlled link data as trusted content when it is stored and later inserted into the document object model. Insufficient sanitization and context-inappropriate output escaping allow a crafted value to be interpreted as script-capable browser content rather than as inert link data. This maps to CWE-79: Improper Neutralization of Input During Web Page Generation, specifically a stored DOM-based cross-site scripting pattern.

Potential impact

  • Arbitrary script execution in an administrator's browser session
  • Theft of accessible browser-side data or security tokens
  • Unauthorized administrative actions performed through the victim's session
  • Modification of plugin or site configuration
  • Further compromise of site content or other administrator-accessible resources
  • Arbitrary script execution in an administrator's browser session
  • Theft of accessible browser-side data or security tokens
  • Unauthorized administrative actions performed through the victim's session
  • Modification of plugin or site configuration
  • Further compromise of site content or other administrator-accessible resources

General mitigation guidance

Mitigation generally focuses on enforcing context-aware handling of untrusted comment and link data.

Common defensive patterns include:

  • Applying allowlist-based validation for URL schemes and permitted link formats
  • Encoding untrusted values for their specific HTML and DOM insertion context
  • Avoiding unsafe DOM sinks and using safe property-based APIs for link assignment
  • Preserving comment moderation and limiting privileged interfaces that render untrusted content
  • Applying least privilege to administrator accounts and reducing unnecessary session capabilities
  • Treating stored user-generated content as untrusted at every rendering boundary

Mitigation generally focuses on enforcing context-aware handling of untrusted comment and link data.

Common defensive patterns include:

  • Applying allowlist-based validation for URL schemes and permitted link formats
  • Encoding untrusted values for their specific HTML and DOM insertion context
  • Avoiding unsafe DOM sinks and using safe property-based APIs for link assignment
  • Preserving comment moderation and limiting privileged interfaces that render untrusted content
  • Applying least privilege to administrator accounts and reducing unnecessary session capabilities
  • Treating stored user-generated content as untrusted at every rendering boundary

How teams detect issues like this

Organizations can identify similar issues through:

  • Static analysis rules for unsafe DOM sinks, dynamic URL assignment, and missing context-aware escaping
  • Code review checks for user-controlled comment fields reaching HTML attributes or browser DOM APIs
  • Tests using benign markers to verify that stored input remains inert across moderation and administrator workflows
  • Content Security Policy monitoring for unexpected script execution or violation reports
  • Policy enforcement requiring URL scheme allowlists and security review of code that renders user-generated content
  • Automated security review tools that flag unsanitized data flows from comments into client-side rendering logic

Organizations can identify similar issues through:

  • Static analysis rules for unsafe DOM sinks, dynamic URL assignment, and missing context-aware escaping
  • Code review checks for user-controlled comment fields reaching HTML attributes or browser DOM APIs
  • Tests using benign markers to verify that stored input remains inert across moderation and administrator workflows
  • Content Security Policy monitoring for unexpected script execution or violation reports
  • Policy enforcement requiring URL scheme allowlists and security review of code that renders user-generated content
  • Automated security review tools that flag unsanitized data flows from comments into client-side rendering logic

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.7/js/inspector.js#L276
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/so-css/tags/1.6.7/js/inspector.js#L280
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/97742c7c-4957-4597-9cc0-c9594e8c8482?source=cve

Frequently asked

questions

Yes. Submission of the malicious comment may not require authentication, but the site's moderation process must approve it before the stored content can reach the relevant administrator workflow.

The attacker does not necessarily need administrator access. An administrator must subsequently open the Visual Inspector and click the affected link for the browser-side script execution to occur.

Treat comment and link values as untrusted, validate URL schemes with an allowlist, and apply context-aware escaping or safe DOM APIs before rendering them.

Combine secure rendering patterns with code review, static analysis, Content Security Policy monitoring, moderation controls, and regression tests covering stored user-generated content in privileged interfaces.

Yes. Submission of the malicious comment may not require authentication, but the site's moderation process must approve it before the stored content can reach the relevant administrator workflow.

The attacker does not necessarily need administrator access. An administrator must subsequently open the Visual Inspector and click the affected link for the browser-side script execution to occur.

Treat comment and link values as untrusted, validate URL schemes with an allowlist, and apply context-aware escaping or safe DOM APIs before rendering them.

Combine secure rendering patterns with code review, static analysis, Content Security Policy monitoring, moderation controls, and regression tests covering stored user-generated content in privileged interfaces.

Find out what's already
exploitable in your codebase.