VDB
Sign up
MEDIUM6.7

GHSA-4724-7jwc-3fpw

Grafana Spoofing originalUrl of snapshots

Quick fix

GHSA-4724-7jwc-3fpw — github.com/grafana/grafana: upgrade to the fixed version with the command below.

go get github.com/grafana/grafana@v9.2.8

Details

To create a snapshot (and insert an arbitrary URL) the built-in role Viewer is sufficient. When a dashboard is shared as a local snapshot, the following three fields are offered in the web UI for a user to fill out: • Snapshotname • Expire • Timeout(seconds) After the user confirms creation of the snapshot (i.e. clicks the ”Local Snapshot” button) an HTTP POST request is sent to the Grafana server. The HTTP request contains additional parameters that are not visible in the web UI. The parameter originalUrl is not visible in the web UI, but sent in the HTTP POST request.

The value of the originalUrl parameter is automatically generated. The purpose of the presented originalUrl parameter is to provide a user that views the snapshot the possibility to click on the button in the Grafana web UI and be presented with the dashboard that the snapshot was made out of.

The value of the originalUrl parameter can be arbitrarily chosen by a malicious user that creates the snapshot (Note: by editing the query thanks to a web proxy like Burp) When another user opens the URL of the snapshot, they will be presented with the regular web interface delivered by the trusted Grafana server. The issue here is that the ”Open original dashboard” button no longer points to the to the real original dashboard but to the attacker’s (injected) URL.

Are you affected?

Enter the version of the package you're using.

Affected packages

Go/github.com/grafana/grafana
Introduced in: 9.0.0Fixed in: 9.2.8
Fixgo get github.com/grafana/grafana@v9.2.8
Go/github.com/grafana/grafana
Introduced in: 0Fixed in: 8.5.16
Fixgo get github.com/grafana/grafana@v8.5.16

References