CVE-2026-26989
Stored XSS in LibreNMS Alert Rules Allows Admin Script Injection
Publication date: 2026-02-20
Last updated on: 2026-02-20
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| librenms | librenms | to 26.2.0 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-79 | The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
CVE-2026-26989 is a stored Cross-Site Scripting (XSS) vulnerability in LibreNMS versions up to and including 25.12.0, specifically in the Alert Rules workflow.
An attacker with administrative privileges can inject malicious JavaScript code into alert rules. This malicious script is stored and later executed in the browser context of any user who views the Alert Rules page.
The root cause is improper sanitization of user input before it is output in the alert rule display, allowing executable scripts to be injected and run.
The vulnerability requires the attacker to have authenticated admin-level access, and user interaction is needed to trigger the script execution.
How can this vulnerability impact me? :
This vulnerability allows an attacker with admin privileges to execute arbitrary JavaScript code in the browsers of users who access the Alert Rules page.
Such script execution can lead to theft of sensitive information, session hijacking, or performing actions on behalf of the victim user within the application.
However, the attack complexity is low but requires high privileges (admin access), and user interaction is necessary to trigger the malicious script.
The overall impact on confidentiality, integrity, and availability is rated as low, but it still poses a moderate security risk.
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
I don't know
How can this vulnerability be detected on my network or system? Can you suggest some commands?
[{'type': 'paragraph', 'content': 'This vulnerability can be detected by checking if your LibreNMS installation is running version 25.12.0 or below, as these versions are affected by the stored XSS in the Alert Rules workflow.'}, {'type': 'paragraph', 'content': 'A practical detection method involves attempting to identify malicious script injections in the alert rules by inspecting the alert rules data, especially looking for suspicious script tags or HTML content in alert rule display fields.'}, {'type': 'paragraph', 'content': 'One way to detect exploitation attempts is to review HTTP POST requests to the `/alert-rule` endpoint for payloads containing script tags, such as `<script>alert("xss")</script>`.'}, {'type': 'paragraph', 'content': 'Since the vulnerability requires admin privileges, auditing admin activity logs for unusual alert rule creations or modifications containing HTML or JavaScript code can help detect exploitation.'}, {'type': 'paragraph', 'content': 'No specific commands are provided in the resources, but you can use tools like curl or wget to simulate POST requests to `/alert-rule` with crafted payloads to test if the system is vulnerable.'}] [1]
What immediate steps should I take to mitigate this vulnerability?
The immediate and recommended mitigation step is to upgrade LibreNMS to version 26.2.0 or later, where this stored XSS vulnerability has been fixed.
If upgrading immediately is not possible, restrict administrative access to trusted users only, since the vulnerability requires admin privileges to exploit.
Review and sanitize existing alert rules to remove any suspicious or potentially malicious HTML or JavaScript content in alert rule display fields.
Apply the patch that modifies the alert rule display rendering by stripping HTML tags before escaping output, as described in the fix which uses `strip_tags()` on the alert rule display field.