CVE-2026-10601 is a medium-severity (CVSS 5.4) Path Traversal vulnerability in github.com/grafana/grafana. A fix is available for github.com/grafana/grafana — see the affected versions and patch details below.
Path traversal in the Tempo and Loki data source plugins
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2026-10601.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2026-10601 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 394,803 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
github.com/grafana/grafana🐹github.com/grafana/grafana🐹github.com/grafana/grafana🐹github.com/grafana/grafana🐹github.com/grafana/grafana🐹github.com/grafana/grafanaReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
The Tempo and Loki datasource plugins construct backend HTTP requests by interpolating user-supplied input into URL paths without sanitization, enabling path traversal. A Viewer-role user can: (1) capture admin-configured datasource credentials (secureJsonData custom headers) by traversing to an attacker-controlled endpoint, (2) invoke state-changing admin endpoints on Tempo (e.g. /flush, /shutdown), and (3) exfiltrate internal service data via Loki's CallResource which returns full HTTP response bodies.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/grafana/grafana | ≥ 2.0.0-beta1 | No fix |
| 🐹Go | github.com/grafana/grafana | ≥ 12.0.0 | No fix |
| 🐹Go | github.com/grafana/grafana | ≥ 12.3.0 | No fix |
| 🐹Go | github.com/grafana/grafana | ≥ 13.0.0 | No fix |
| 🐹Go | github.com/grafana/grafana | ≥ 12.4.0 | No fix |
| 🐹Go | github.com/grafana/grafana | all versions | 1.9.2-0.20260616075434-82ef13993059go get github.com/grafana/grafana@v1.9.2-0.20260616075434-82ef13993059 |
Affected Products
grafanagrafanaDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/grafana/grafana, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
No patched version of github.com/grafana/grafana has shipped for CVE-2026-10601 yet. Where your build allows, override or pin the dependency away from the vulnerable range, and apply any maintainer-recommended mitigation.
Workarounds
Resolve every user-supplied path to its canonical form and reject anything that escapes the intended directory, and run the component under an account that has no read or write access outside the directory it legitimately serves.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat Hardened Images | tempo2-10-main-2.10.8-0.2.hum1 | RHSA-2026:62527 |
| Red Hat Hardened Images | tempo3-0-main-3.0.3-0.2.hum1 | RHSA-2026:62537 |
| Red Hat Hardened Images | loki3-6-main-3.6.16-0.1.hum1 | RHSA-2026:64525 |
| Red Hat Hardened Images | loki3-7-main-3.7.7-0.1.hum1 | RHSA-2026:64585 |
| Red Hat Hardened Images | grafana13-1-main-13.1.3-0.9.hum1 | RHSA-2026:67573 |
| Red Hat Hardened Images | grafana13-2-main-13.2.1-0.4.hum1 | RHSA-2026:67605 |
| Red Hat Hardened Images | grafana12-4-main-12.4.10-0.4.hum1 | RHSA-2026:68143 |
Frequently Asked Questions
Is CVE-2026-10601 in your dependencies?
Find it across Go, including transitive dependencies.