{"id":"GHSA-7cj5-v4pp-v632","aliases":[],"url":"https://o3.security/vulnerability/GHSA-7cj5-v4pp-v632","summary":"LibreNMS: Stored XSS via graph_descr admin config settings echoed without escaping to all authenticated users","details":"### Summary\nThe `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.\n\n### CVSS\n`CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N` — **4.8 Medium**\n\n### Details\n```php\n// graphs.inc.php:194\necho LibrenmsConfig::get('graph_descr.' . $vars['type']);\n```\n\n### PoC\n```\nPUT /settings/graph_descr.device_processor\n{\"value\": \"<img src=x onerror=\\\"alert('ADV-15')\\\">\"}\n\nGET /graphs?type=device_processor\n→ <img src=x onerror=\"alert('ADV-15')\">\n```\n\n### Fix\n```php\necho htmlspecialchars(LibrenmsConfig::get('graph_descr.' . $vars['type']), ENT_QUOTES, 'UTF-8');\n```\n\n### Prerequisite\nAdmin session to set the config value.","published":"2026-08-18T21:17:20Z","modified":"2026-08-18T21:30:07.939361618Z","cvss":{"score":4.8,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Packagist","name":"librenms/librenms","fixedVersion":"26.7.0"}],"fix":null,"references":[{"type":"WEB","url":"https://github.com/librenms/librenms/security/advisories/GHSA-7cj5-v4pp-v632"},{"type":"PACKAGE","url":"https://github.com/librenms/librenms"},{"type":"WEB","url":"https://github.com/librenms/librenms/releases/tag/26.7.0"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-18T21:30:07.939361618Z"}}