{"id":"CVE-2026-84188","aliases":["EUVD-2026-69025","GHSA-7cj5-v4pp-v632","GHSA-pvwj-jwv3-68ww"],"status":"published","title":"librenms before 26.7.0 Stored XSS via graph_descr settings","description":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the graph_descr.\u003cgraphtype\u003e configuration settings, which are echoed verbatim without HTML escaping in includes/html/pages/graphs.inc.php. An administrator can store a malicious HTML payload that executes in the browser of any authenticated user who views the affected graph type. The issue is fixed in version 26.7.0.","severity":{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00251,"percentile":0.16754,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2026-08-18T21:17:20Z","modified":"2026-10-28T02:30:31Z","fixes":[{"ecosystem":"Packagist","package":"librenms/librenms","fixed_in":["26.7.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"librenms/librenms","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"26.7.0"}]}]},{"source":"osv","ecosystem":"Packagist","package":"librenms/librenms","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"26.7.0"}]}],"versions":["1.19","1.20","1.20.1","1.21","1.22","1.22.01","1.23","1.24","1.25","1.26","1.27","1.28","1.29","1.30","1.30.01","1.31","1.31.01","1.31.02","1.31.03","1.32","1.32.01","1.33","1.33.01","1.34","1.35","1.36","1.36.01","1.37","1.38","1.39","1.40","1.41","1.42","1.42.01","1.43","1.44","1.45","1.46","1.47","1.48","1.48.1","1.49","1.50","1.50.1","1.51","1.52","1.53","1.53.1","1.54","1.55","1.56","1.57","1.58","1.58.1","1.59","1.60","1.61","1.62","1.62.1","1.62.2","1.63","1.64","1.64.1","1.65","1.65.1","1.66","1.67","1.68","1.69","1.70.0","1.70.1","21.1.0","21.10.0","21.10.1","21.10.2","21.11.0","21.12.0","21.12.1","21.2.0","21.3.0","21.4.0","21.5.0","21.5.1","21.6.0","21.7.0","21.8.0","21.9.0","21.9.1","22.1.0","22.10.0","22.11.0","22.12.0","22.2.0","22.2.1","22.2.2","22.3.0","22.4.0","22.4.1","22.5.0","22.6.0","22.7.0","22.8.0","22.9.0","23.1.0","23.1.1","23.10.0","23.11.0","23.2.0","23.4.0","23.4.1","23.5.0","23.6.0","23.7.0","23.8.0","23.8.1","23.8.2","23.9.0","23.9.1","24.1.0","24.10.0","24.10.1","24.11.0","24.12.0","24.2.0","24.3.0","24.4.0","24.4.1","24.5.0","24.6.0","24.7.0","24.8.0","24.8.1","24.9.0","24.9.1","25.1.0","25.10.0","25.11.0","25.12.0","25.2.0","25.3.0","25.4.0","25.5.0","25.6.0","25.7.0","25.8.0","25.9.0","25.9.1","26.1.0","26.1.1","26.2.0","26.3.0","26.3.1","26.4.0","26.4.1","26.5.0","26.5.1","26.6.0","26.6.1"]}],"products":[{"vendor":"librenms","product":"librenms"}],"references":[{"url":"https://github.com/librenms/librenms/security/advisories/GHSA-7cj5-v4pp-v632","tags":["vendor-advisory","exploit","advisory","web"]},{"url":"https://www.vulncheck.com/advisories/librenms-before-26.7.0-stored-xss-via-graph-descr-settings","tags":["third-party-advisory","advisory"]},{"url":"https://github.com/librenms/librenms/releases/tag/26.7.0","tags":["web"]},{"url":"https://github.com/advisories/GHSA-7cj5-v4pp-v632"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84188","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-pvwj-jwv3-68ww"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84188.json","tags":["advisory"]},{"url":"https://github.com/librenms/librenms","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-84188","title":"librenms before 26.7.0 Stored XSS via graph_descr settings","description":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the graph_descr.\u003cgraphtype\u003e configuration settings, which are echoed verbatim without HTML escaping in includes/html/pages/graphs.inc.php. An administrator can store a malicious HTML payload that executes in the browser of any authenticated user who views the affected graph type. The issue is fixed in version 26.7.0.","status":"published","published":"2026-09-01T11:33:53.955Z","modified":"2026-10-08T15:25:42.329Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N","level":"medium","assessor":"cna"},{"version":"3.1","score":4.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:20:08.391556Z"}],"euvd":[{"id":"EUVD-2026-69025","description":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the graph_descr.\u003cgraphtype\u003e configuration settings, which are echoed verbatim without HTML escaping in includes/html/pages/graphs.inc.php. An administrator can store a malicious HTML payload that executes in the browser of any authenticated user who views the affected graph type. The issue is fixed in version 26.7.0.","status":"published","published":"2026-09-01T11:33:53Z","modified":"2026-10-08T15:25:42Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N","level":"medium"}],"updated_at":"2026-11-02T17:27:28.564399Z"}],"ghsa":[{"id":"GHSA-7cj5-v4pp-v632","title":"LibreNMS: Stored XSS via graph_descr admin config settings echoed without escaping to all authenticated users","description":"### Summary\nThe `graph_descr.\u003cgraphtype\u003e` 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\": \"\u003cimg src=x onerror=\\\"alert('ADV-15')\\\"\u003e\"}\n\nGET /graphs?type=device_processor\n→ \u003cimg src=x onerror=\"alert('ADV-15')\"\u003e\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.","status":"published","published":"2026-08-18T21:17:20Z","modified":"2026-08-18T21:17:23Z","cvss":[{"version":"3.1","score":4.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:41:03.602876Z"},{"id":"GHSA-pvwj-jwv3-68ww","title":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the...","description":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the graph_descr.\u003cgraphtype\u003e configuration settings, which are echoed verbatim without HTML escaping in includes/html/pages/graphs.inc.php. An administrator can store a malicious HTML payload that executes in the browser of any authenticated user who views the affected graph type. The issue is fixed in version 26.7.0.","status":"published","published":"2026-09-01T12:31:50Z","modified":"2026-09-01T12:31:56Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium"},{"version":"3.1","score":4.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:11:12.60039Z"}],"nvd":[{"id":"CVE-2026-84188","description":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the graph_descr.\u003cgraphtype\u003e configuration settings, which are echoed verbatim without HTML escaping in includes/html/pages/graphs.inc.php. An administrator can store a malicious HTML payload that executes in the browser of any authenticated user who views the affected graph type. The issue is fixed in version 26.7.0.","status":"published","published":"2026-09-01T12:17:48.143Z","modified":"2026-10-08T16:17:54.313Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"},{"version":"3.1","score":4.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:43.04945Z"}],"osv":[{"id":"CVE-2026-84188","title":"librenms before 26.7.0 Stored XSS via graph_descr settings","description":"LibreNMS versions \u003c= 26.4.0 contain a stored cross-site scripting vulnerability in the graph_descr.\u003cgraphtype\u003e configuration settings, which are echoed verbatim without HTML escaping in includes/html/pages/graphs.inc.php. An administrator can store a malicious HTML payload that executes in the browser of any authenticated user who views the affected graph type. The issue is fixed in version 26.7.0.","status":"published","published":"2026-09-01T11:33:53.955Z","modified":"2026-10-28T02:30:31.252415936Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:45:18.482949Z"},{"id":"GHSA-7cj5-v4pp-v632","title":"LibreNMS: Stored XSS via graph_descr admin config settings echoed without escaping to all authenticated users","description":"### Summary\nThe `graph_descr.\u003cgraphtype\u003e` 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\": \"\u003cimg src=x onerror=\\\"alert('ADV-15')\\\"\u003e\"}\n\nGET /graphs?type=device_processor\n→ \u003cimg src=x onerror=\"alert('ADV-15')\"\u003e\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.","status":"published","published":"2026-08-18T21:17:20Z","modified":"2026-09-02T03:55:41.436732636Z","cvss":[{"version":"3.1","score":4.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:41.002603Z"}]}}
