Path Traversal in JSON Plugin in Grafana
- Advisory ID:
- CVE-2023-5123
- Published:
- 2024-02-14
- Product:
- Grafana JSON Plugin
- CVSS Score:
- 8.0
- CVSS Vector:
- CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
- Fixed Versions:
- 1.3.21+
Summary
Grafana is an open-source platform for monitoring and observability. The JSON datasource plugin is a Grafana Labs maintained plugin that allows for retrieving and processing JSON data from a remote endpoint (including a specific sub-path) configured by an administrator. Due to inadequate sanitization of the dashboard-supplied path parameter, it was possible to include path traversal characters (../) in the path parameter and send requests to paths on the configured endpoint outside the configured sub-path.
This means that if the datasource was configured by an administrator to point at some sub-path of a domain (e.g. https://example.com/api/some_safe_api/), it was possible for an editor to create a dashboard referencing the datasource which issues queries containing path traversal characters, which would in turn cause the datasource to instead query arbitrary subpaths on the configured domain (e.g. https://example.com/api/admin_api/).
In the rare case that this plugin is configured by an administrator to point back at the Grafana instance itself, this vulnerability becomes considerably more severe, as an administrator browsing a maliciously configured panel could be compelled to make requests to Grafana administrative API endpoints with their credentials, resulting in the potential for privilege escalation.
UPDATE: Thanks to NguyenHoan for reporting a bypass of this fix. Version 1.3.16 has a fix for this bypass.
UPDATE 2: Thanks to isacaya for reporting a bypass of this fix. Version 1.3.21 has a fix for this bypass.