Skip to content

CVE-2021-43813: Grafana directory traversal for `.md` files, 5.0.0 - 8.3.1

Moderate
tolzhabayev published GHSA-c3q8-26ph-9g2q Dec 10, 2021

Package

TBD (Grafana)

Affected versions

5.0.0 - 8.3.1

Patched versions

8.3.2, 7.5.12

Description

Today we are releasing Grafana 8.3.2 and 7.5.12. This patch release includes a moderate severity security fix for directory traversal for fully lowercase or fully uppercase .md files: CVE-2021-43813

The vulnerability is limited in scope, and only allows access to files with the extension .md to authenticated users only.

This is a follow-up patch release to our recent CVE-2021-43798 release. If you haven’t read about that high severity security fix, we recommend that you review the initial blog post, along with our update on the 0day.

Given the attention CVE-2021-43798 has brought, there’s a risk that additional researchers will find CVE-2021-43813. Out of an abundance of caution and given that CVE-2021-43813 is only CVSS Score 4.3 Moderate CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N through their limited scope we are immediately releasing to the public, and on a Friday.

We identified several vulnerability issues in the last few weeks, and at a higher rate than in the years before. The infosec industry usually comes together after a few CVEs and we benefit from that extra scrutiny. Although it can be difficult, ultimately it's for the overall benefit of Grafana and the community. Please know that this is a top priority for us. We are spending significant resources on this in the remainder of 2021 already, including full outside assessment. We will continue and increase this investment in 2022 and beyond.

Release 8.3.2, only containing security fixes:

Release 7.5.12, only containing security fixes:

Directory Traversal CVE-2021-43813

Summary

CVSS Score: 4.3 Moderate CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

On 2021-12-09, GitHub Security Labs notified us of a vulnerability through which authenticated users could read out fully lowercase or fully uppercase .md files through directory traversal. Doing our own follow-up investigation we found a related vulnerability through which authenticated users could read out arbitrary .csv files through directory traversal. Thanks to our defense-in-depth approach, at no time has Grafana Cloud been vulnerable.

The vulnerable URL path is: /api/plugins/.*/markdown/.* for .md files

Affected versions with moderate severity

CVE-2021-43813: Grafana 5.0.0 to 8.3.1

Solutions and mitigations

All installations between 5.0.0 and 8.3.1 should be upgraded as soon as possible.

If you can not upgrade, running a reverse proxy in front of Grafana that normalizes the PATH of the request will mitigate the vulnerability. The proxy will have to also be able to handle url encoded paths. Alternatively, for fully lowercase or fully uppercase .md files, you can block /api/plugins/.*/markdown/.* without losing any functionality beyond inlined plugin help text.

Thanks to our defense-in-depth approach, Grafana Cloud instances have not been affected by the vulnerability.

Detecting exploits

Search your request logs for requests matching ..%2f.

Timeline and postmortem

Here is a detailed timeline starting from when we originally learned of the issue. All times in UTC.

  • 2021-12-09 14:32: Github Security Labs notify us about the .md vulnerability
  • 2021-12-09 15:02: Incident channel is open and announced
  • 2021-12-09 15:11: CVE is requested / GitHub Advisory is created
  • 2021-12-09 15:20: Investigation into potentially related issues started
  • 2021-12-09 15:22: Issue reproduced and confirmed that it is limited to *.md files
  • 2021-12-09 15:27: Confirmed that Hosted Grafana is protected by the reverse proxy, similar to previous CVE
  • 2021-12-09 16:07: Possibly /api/ds/query is affected and might be leveraged to read .csv files via path traversal
  • 2021-12-09 16:10: PR with a possible fix the markdown path traversal is raised in private mirror repo
  • 2021-12-09 16:42: We have confirmed that .csv files are also affected in some cases
  • 2021-12-09 19:05: Fix confirmed
  • 2021-12-09 23:00: Decision release to direct to public on 2021-12-10 14:30 UTC
  • 2021-12-09 23:36: Announcement email sent to customers
  • 2021-12-10 10:11: Decision to split out .csv vulnerability into its own CVE

Acknowledgement

We would like to thank the GitHub Security Lab team for responsibly disclosing CVE-2021-43813 to us.

Reporting security Issues

If you think you have found a security vulnerability, please send a report to security@grafana.com. This address can be used for all of
Grafana Labs' open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address. We would prefer that you encrypt your message to us by using our PGP key. The key fingerprint is

F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA

The key is available from keyserver.ubuntu.com.

Security announcements

We maintain a security category on our blog, where we will always post a summary, remediation, and mitigation details for any patch containing security fixes.

You can also subscribe to our RSS feed.

Severity

Moderate
4.3
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

CVE ID

CVE-2021-43813

Weaknesses

No CWEs