Arbitrary redirects under /new endpoint
🔗 CVE IDs covered (1)
📋 Description
Impact
In 2.23.0, Prometheus changed its default UI to the New ui. To ensure a seamless transition, the URL's prefixed by /new redirect to /. Due to a bug in the code, it is possible for an attacker to craft an URL that can redirect to any other URL, in the /new endpoint.
If a user visits a prometheus server with a specially crafted address (e.g.: http://127.0.0.1:9090/new/new<url>), they can be redirected to an arbitrary URL.
e.g. if a user visits http://127.0.0.1:9090/new/newhttp://www.google.com/, they will be redirected to http://google.com.
Patches
The issue will be patched in 2.26.1 and 2.27.1 releases. In 2.28.0, the /new endpoint will be removed completely.
Workarounds
The workaround is to disable access to /new via a reverse proxy in front of Prometheus.
Note: Users who use a --web.external-url= flag with a path (e.g. --web.external-url=http://example.com/prometheus) are not affected.
For more information
If you have any questions or comments about this advisory, please use our community channels (https://prometheus.io/community). Our security policy is available at https://prometheus.io/docs/operating/security/
🎯 Affected products3
- go/github.com/prometheus/prometheus:>= 2.23.0, < 2.26.1
- go/github.com/prometheus/prometheus:= 2.27.0
- go/github.com/prometheus/prometheus:> 0.0.0-20201116123734-de1c1243f4dd, < 0.0.0-20210518124745-db7f0bcec27b