CVE-2023-25151 DoS vulnerability for high cardinality metrics in opentelemetry-go-contrib
Attackers can cause memory exhaustion and denial of service by sending requests with unique query strings, affecting applications using the OpenTelemetry Go contrib library.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2023-25151?
CVE-2023-25151 is a high-severity denial of service vulnerability in open-telemetry opentelemetry-go-contrib, published on 8 Feb 2023. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
opentelemetry-go-contrib is a collection of extensions for OpenTelemetry-Go. The v0.38.0 release of `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` uses the `httpconv.ServerRequest` function to annotate metric measurements for the `http.server.request_content_length`, `http.server.response_content_length`, and `http.server.duration` instruments. The `ServerRequest` function sets the `http.target` attribute value to be the whole request URI (including the query string)[^1]. The metric instruments do not "forget" previous measurement attributes when `cumulative` temporality is used, this means the cardinality of the measurements allocated is directly correlated with the unique URIs handled. If the query string is constantly random, this will result in a constant increase in memory allocation that can be used in a denial-of-service attack. This issue has been addressed in version 0.39.0. Users are advised to upgrade. There are no known workarounds for this issue.
Weakness: CWE-400
Which versions are affected by CVE-2023-25151?
5 open source packages ship an affected version, including go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp and go.opentelemetry.io/contrib/instrumentation/github.com/astaxie/beego/otelbeego. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp Go | From 0.38.0 | 0.39.0 |
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp Go | From 0.38.0 | 0.39.0 |
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp Go | From 0.38.0 | 0.39.0 |
go.opentelemetry.io/contrib/instrumentation/github.com/astaxie/beego/otelbeego Go | From 0.38.0 | 0.39.0 |
go.opentelemetry.io/contrib/instrumentation/github.com/astaxie/beego/otelbeego Go | From 0.38.0 | 0.39.0 |
Products include Linuxfoundation Opentelemetry-Go Contrib.
How do I fix CVE-2023-25151?
Upgrade go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp to 0.39.0 or later.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is CVE-2023-25151 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2023-25151 exists.
Sources
Also known as CLEANSTART-2026-DN40757, CLEANSTART-2026-PP55064, GHSA-5r5m-65gx-7vrh, GO-2023-1546, UBUNTU-CVE-2023-25151.