CVE-2026-45560: Roxy-WI: Stored XSS in log viewer (wrap_line/highlight_word produce unescaped HTML)

Published Jun 10, 2026
·
Updated

Roxy-WI is a web interface for managing Haproxy, Nginx, Apache and Keepalived servers. In versions 8.2.6.4 and prior, wrapline (app/modules/common/common.py:181-186) and highlightword (app/modules/common/common.py:188-192) build raw HTML by string concatenation with no escaping. The frontend (app/static/js/script.js, log-viewer paths) uses .html(data) / .append(data) to inject the response body. Anyone able to write a line into a managed HAProxy/Nginx access log (i.e. anyone who can send an HTTP request to the public LB) can land an <svg/onload=…> payload that executes when a Roxy-WI admin opens the log viewer. At time of publication, there are no publicly available patches.

Affected Software

1 affected component
Roxy-WI Roxy-wi<=8.2.6.4

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Replace uses of .html(data) and .append(data) that insert log lines with a safe method: either HTML-escape the log content before insertion or use text-insertion APIs (e.g., .text() or equivalent) so raw HTML in logs is not interpreted by the browser.

    Roxy-WI frontend (app/static/js/script.js, log viewer paths) DOM injection method = escape HTML / use text insertion instead of .html/.append
  2. Configuration

    Modify wrap_line and highlight_word to HTML-escape any log content before concatenating/building HTML output (do not build raw HTML from unescaped log contents).

    Roxy-WI backend (app/modules/common/common.py) wrap_line / highlight_word output encoding = HTML-escape log text before composing output
  3. Compensating control

    Restrict access to the Roxy-WI admin interface and log viewer to trusted administrator networks only (via firewall rules, network ACLs, or requiring access over a VPN) so attackers cannot write logs that will be viewed by admins.

  4. Compensating control

    Deploy WAF or ingress filtering rules to block or sanitize incoming HTTP requests that attempt to inject markup into logs (for example, block requests containing '<svg', '<script', or raw '<' characters in fields that are logged) at the public load balancer/edge.

  5. Operational

    Until code fixes are applied, avoid opening the Roxy-WI log viewer to review logs; instead retrieve logs via alternative means and review them with a tool that safely escapes or sanitizes HTML.

Event History

Jun 10, 2026
CVE Published
via MITRE·02:02 PM
Data Sourced
via MITRE·02:02 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·03:16 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

What is the severity of CVE-2026-45560?

CVE-2026-45560 has a medium severity score of 6.1.

2

How do I fix CVE-2026-45560?

To fix CVE-2026-45560, update Roxy-WI to version 8.2.6.5 or later.

3

What vulnerabilities are associated with CVE-2026-45560?

CVE-2026-45560 is associated with a stored XSS vulnerability due to unescaped HTML in the log viewer.

4

What impact does CVE-2026-45560 have on users?

CVE-2026-45560 can allow attackers to execute arbitrary JavaScript in the context of affected users' browsers.

5

What components of Roxy-WI are affected by CVE-2026-45560?

The wrap_line and highlight_word functions in the log viewer are affected by CVE-2026-45560.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203