{"id":"GHSA-7gww-x7fh-jf9j","aliases":["CVE-2026-84189"],"title":"LibreNMS: SSRF-driven stored XSS via Oxidized API response fields in device showconfig page","titleSource":"OSV","descriptionSource":"OSV","declaredSeverity":"HIGH","description":"### Summary\nThe Oxidized integration URL (`oxidized.url`) is admin-configurable. LibreNMS fetches device info and version history from that URL and renders JSON fields (`name`, `ip`, `model`, `author`, commit message) into HTML without `htmlspecialchars()`. An admin pointing the URL at an attacker-controlled server achieves persistent XSS affecting all users who view any device's showconfig tab.\n\n### CVSS\n`CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N` — **8.1 High**\n\n### Details\n```php\n// includes/html/pages/device/showconfig.inc.php:276-278\necho '<li ...><strong>Node:</strong> ' . $node_info['name'] . '</li>';\necho '<li ...><strong>IP:</strong> '   . $node_info['ip']   . '</li>';\necho '<li ...><strong>Model:</strong> '. $node_info['model'] . '</li>';\n// lines 349, 353: author and commit message also unescaped\n```\n\n### Attack chain\n1. Admin sets `oxidized.url` to `http://attacker.example.com/`.\n2. Attacker server returns `{\"name\":\"<img src=x onerror=alert(1)>\",\"ip\":\"x\",\"model\":\"x\"}`.\n3. Any user viewing any device showconfig tab triggers the XSS.\n\n### PoC\nMock Oxidized server confirmed in response:\n```\n[!!!] CONFIRMED — ...<strong>Node:</strong> <img src=x onerror=\"alert('SSRF-XSS-oxidized')\">...\n```\n\n### Fix\n```php\necho '<li ...><strong>Node:</strong> ' . htmlspecialchars($node_info['name'], ENT_QUOTES, 'UTF-8') . '</li>';\n```\nApply to all fields from `$node_info`, `$author`, `$msg`.\n\n### Prerequisite\nAdmin session. Oxidized integration must be enabled.","severity":"high","score":8.1,"published":"2026-08-18T21:17:23.000Z","modified":"2026-09-02T03:55:41.484Z","withdrawn":false,"knownExploited":false,"affected":[{"ecosystem":"Packagist","name":"librenms/librenms","sources":[{"name":"OSV · GHSA-7gww-x7fh-jf9j","url":"https://osv.dev/vulnerability/GHSA-7gww-x7fh-jf9j"}],"ranges":[{"events":[{"introduced":"0"},{"fixed":"26.7.0"}],"type":"ECOSYSTEM"}],"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"],"fixed":["26.7.0"]}],"sourceAffected":[],"references":["https://github.com/librenms/librenms/security/advisories/GHSA-7gww-x7fh-jf9j","https://github.com/librenms/librenms","https://github.com/librenms/librenms/releases/tag/26.7.0"],"sources":[{"name":"OSV","id":"GHSA-7gww-x7fh-jf9j","modified":"2026-09-02T03:55:41.484582443Z","url":"https://osv.dev/vulnerability/GHSA-7gww-x7fh-jf9j"}],"assessments":[{"source":"OSV","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N","score":8.1}],"products":[],"remediation":[],"kev":{"status":"not-listed","checkedAt":"2026-10-28T20:25:31.474Z"},"coverage":[{"source":"NVD","status":"not-checked"},{"source":"GHSA","status":"not-checked"},{"source":"EUVD","status":"not-checked"},{"source":"EPSS","status":"not-checked"}],"evidence":[]}