CVE-2026-71285

Uptime Kuma Stored XSS via Matomo Analytics Site ID on Public Status Pages

Published Aug 5, 2026 CVSS 3.1 · 8.1 High EPSS < 1% KEV · Not listed
Description
Uptime Kuma's Matomo analytics integration (server/analytics/matomo-analytics.js) injects the admin-configurable Matomo value as a bare, unquoted JavaScript expression inside a <script> block rendered on every public status page. A siteId value such as , once saved by an editor/admin, executes arbitrary JavaScript for every unauthenticated visitor of the public /status/<slug> page, enabling session-cookie theft and full page takeover.

Analysis

AI-generated

Technical impact

Uptime Kuma’s Matomo analytics integration renders a <script> block on every public status page that contains the administrator‑configurable siteId value as a raw, unquoted JavaScript expression. An attacker who can edit the siteId can insert arbitrary code, such as a comma‑separated payload that closes the current statement and injects a new command. When the malicious value is saved, the unescaped script is executed in every browser that views the public /status/<slug> page, allowing the attacker to steal session cookies or perform any JavaScript action on the page. This stored XSS flaw (CWE‑79) provides full page takeover for unauthenticated visitors.

Affected Systems

The flaw appears in all installations of Uptime Kuma that have the Matomo analytics feature enabled; the vulnerability is not limited to a specific version number based on the information provided. Any user with administrative privileges who can change the siteId setting is able to inject the malicious payload. Non‑admin users and the public are only the victims of the injection.

Risk and Exploitability

With a CVSS score of 8.1 the vulnerability is high‑severity. The EPSS score of <1% indicates a low likelihood of exploitation, and the vulnerability is not listed in CISA KEV. The attack requires an authenticated admin to insert a crafted siteId value; once set, every unauthenticated visitor to the public /status/<slug> page will be exposed to the injected script. The consequence is session‑cookie theft and the potential for full page takeover, which can impact confidentiality, integrity, and availability of the public status page.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update to the latest release of Uptime Kuma that contains a fix for the Matomo siteId sanitization issue.
  • If a firmware update is not possible, temporarily disable the Matomo analytics integration or remove the siteId setting entirely.
  • Replace the siteId value with a simple numeric string and enforce a validation rule that allows only digits; this mitigates the injection vector.

Generated by OpenCVE AI on August 10, 2026 at 21:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Description Uptime Kuma's Matomo analytics integration (server/analytics/matomo-analytics.js) injects the admin-configurable Matomo `siteId` value as a bare, unquoted JavaScript expression inside a <script> block rendered on every public status page: `_paq.push(['setSiteId', ${escapedSiteIdHTMLAttribute}]);`. The escaping pipeline used (jsesc with isScriptContext:true, then html-escaper.escape()) does not escape the characters `]`, `)`, `;`, `(`, which are sufficient to break out of the array/push expression context. A siteId value such as `1]);alert(document.cookie)//`, once saved by an editor/admin, executes arbitrary JavaScript for every unauthenticated visitor of the public /status/<slug> page, enabling session-cookie theft and full page takeover. Uptime Kuma's Matomo analytics integration (server/analytics/matomo-analytics.js) injects the admin-configurable Matomo value as a bare, unquoted JavaScript expression inside a <script> block rendered on every public status page. A siteId value such as , once saved by an editor/admin, executes arbitrary JavaScript for every unauthenticated visitor of the public /status/<slug> page, enabling session-cookie theft and full page takeover.
Title Uptime Kuma - Stored XSS via Matomo Analytics Site ID on Public Status Pages Uptime Kuma Stored XSS via Matomo Analytics Site ID on Public Status Pages
Type Values Removed Values Added
Title Uptime Kuma Stored XSS via Matomo Analytics Site ID on Public Status Pages Uptime Kuma - Stored XSS via Matomo Analytics Site ID on Public Status Pages
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Louislam
Louislam uptime-kuma
Vendors & Products Louislam
Louislam uptime-kuma
Type Values Removed Values Added
Description Uptime Kuma's Matomo analytics integration (server/analytics/matomo-analytics.js) injects the admin-configurable Matomo `siteId` value as a bare, unquoted JavaScript expression inside a <script> block rendered on every public status page: `_paq.push(['setSiteId', ${escapedSiteIdHTMLAttribute}]);`. The escaping pipeline used (jsesc with isScriptContext:true, then html-escaper.escape()) does not escape the characters `]`, `)`, `;`, `(`, which are sufficient to break out of the array/push expression context. A siteId value such as `1]);alert(document.cookie)//`, once saved by an editor/admin, executes arbitrary JavaScript for every unauthenticated visitor of the public /status/<slug> page, enabling session-cookie theft and full page takeover.
Title Uptime Kuma Stored XSS via Matomo Analytics Site ID on Public Status Pages
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N'}

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Sources

Status
PUBLISHED
Assigner
TuranSec
Published
Updated
Aug 10, 2026, 11:47 AM
Reserved
Aug 5, 2026, 12:23 PM
Status
Deferred
Published
Aug 5, 2026, 1:24 PM
Modified
Oct 23, 2026, 9:10 PM