VDB
KO
MEDIUM 4.8

GHSA-7cj5-v4pp-v632

LibreNMS: Stored XSS via graph_descr admin config settings echoed without escaping to all authenticated users

Quick fix

GHSA-7cj5-v4pp-v632 — librenms/librenms: upgrade to the fixed version with the command below.

composer require librenms/librenms:^26.7.0

Details

### Summary The `graph_descr.<graphtype>` family of settings is echoed verbatim without `htmlspecialchars()` in `includes/html/pages/graphs.inc.php:194`. Any admin can store a malicious HTML payload that executes in every authenticated user's browser viewing that graph type.

### CVSS `CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N` — **4.8 Medium**

### Details ```php // graphs.inc.php:194 echo LibrenmsConfig::get('graph_descr.' . $vars['type']); ```

### PoC ``` PUT /settings/graph_descr.device_processor {"value": "<img src=x onerror=\"alert('ADV-15')\">"}

GET /graphs?type=device_processor → <img src=x onerror="alert('ADV-15')"> ```

### Fix ```php echo htmlspecialchars(LibrenmsConfig::get('graph_descr.' . $vars['type']), ENT_QUOTES, 'UTF-8'); ```

### Prerequisite Admin session to set the config value.

Are you affected?

Enter the version of the package you're using.

Affected packages

Packagist / librenms/librenms
Introduced in: 0 Fixed in: 26.7.0
Fix composer require librenms/librenms:^26.7.0

References