CVE-2022-21703: Cross Site Request Forgery in Grafana
A Cross-site request forgery (CSRF) vulnerability was found in Grafana. This flaw allows anonymous attackers to elevate their privileges by mounting cross-origin attacks against authenticated high-privilege Grafana users (for example, editors or admins). An attacker can exploit this vulnerability for privilege escalation by tricking an authenticated user into inviting the attacker as a new user with high privileges.
Other sources
A CSRF vulnerability was found in Grafana. This flaw allows anonymous attackers to elevate their privileges by mounting cross-origin attacks against authenticated high-privilege Grafana users (for example Editors or Admins). An attacker can exploit this vulnerability for privilege escalation, by tricking an authenticated user into inviting the attacker as a new user with high privileges.
GitHub security advisory: https://github.com/grafana/grafana/security/advisories/GHSA-cmf4-h3xc-jw8w
Grafana blog post: https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/
— Red Hat
Grafana is an open-source platform for monitoring and observability. Affected versions are subject to a cross site request forgery vulnerability which allows attackers to elevate their privileges by mounting cross-origin attacks against authenticated high-privilege Grafana users (for example, Editors or Admins). An attacker can exploit this vulnerability for privilege escalation by tricking an authenticated user into inviting the attacker as a new user with high privileges. Users are advised to upgrade as soon as possible. There are no known workarounds for this issue.
Today we are releasing Grafana 8.3.5 and 7.5.15. This patch release includes MEDIUM severity security fix for Cross Site Request Forgery for Grafana.
Release v.8.3.5, only containing security fixes:
- Download Grafana 8.3.5 - Release notes
Release v.7.5.15, only containing security fixes:
- Download Grafana 7.5.15 - Release notes
CSRF (CVE-2022-21703)
Summary On Jan. 18, security researchers jub0bs and abrahack contacted Grafana to disclose a CSRF vulnerability which allows anonymous attackers to elevate their privileges by mounting cross-origin attacks against authenticated high-privilege Grafana users (for example, Editors or Admins).
We believe that this vulnerability is rated at CVSS 6.8 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:N).
Impact An attacker can exploit this vulnerability for privilege escalation by tricking an authenticated user into inviting the attacker as a new user with high privileges.
Affected versions with MEDIUM severity All Grafana >=3.0-beta1 versions are affected by this vulnerability.
Solutions and mitigations
All installations after Grafana v3.0-beta1 should be upgraded as soon as possible.
Note that if you are running Grafana behind any reverse proxy, you need to make sure that you are passing the original Host and Origin headers from the client request to Grafana.
In the case of Apache Server, you need to add ProxyPreserveHost on in your proxy configuration. In case of NGINX, you can need to add proxysetheader Host $httphost; in your configuration.
Appropriate patches have been applied to Grafana Cloud and as always, we closely coordinated with all cloud providers licensed to offer Grafana Pro. They have received early notification under embargo and confirmed that their offerings are secure at the time of this announcement. This is applicable to Amazon Managed Grafana.
Timeline and postmortem
Here is a detailed timeline starting from when we originally learned of the issue. All times in UTC. - 2022-01-18 03:00 Issue submitted by external researchers - 2022-01-18 17:25 Vulnerability confirmed reproducible - 2022-01-19 07:40 CVSS score confirmed 6.8 at maximum and MEDIUM impact - 2022-01-19 07:40 Begin mitigation for Grafana Cloud - 2022-01-19 17:00 CVE requested - 2022-01-19 19:50 GitHub issues CVE-2022-21703 - 2022-01-21 10:50 PR with fix opened - 2022-01-21 14:13 Private release planned for 2022-01-25, and public release planned for 2022-02-01. - 2022-01-25 12:00 Private release - 2022-02-01 12:00 During the public release process, we realized that private 7.x release was incomplete. Abort public release, send second private release to customers using 7.x - 2022-02-08 12:00 Public release
Acknowledgement
We would like to thank jub0bs and abrahack for responsibly disclosing the vulnerability.
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.
— GitHub
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
redhat/grafanato a version that resolves this vulnerability.Fixed in 0:7.5.15-3.el8 - Upgrade
Upgrade
redhat/grafanato a version that resolves this vulnerability.Fixed in 0:7.5.15-3.el9 - Upgrade
Upgrade
go/github.com/grafana/grafana/pkg/webto a version that resolves this vulnerability.Fixed in 8.3.5 - Upgrade
Upgrade
go/github.com/grafana/grafana/pkg/webto a version that resolves this vulnerability.Fixed in 7.5.15 - Upgrade
Upgrade
redhat/grafanato a version that resolves this vulnerability.Fixed in 7.5.15 - Upgrade
Upgrade
redhat/grafanato a version that resolves this vulnerability.Fixed in 8.3.5 - Upgrade
Upgrade
Grafanato a version that resolves this vulnerability.Fixed in 7.5.15Patch GHSA-cmf4-h3xc-jw8w - Upgrade
Upgrade
Grafanato a version that resolves this vulnerability.Fixed in 8.3.5Patch GHSA-cmf4-h3xc-jw8w - Configuration
In the NGINX configuration, add/ensure: `proxy_set_header Host $http_host;`
NGINX reverse proxy proxy_set_header Host = $http_host - Configuration
In the Apache proxy configuration, add/ensure: `ProxyPreserveHost on`
Apache reverse proxy (mod_proxy) ProxyPreserveHost = on - Compensating control
If Grafana is running behind a reverse proxy, ensure you are passing the original Host and Origin headers from the client request to Grafana (otherwise CSRF protection/workarounds may not function correctly).
Event History
Parent advisories
This vulnerability appears in the following advisories.
Frequently Asked Questions
What is CVE-2022-21703?
CVE-2022-21703 is a cross-site request forgery (CSRF) vulnerability found in Grafana, an open-source platform for monitoring and observability.
How does CVE-2022-21703 affect Grafana?
CVE-2022-21703 allows attackers to elevate their privileges by mounting cross-origin attacks against authenticated high-privilege Grafana users, such as Editors.
What is the severity of CVE-2022-21703?
The severity of CVE-2022-21703 is medium, with a CVSS score of 6.8.
Which versions of Grafana are affected by CVE-2022-21703?
Grafana versions up to and including 7.5.15 and versions up to and including 8.3.5 are affected by CVE-2022-21703.
How can I fix CVE-2022-21703 in Grafana?
To fix CVE-2022-21703, you need to upgrade your Grafana installation to version 7.5.16 or 8.3.6, which contain the security fixes.