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-JF24-8G2H-2WG7

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 19, 2026·6 min read·0 visits

Executive Summary (TL;DR)

Authenticated administrators can execute arbitrary system commands by changing the snmpget binary path to a malicious script uploaded on the local filesystem and visiting the /about page.

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.

System Architecture and Attack Surface Overview

LibreNMS is an open-source, PHP-based autodiscovering network monitoring tool that relies extensively on external system binaries to query network devices. The application exposes an administrative interface that allows authorized users to manage system configurations, including the file paths for utilities such as Net-SNMP. One of these utilities is the snmpget binary, which LibreNMS executes to retrieve SNMP data and verify version information.

Historically, configuration systems that execute system commands face substantial risks if input fields are not strictly restricted to pre-defined safe paths. In LibreNMS, the configuration settings are stored in a database and can be modified by users holding administrative privileges. The /about endpoint of the application triggers a configuration check that invokes the binary path defined in this database.

This architecture creates an attack surface where an administrative user can influence the execution path of system commands. If an attacker can manipulate the binary path configuration to point to an arbitrary executable, they can abuse the application logic to execute arbitrary code on the underlying operating system. The vulnerability is classified under command injection and path traversal weaknesses.

Root Cause Analysis of the Path Validation Defect

The root cause of this vulnerability lies in the insufficient validation of the snmpget configuration value within the AboutController.php file. When the /about endpoint is accessed, the application retrieves the path to the snmpget executable and runs it using the PHP shell_exec() function. This function passes the command string directly to the host shell for execution, which inherently exposes the system to command execution vulnerabilities if the binary path itself is untrusted.

To prevent malicious inputs, LibreNMS employs a sanitization filter named sanitizePath() located in LibreNMS/Util/DynamicConfigItem.php. This helper function utilizes a regular expression pattern to detect and reject typical shell metacharacters such as semicolons, pipes, backticks, and redirection operators. It also verifies that the configured target is a valid, executable file on the local disk using PHP's native is_file() and is_executable() functions.

While this sanitization effectively blocks direct inline command injection (such as appending a command separator followed by malicious code), it fails to validate the identity and integrity of the executable itself. An attacker who can write a file to the filesystem can specify their malicious script as the target executable. Because the malicious script exists as a valid file and has the executable bit set, it satisfies both is_file() and is_executable(), allowing the path to be saved and subsequently executed by the application.

Detailed Code Path and Patch Analysis

The vulnerable version of the application processes the execution of the version check inside app/Http/Controllers/AboutController.php as follows:

// Vulnerable code in AboutController.php
'version_netsnmp' => str_replace('version: ', '', 
    rtrim(shell_exec(LibrenmsConfig::get('snmpget', 'snmpget') . ' -V 2>&1'))),

In this implementation, shell_exec() is used to execute the binary string directly. This passes the command to the default shell (typically /bin/sh), which interprets the string and runs the target process.

To remediate this issue, the patch replaces shell_exec() with the Symfony Process component, which executes the binary directly without spawning a shell interpreter. The updated code inside the controller is structured as follows:

// Patched code in AboutController.php
use Symfony\Component\Process\Process;
 
// The process is initialized with arguments as an array
$process = new Process([LibrenmsConfig::get('snmpget', 'snmpget'), '-V']);
$process->run();
 
'version_netsnmp' => str_replace('version: ', '', rtrim($process->getOutput())),

By passing the binary path and arguments as an array, the Symfony Process component bypasses shell parsing. Even if the path points to a customized script, it prevents any argument injection or command-chaining. This restricts the execution to the targeted file and safely processes the output.

Exploitation and Attack Path Analysis

Exploitation of this vulnerability requires administrative credentials to access the LibreNMS web interface and modify system settings. In addition, the attacker must have a mechanism to write or upload an executable script onto the local filesystem of the target server. Common avenues for dropping the script include using temporary directories like /tmp, leveraging existing file upload functionalities, or exploiting secondary vulnerabilities.

Once a malicious executable is written to the filesystem, the attacker modifies the snmpget binary path configuration. This can be accomplished by navigating to the 'Settings' panel under 'External Binaries' or by sending a direct PUT request to /settings/snmpget. The value is set to the absolute path of the newly written executable file, which passes the validation checks because it exists and is executable.

PUT /settings/snmpget HTTP/1.1
Host: librenms.target.local
Authorization: Bearer <ADMIN_API_TOKEN>
Content-Type: application/json
 
{
  "value": "/tmp/malicious_script.sh"
}

After saving the configuration, the attacker triggers the execution by requesting the /about endpoint. The server executes the malicious script via the web daemon's account. This allows the attacker to establish a reverse shell connection or execute arbitrary system commands, resulting in host compromise.

Security Impact and Blast Radius Assessment

The security impact of successful exploitation is high, leading to arbitrary code execution within the context of the web server daemon (such as www-data or apache). An attacker can leverage this execution access to read sensitive configuration files, modify application data, or access the database credentials stored within the LibreNMS environment.

Because LibreNMS acts as a centralized network monitoring platform, it typically holds sensitive operational data. This data includes SNMP community strings, API keys, network topology maps, and credentials for monitored network infrastructure. Access to the LibreNMS host allows an attacker to pivot and conduct lateral movement across the entire monitored corporate network.

From a CVSS perspective, the vulnerability is scored at 6.4 (CVSS v4.0) under the assumption that the immediate impact to the application itself is managed, but subsequent impact to the host OS and connected systems is high. Under CVSS v3, this scenario represents a high-severity vulnerability with a score of 7.2 due to the administrative privilege requirement.

Remediation, Patching, and Defense-in-Depth Strategies

The primary remediation for this vulnerability is upgrading LibreNMS to version 26.5.0 or higher. This version implements safe process execution via the Symfony Process component, neutralizing the command injection vector. System administrators should verify that all binary paths point to standard system directories after the upgrade.

If immediate upgrading is not feasible, several defensive workarounds should be applied to reduce the attack surface. Administrators should mount temporary write directories, such as /tmp and /var/tmp, with the noexec mount option to prevent the execution of arbitrary scripts dropped by attackers.

# Example of setting noexec on /tmp dynamically
mount -o remount,noexec /tmp

Additionally, access to the administration interface must be restricted to trusted networks using firewall rules, reverse proxies, or Web Application Firewalls (WAFs). WAF rules can be deployed to block PUT requests to the /settings/snmpget endpoint from unauthorized source IPs, ensuring that only authenticated maintenance channels can modify critical configurations.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.2/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H
1,200
via Shodan

Affected Systems

LibreNMS Network Monitoring System

Affected Versions Detail

Product
Affected Versions
Fixed Version
LibreNMS
librenms
< 26.5.026.5.0
AttributeDetail
CWE IDCWE-77, CWE-78
Attack VectorNetwork
CVSS v3.x Score7.2 (High)
CVSS v4.0 Score6.4 (Medium)
Exploit StatusProof-of-Concept (PoC)
KEV StatusNot Listed
Affected ComponentAboutController.php
Patch Version26.5.0

MITRE ATT&CK Mapping

T1059.004Command and Scripting Interpreter: Unix Shell
Execution
T1203Exploitation for Client Execution
Execution
CWE-78
Improper Neutralization of Special Elements used in an OS Command

Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

Known Exploits & Detection

GitHub Security AdvisoryOfficial security advisory containing vulnerability analysis and a step-by-step reverse shell proof-of-concept.

References & Sources

  • [1]GitHub Security Advisory Page
  • [2]LibreNMS Core Repository Advisory
  • [3]LibreNMS GitHub Repository
  • [4]LibreNMS v26.5.0 Release Patch

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

•26 minutes ago•CVE-2026-71322
4.3

CVE-2026-71322: Missing Authorization Check in Netflix Lemur Certificate Export

Netflix Lemur, a TLS/SSL certificate management framework, contains a missing authorization check in its certificate export endpoint. Prior to version 1.9.3, the validation logic verifying whether a user had permission to export a certificate was incorrectly placed inside a block that executed only if the selected plugin required a private key. When an authenticated user attempted to export a certificate using a plugin that did not require the private key, the authorization check was bypassed, allowing unauthorized access to the public portions of the certificate and producing misleading audit logs.

Alon Barad
Alon Barad
0 views•6 min read
•about 2 hours 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
2 views•5 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