Vulnerability · Published Nov 10, 2023 · Assigned by GitHub_M
CVE-2023-47108DoS vulnerability in otelgrpc (uncontrolled resource consumption) due to unbound cardinality metrics
High 7.5
In plain English
A high-severity resource allocation without limits in opentelemetry-go-contrib from open-telemetry. Proof-of-concept exploit code is public. The chance it is exploited in the next 30 days is estimated at 2.0% (higher than 81% of all known vulnerabilities). Ready-made attack tooling exists: public proof-of-concept code. Fixed versions are available - upgrade the affected package.
Official description
OpenTelemetry-Go Contrib is a collection of third-party packages for OpenTelemetry-Go. Starting in version 0.37.0 and prior to version 0.46.0, the grpc Unary Server Interceptor out of the box adds labels `net.peer.sock.addr` and `net.peer.sock.port` that have unbound cardinality. It leads to the server's potential memory exhaustion when many malicious requests are sent. An attacker can easily flood the peer address and port for requests. Version 0.46.0 contains a fix for this issue. As a workaround to stop being affected, a view removing the attributes can be used. The other possibility is to disable grpc metrics instrumentation by passing `otelgrpc.WithMeterProvider` option with `noop.NewMeterProvider`.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| Go | go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | 0.46.0 | GHSA-8pgv-569h-w5rw |
| Go | go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | 0.46.0 | GO-2023-2331 |
| Ubuntu:25.10 | golang-opentelemetry-contrib | no fix listed | UBUNTU-CVE-2023-47108 |
| Ubuntu:26.04:LTS | golang-opentelemetry-contrib | no fix listed | UBUNTU-CVE-2023-47108 |
| Ubuntu:26.10 | golang-opentelemetry-contrib | no fix listed | UBUNTU-CVE-2023-47108 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| open-telemetry | opentelemetry-go-contrib | >= 0.37.0, < 0.46.0 |
Weakness: CWE-770 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
References
- https://github.com/open-telemetry/opentelemetry-go-contrib/security/advisories/GHSA-8pgv-569h-w5rw x_refsource_CONFIRM
- https://github.com/open-telemetry/opentelemetry-go-contrib/pull/4322 x_refsource_MISC
- https://github.com/open-telemetry/opentelemetry-go-contrib/commit/04c5dcbb5b35f14b4e6793b245919c72addbc7d0 x_refsource_MISC
- https://github.com/open-telemetry/opentelemetry-go-contrib/commit/b44dfc9092b157625a5815cb437583cee663333b x_refsource_MISC
- https://github.com/open-telemetry/opentelemetry-go-contrib/blob/9d4eb7e7706038b07d33f83f76afbe13f53d171d/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go#L327 x_refsource_MISC
- https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/google.golang.org/grpc/otelgrpc/v0.45.0/instrumentation/google.golang.org/grpc/otelgrpc/config.go#L138 x_refsource_MISC
- https://pkg.go.dev/go.opentelemetry.io/otel/metric/noop#NewMeterProvider x_refsource_MISC