CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-7CJ5-V4PP-V632

GHSA-7cj5-v4pp-v632: Stored Cross-Site Scripting in LibreNMS Graph Descriptions

Alon Barad
Alon Barad
Software Engineer

Aug 19, 2026·5 min read·1 visit

Executive Summary (TL;DR)

An authenticated administrator can store arbitrary JavaScript in the configuration database via graph descriptions. The stored payload executes inside the browser session of any user viewing the associated graph pages.

LibreNMS versions prior to 26.7.0 are vulnerable to a stored Cross-Site Scripting (XSS) vulnerability. An authenticated administrator can inject arbitrary HTML or JavaScript into graph descriptions via specific administrative configuration endpoints. When another authenticated user views the affected graph, the unescaped payload executes within their browser context.

Vulnerability Overview

LibreNMS is an open-source, auto-discovering PHP/MySQL-based network monitoring system that utilizes SNMP to discover and graph network infrastructure. To maintain robust reporting, the platform provides administrators with configuration options to customize descriptions and attributes of various graph types. This administrative capability exposes an attack surface when system configurations are rendered to other web session contexts.

The administrative settings for graph descriptions, mapped to graph_descr.<graphtype>, allow administrators to input arbitrary string configurations. These settings are subsequently queried and rendered dynamically when users navigate to different graph sections of the application.

This vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation). Because the application retrieves and outputs these descriptions verbatim to the DOM, an attacker with administrative privileges can store malicious payloads, which are executed automatically when other users load the associated graph dashboard.

Root Cause Analysis

The underlying vulnerability is located within the presentation layer of the application, specifically in the file includes/html/pages/graphs.inc.php at line 194. The application dynamically processes requests for various graph types by analyzing URL and request parameters stored inside the $vars array.

To display custom graph descriptions, the application uses the dynamic configuration retrieval method LibrenmsConfig::get('graph_descr.' . $vars['type']). This function queries the system database and returns the configured value for the specified graph type. The returned value is then passed directly to the standard output buffer.

The application fails to invoke sanitation, filtering, or context-aware escaping functions before displaying this data. Because the output mechanism lacks context-aware encoding, the user browser interprets any stored string containing HTML elements or executable JavaScript tags as functional code instead of plain text.

Code Analysis and Patch Assessment

The vulnerability is demonstrated by examining the execution flow in the unpatched version of includes/html/pages/graphs.inc.php:

// Vulnerable Code: includes/html/pages/graphs.inc.php (Line 194)
// The retrieved configuration string is echoed directly to the output buffer without escaping.
echo LibrenmsConfig::get('graph_descr.' . $vars['type']);

To resolve this vulnerability, developers introduced a security patch that forces strict output encoding on the retrieved data before it is written to the browser context:

// Patched Code: includes/html/pages/graphs.inc.php (Line 194)
// The output is processed by htmlspecialchars with ENT_QUOTES to sanitize special characters.
echo htmlspecialchars(LibrenmsConfig::get('graph_descr.' . $vars['type']), ENT_QUOTES, 'UTF-8');

The implementation of htmlspecialchars() with the ENT_QUOTES flag and UTF-8 encoding ensures that characters such as <, >, &, ", and ' are safely converted to their corresponding HTML entity equivalents. This prevents the browser from interpreting the injected string as executable HTML tags or event handlers, effectively neutralizing the injection vector.

The fix is robust and complete for this specific rendering location. However, security teams should verify that other configuration rendering paths within the LibreNMS application code apply the same strict output escaping methodologies.

Attack Methodology and Proof-of-Concept

Exploiting this vulnerability requires network connectivity to the LibreNMS administrative interface and valid administrator credentials. The attack consists of a two-stage process: payload injection (persistence) and payload execution (victim trigger).

During the injection phase, the administrator sends an authenticated PUT request to update the graph description configurations. The endpoint accepts raw configurations, including HTML tags and event handlers. The payload is successfully written to the system database.

PUT /settings/graph_descr.device_processor HTTP/1.1
Host: <target-ip>
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Authorization: Bearer <token>
 
{"value": "<img src=x onerror=\"alert('ADV-15')\">"}

When a victim visits the graphs page associated with the modified graph type (in this case, device_processor), their browser issues a GET request. The server queries the database, extracts the unescaped payload, and embeds it directly into the HTML response body. The browser processes the broken image element, fails to load the source, and triggers the onerror JavaScript handler in the victim's session context.

GET /graphs?type=device_processor HTTP/1.1
Host: <target-ip>
Authorization: Bearer <victim-token>

Threat and Impact Assessment

The impact of a successful exploitation of this vulnerability is significant, despite requiring administrative privileges. While administrators already have elevated control over the platform, stored XSS allows them to cross session boundaries and execute actions in the context of other authenticated users.

In scenarios where multiple administrators manage a LibreNMS instance, a lower-trust administrator or a compromised administrative account can leverage this vulnerability to hijack sessions of other, higher-privileged system administrators. This facilitates privilege escalation and unauthorized operational actions.

Because the session cookies of other active users can be extracted via document.cookie (if HttpOnly is not enforced), an attacker can perform administrative actions on behalf of the victim. This includes modifying system configurations, managing users, or querying detailed network infrastructure data.

Remediation and Defensive Engineering

The primary remediation strategy is upgrading the LibreNMS installation to version 26.7.0 or higher. This release contains the necessary codebase patches to sanitize dynamic configurations before output rendering.

For deployments where immediate upgrading is not possible, security administrators can apply the manual source code modification to includes/html/pages/graphs.inc.php. Ensure that htmlspecialchars() is integrated on line 194.

In addition to patching, organizations should implement defense-in-depth measures such as a strict Content Security Policy (CSP). Restricting inline scripts via policies like script-src 'self' prevents the execution of arbitrary JavaScript injected into the DOM, mitigating the operational impact of stored XSS vulnerabilities.

Official Patches

LibreNMSOfficial advisory containing documentation on vulnerable parameters.

Technical Appendix

CVSS Score
4.8/ 10
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N

Affected Systems

LibreNMS prior to version 26.7.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
librenms/librenms
LibreNMS
< 26.7.026.7.0
AttributeDetail
CWE IDCWE-79
Attack VectorNetwork
CVSS v3.1 Score4.8
Privileges RequiredHigh
User InteractionRequired
Exploit StatusProof-of-Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1189Drive-by Compromise
Initial Access
T1059.007Command and Scripting Interpreter: JavaScript
Execution
T1539Steal Web Session Cookie
Credential Access
CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

The application does not neutralize or incorrectly neutralizes user-controlled input before it is placed in output that is used as a web page that is served to other users.

Known Exploits & Detection

GitHub Security AdvisoryAdvisory containing the Proof of Concept payload details and endpoints.

Vulnerability Timeline

Vulnerability disclosed, patch released, and Advisory GHSA-7cj5-v4pp-v632 published.
2026-08-18

References & Sources

  • [1]GitHub Advisory Database
  • [2]LibreNMS Version 26.7.0 Release
  • [3]LibreNMS Source Code Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•44 minutes ago•GHSA-JF24-8G2H-2WG7
7.2

GHSA-JF24-8G2H-2WG7: Remote Code Execution in LibreNMS AboutController via Binary Path Substitution

A critical security flaw in LibreNMS allows authenticated administrators to execute arbitrary commands by modifying the configured binary path for snmpget and accessing the About page. This occurs due to insufficient verification of the executable file's identity and integrity prior to executing it with shell_exec.

Amit Schendel
Amit Schendel
0 views•6 min read
•about 3 hours ago•GHSA-7GWW-X7FH-JF9J
8.1

GHSA-7GWW-X7FH-JF9J: SSRF-Driven Stored Cross-Site Scripting in LibreNMS Oxidized Integration

An injection vulnerability in LibreNMS's Oxidized integration component allows administrative or network-positioned attackers to achieve stored cross-site scripting (XSS). By setting a malicious oxidized.url endpoint, the server makes outbound queries and processes returned JSON fields containing malicious HTML or JavaScript. These payloads are outputted directly in the web UI without appropriate output encoding.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 4 hours ago•CVE-2026-17106
7.1

CVE-2026-17106: Container-to-Host Arbitrary File Write in moby/go-archive (CopyEscape)

CVE-2026-17106 (CopyEscape) is a container-to-host arbitrary file-write vulnerability within Docker's archiving and extraction library moby/go-archive. By utilizing a Time-of-Check to Time-of-Use (TOCTOU) race condition during the file-walking stage inside a running container, a malicious container process can force the host engine to produce a compromised tar stream. During client-side extraction, the Docker CLI resolves directory entries through absolute symbolic links, resulting in arbitrary file creation or modification on the host system.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 5 hours ago•CVE-2026-73974
5.5

CVE-2026-73974: Local Path Traversal and Privilege Escalation in Linuxfabrik Monitoring Plugins

CVE-2026-73974 is a local path traversal vulnerability in linuxfabrik-lib and Linuxfabrik Monitoring Plugins. Under standard monitoring configurations running with elevated privileges via sudo, this flaw can be exploited by an unprivileged local user to read arbitrary root-only files, resulting in local privilege escalation.

Alon Barad
Alon Barad
4 views•5 min read
•about 6 hours ago•CVE-2026-71417
7.3

CVE-2026-71417: Authorization Bypass Leading to Unauthorized TLS Certificate Revocation in Netflix Lemur

CVE-2026-71417 is an authorization bypass vulnerability (CWE-639) in Netflix Lemur, an open-source TLS certificate management framework. In versions prior to 1.9.3, a low-privileged authenticated user can bypass role and certificate-level permission boundaries to revoke arbitrary managed TLS certificates at the upstream Certificate Authority (CA). This vulnerability stems from an architectural issue where Lemur evaluates authorization against internal database row ownership rather than the unique, cryptographic identity of the certificate. An attacker can exploit this flaw by uploading a duplicate record of a target certificate and requesting its revocation, triggering a downstream CA-side revocation and a subsequent denial-of-service (DoS) condition for services relying on the target certificate.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 7 hours ago•CVE-2026-68927
3.0

CVE-2026-68927: Server-Side Request Forgery Port Restriction Bypass in Mobile Security Framework (MobSF)

A Server-Side Request Forgery (SSRF) vulnerability exists in Mobile Security Framework (MobSF) prior to version 4.5.1. The flaw occurs in the Android App Link validation process, where a split-validation vulnerability allows an authenticated attacker to perform port restriction bypasses and potential DNS rebinding attacks against internal infrastructure.

Amit Schendel
Amit Schendel
4 views•7 min read