GHSA-fpq5-4vwm-78x4 CVE-2023-48294
LibreNMS has Broken Access control on Graphs Feature
- Severity
- 4.3 / 10
- Medium · CVSS 3.1
- Exploit chance (EPSS)
- 0.69%
- Chance of exploitation in the next 30 days. Higher than 52.99% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Weakness
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
- Fix
23.11.0- Upgrade librenms/librenms to this version or later
Description
Summary
This vulnerability occurs when application is not checking access of each type of users as per their role and it autorizing the users to access any feature. When user access his Device dashboard in librenms, one request is going to graph.php to access image of graphs generated on the particular Device. This request can be accessed by lower privileged users as well and they can enumerate devices on librenms with their id or hostname.
Details
Give all details on the vulnerability. Pointing to the incriminated source code is very helpful for the maintainer.
PoC
-
Login with Lower privilege user
-
Go to /graph.php?width=150&height=45&device=1&type=device_ping_perf&from=1699022192&legend=no&bg=FFFFFF00&popup_title=ICMP+Response
-
If its showing image with "device*ping_perf" which confirms that there is device with id 1
-
Now you can change device parameter in above URL with hostname to check if that Hostname/IP exist or not like http://127.0.0.1:8000/graph.php?width=150&height=45&device=127.0.0.1&type=device_ping_perf&from=1699022192&legend=no&bg=FFFFFF00&popup_title=ICMP+Response
-
If device hostname doesn't exist then it should show 500 error
Check attached screenshots for more info
Vulnerable code: https://github.com/librenms/librenms/blob/fa93034edd40c130c2ff00667ca2498d84be6e69/html/graph.php#L19C1-L25C2
Above is vulnerable line of code from Line number 19-25 This is not checking privilege of users to access any device hostname, its just checking if user is authenticated or not
Impact
Low privilege users can see all devices registered by admin users by using this method
Solution
Implement privilege access control feature to check if low privilege user have access or not.
Screenshots:-
<img width="967" alt="Screenshot 2023-11-04 at 8 31 15 PM" src="https://user-images.githubusercontent.com/31764504/281085588-1c5d81b9-83d7-4ba8-baf3-03c95a99cefe.png"> <img width="973" alt="Screenshot 2023-11-04 at 8 31 36 PM" src="https://user-images.githubusercontent.com/31764504/281085614-7a4d13b0-d316-4d24-bdd2-05c3a80ffd59.png"> <img width="955" alt="Screenshot 2023-11-04 at 8 31 48 PM" src="https://user-images.githubusercontent.com/31764504/281085629-43aa2b6f-7b18-415f-8001-519bda45f918.png">
Affected versions
Packagist
| Package | Vulnerable | Fixed in |
|---|---|---|
| librenms/librenms | < 23.11.0 |
23.11.0 |
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
librenms/librenms Packagist → 23.11.0
- composer
composer require librenms/librenms:^23.11.0
Severity breakdown
CVSS 3.1 4.3
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Weakness
CWE-200: Exposure of Sensitive Information to an Unauthorized Actor
The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.
How to prevent it
- Architecture and Design: Compartmentalize the system to have "safe" areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area. Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.
References
Advisories
Packages
Other links
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-7w8c-qgxg-m7jx LibreNMS — Stored XSS via SNMP/Syslog Data in Legacy Templates | High | Also affects librenms/librenms |
| GHSA-7gww-x7fh-jf9j LibreNMS: SSRF-driven stored XSS via Oxidized API response fields in device showconfig page | Critical | Also affects librenms/librenms |
| GHSA-7cj5-v4pp-v632 LibreNMS: Stored XSS via graph_descr admin config settings echoed without escaping to all authenticated users | Medium | Also affects librenms/librenms |
| GHSA-jf24-8g2h-2wg7 LibreNMS Vulnerable to Remote Code Execution via AboutController | High | Also affects librenms/librenms |
| GHSA-c9fv-cgmm-2wg7 LibreNMS Vulnerable to Remote Code Execution by Signal Alert Transportation module | High | Also affects librenms/librenms |
| GHSA-jmqm-f8q4-v7wx LibreNMS: Reflected XSS via Proxmox instance/vmid GET parameters injected into document.title JavaScript assignment | Medium | Also affects librenms/librenms |
| GHSA-5gm9-622f-qcg5 LibreNMS: Cross-Site Scripting in ShowConfigController | Medium | Also affects librenms/librenms |
| GHSA-pr3g-phhr-h8fh LibreNMS is Vulnerable to Remote Code Execution by Arbitrary File Write | High | Also affects librenms/librenms |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor