Improper Path Sanitization in JSON Datasource Plugin

High
Advisory ID:CVE-2023-5123
Published:2024-02-14
Last Updated:2024-06-18
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.