/

CVE-2026-109960

Severity:

HIGH RISK

(7.7)

Stored XSS (CWE-79) in Froxlor Customer Overview Page

CVE-2026-109960

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Administrative Account Compromise and Server Configuration Changes

Severity:

HIGH RISK

(7.7)

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

Froxlor contains a stored cross-site scripting vulnerability that allows an authenticated customer to save malicious HTML or JavaScript in a theme value. When an administrator views the customer overview with the Theme column enabled, the script may execute in the administrator's browser and could be used to perform privileged actions.

Froxlor contains a stored cross-site scripting vulnerability that allows an authenticated customer to save malicious HTML or JavaScript in a theme value. When an administrator views the customer overview with the Theme column enabled, the script may execute in the administrator's browser and could be used to perform privileged actions.

Affected context

The issue may affect Froxlor deployments where authenticated customers can set or modify theme-related values through customer_index.php, and administrators later view those values in the customer overview. Risk increases when the Theme column is enabled and the displayed value is rendered without adequate output encoding or contextual sanitization.

The issue may affect Froxlor deployments where authenticated customers can set or modify theme-related values through customer_index.php, and administrators later view those values in the customer overview. Risk increases when the Theme column is enabled and the displayed value is rendered without adequate output encoding or contextual sanitization.

Exploit preconditions

  • Attack surface: Customer-facing theme configuration handled by customer_index.php
  • Required access: An authenticated customer account capable of setting the affected theme value
  • Trigger point: An administrator views the customer overview with the Theme column enabled
  • Why exploitation is possible: Customer-controlled content is stored and later rendered in an administrator's browser without sufficient contextual output encoding
  • Privilege boundary: The attack may cross from a customer session into an administrator session through browser-executed script
  • Attack surface: Customer-facing theme configuration handled by customer_index.php
  • Required access: An authenticated customer account capable of setting the affected theme value
  • Trigger point: An administrator views the customer overview with the Theme column enabled
  • Why exploitation is possible: Customer-controlled content is stored and later rendered in an administrator's browser without sufficient contextual output encoding
  • Privilege boundary: The attack may cross from a customer session into an administrator session through browser-executed script

Why this happens

The vulnerability results from storing attacker-controlled input and later inserting it into an administrative web page without applying appropriate context-sensitive output encoding or sanitization. This is a stored cross-site scripting condition mapped to CWE-79, where untrusted data is interpreted as active HTML or JavaScript by a victim's browser. If the victim has administrative privileges, the browser may send authenticated requests using the victim's session context, including CSRF-protected actions when relevant tokens are accessible to the script.

The vulnerability results from storing attacker-controlled input and later inserting it into an administrative web page without applying appropriate context-sensitive output encoding or sanitization. This is a stored cross-site scripting condition mapped to CWE-79, where untrusted data is interpreted as active HTML or JavaScript by a victim's browser. If the victim has administrative privileges, the browser may send authenticated requests using the victim's session context, including CSRF-protected actions when relevant tokens are accessible to the script.

Potential impact

  • An attacker may execute JavaScript in an administrator's browser
  • The vulnerability could enable unauthorized administrative actions
  • An attacker may abuse an administrator's CSRF token or authenticated session context
  • Administrator accounts could be created or modified
  • Server settings or hosted-service configuration may be changed
  • Sensitive administrative data could be exposed through browser-side actions
  • An attacker may execute JavaScript in an administrator's browser
  • The vulnerability could enable unauthorized administrative actions
  • An attacker may abuse an administrator's CSRF token or authenticated session context
  • Administrator accounts could be created or modified
  • Server settings or hosted-service configuration may be changed
  • Sensitive administrative data could be exposed through browser-side actions

General mitigation guidance

Mitigation generally focuses on treating all customer-controlled values as untrusted at every rendering boundary.

Common defensive patterns include:

  • Applying context-appropriate output encoding when displaying theme values
  • Using allowlisted theme identifiers rather than accepting arbitrary markup
  • Sanitizing HTML only when rich content is explicitly required
  • Enforcing server-side validation in addition to client-side controls
  • Maintaining strong CSRF protections and avoiding exposure of tokens to page scripts
  • Applying least privilege to customer and administrative capabilities
  • Using browser security controls such as an appropriately restrictive Content Security Policy

These controls reduce the likelihood that stored input can become executable code or perform privileged actions.

Mitigation generally focuses on treating all customer-controlled values as untrusted at every rendering boundary.

Common defensive patterns include:

  • Applying context-appropriate output encoding when displaying theme values
  • Using allowlisted theme identifiers rather than accepting arbitrary markup
  • Sanitizing HTML only when rich content is explicitly required
  • Enforcing server-side validation in addition to client-side controls
  • Maintaining strong CSRF protections and avoiding exposure of tokens to page scripts
  • Applying least privilege to customer and administrative capabilities
  • Using browser security controls such as an appropriately restrictive Content Security Policy

These controls reduce the likelihood that stored input can become executable code or perform privileged actions.

How teams detect issues like this

Organizations can identify similar risks through:

  • Static analysis rules for unencoded output in templates and response-building code
  • Code review checks for customer-controlled values rendered in administrative pages
  • Tests that store markup and script-like input in every user-editable field
  • Dynamic scanning of authenticated customer and administrator workflows
  • Policy enforcement requiring contextual output encoding and allowlisted identifiers
  • Monitoring for unexpected administrative actions originating from customer-managed data

Automated security review tools may help identify common stored-XSS sinks, but manual review is useful for determining rendering context and privilege boundaries.

Organizations can identify similar risks through:

  • Static analysis rules for unencoded output in templates and response-building code
  • Code review checks for customer-controlled values rendered in administrative pages
  • Tests that store markup and script-like input in every user-editable field
  • Dynamic scanning of authenticated customer and administrator workflows
  • Policy enforcement requiring contextual output encoding and allowlisted identifiers
  • Monitoring for unexpected administrative actions originating from customer-managed data

Automated security review tools may help identify common stored-XSS sinks, but manual review is useful for determining rendering context and privilege boundaries.

Sources

SourceLink
github.comgithub.com/froxlor/froxlor/security/advisories/GHSA-3jpp-mhvh-rv66
vulncheck.comvulncheck.com/advisories/froxlor-2.0.0-before-2.3.14-stored-xss-via-customer-theme-value

Frequently asked

questions

It may be exploitable through the web application by an authenticated customer, provided the customer can set the affected value and an administrator later views the relevant overview page.

No. A customer-level account may be sufficient to plant the stored content, but an administrator's browser must render the affected value for the highest-impact actions to become possible.

Treat theme values as untrusted data, prefer allowlisted identifiers, and apply context-sensitive output encoding before rendering them in administrative interfaces.

Combine server-side validation, secure templating defaults, stored-XSS testing, restrictive browser policies, and least-privilege separation between customer and administrator functions.

It may be exploitable through the web application by an authenticated customer, provided the customer can set the affected value and an administrator later views the relevant overview page.

No. A customer-level account may be sufficient to plant the stored content, but an administrator's browser must render the affected value for the highest-impact actions to become possible.

Treat theme values as untrusted data, prefer allowlisted identifiers, and apply context-sensitive output encoding before rendering them in administrative interfaces.

Combine server-side validation, secure templating defaults, stored-XSS testing, restrictive browser policies, and least-privilege separation between customer and administrator functions.

Find out what's already
exploitable in your codebase.