CVE-2021-41174 - log back

CVE-2021-41174 edited at 03 Nov 2021 20:33:47
References
https://github.com/grafana/grafana/security/advisories/GHSA-3j9m-hcv9-rpj8
- https://github.com/grafana/grafana/commit/5c7224eb56801b22848470a50b50398bc06cc1e8
+ https://github.com/grafana/grafana/commit/34eda6123d9b21c2c0b2d0c0e6f2fb38e6cf60d5
+ https://github.com/grafana/grafana/commit/a3dc30546fce2e437d858c140f1ff307a04365d6
+ https://github.com/grafana/grafana/commit/8081dc9ee913a1bf4b98f99e78661db88a6dc1ef
+ https://github.com/grafana/grafana/commit/1c7ce348ce4363c55992ed5772f96981d1a86f7e
CVE-2021-41174 edited at 03 Nov 2021 14:38:22
Severity
- Unknown
+ Medium
Remote
- Unknown
+ Remote
Type
- Unknown
+ Cross-site scripting
Description
+ A security issue has been found in Grafana before version 8.2.3. If an attacker is able to convince a victim to visit a URL referencing a vulnerable page, arbitrary JavaScript content may be executed within the context of the victim's browser.
+
+ The user visiting the malicious link must be unauthenticated and the link must be for a page that contains the login button in the menu bar.
+
+ There are two ways an unauthenticated user can open a page in Grafana that contains the login button:
+ - Anonymous authentication is enabled. This means all pages in Grafana would be open for the attack.
+ - The link is to an unauthenticated page. The following pages are vulnerable:
+ - /dashboard-solo/snapshot/*
+ - /dashboard/snapshot/*
+ - /invite/:code
+
+ The url has to be crafted to exploit AngularJS rendering and contain the interpolation binding for AngularJS expressions. AngularJS uses double curly braces for interpolation binding: {{ }}
+
+ An example of an expression would be: "{{constructor.constructor(‘alert(1)’)()}}". This can be included in the link URL like this:
+
+ https://play.grafana.org/dashboard/snapshot/%7B%7Bconstructor.constructor('alert(1)')()%7D%7D?orgId=1
+
+ When the user follows the link and the page renders, the login button will contain the original link with a query parameter to force a redirect to the login page. The URL is not validated and the AngularJS rendering engine will execute the JavaScript expression contained in the URL.
References
+ https://github.com/grafana/grafana/security/advisories/GHSA-3j9m-hcv9-rpj8
+ https://github.com/grafana/grafana/commit/5c7224eb56801b22848470a50b50398bc06cc1e8
Notes
+ Workaround
+ ==========
+
+ To mitigate the issue, a reverse proxy or similar can be used to block access to block the literal string "{{" in the path.
CVE-2021-41174 created at 03 Nov 2021 14:33:16