CVE-2023-47108
ADVISORY - githubSummary
Summary
The grpc Unary Server Interceptor opentelemetry-go-contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go
// UnaryServerInterceptor returns a grpc.UnaryServerInterceptor suitable
// for use in a grpc.NewServer call.
func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor {
out of the box adds labels
net.peer.sock.addr
net.peer.sock.port
that have unbound cardinality. It leads to the server's potential memory exhaustion when many malicious requests are sent.
Details
An attacker can easily flood the peer address and port for requests.
PoC
Apply the attached patch to the example and run the client multiple times. Observe how each request will create a unique histogram and how the memory consumption increases during it.
Impact
In order to be affected, the program has to configure a metrics pipeline, use UnaryServerInterceptor, and does not filter any client IP address and ports via middleware or proxies, etc.
Others
It is similar to already reported vulnerabilities.
- GHSA-5r5m-65gx-7vrh (open-telemetry/opentelemetry-go-contrib)
- GHSA-cg3q-j54f-5p7p (prometheus/client_golang)
Workaround for affected versions
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
.
Solution provided by upgrading
In PR #4322, to be released with v0.46.0, the attributes were removed.
References
Common Weakness Enumeration (CWE)
Allocation of Resources Without Limits or Throttling
Allocation of Resources Without Limits or Throttling
GitHub
3.9
Package | Type | OS Name | OS Version | Affected Ranges | Fix Versions |
---|---|---|---|---|---|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc | golang | - | - | <0.46.0 | 0.46.0 |
CVSS:3 Severity and metrics
The CVSS metrics represent different qualitative aspects of a vulnerability that impact the overall score, as defined by the CVSS Specification.
Attack Vector (AV)
Network
Attack Vector (AV)
Network
The vulnerable component is bound to the network stack, but the attack is limited at the protocol level to a logically adjacent topology. This can mean an attack must be launched from the same shared physical (e.g., Bluetooth or IEEE 802.11) or logical (e.g., local IP subnet) network, or from within a secure or otherwise limited administrative domain (e.g., MPLS, secure VPN to an administrative network zone). One example of an Adjacent attack would be an ARP (IPv4) or neighbor discovery (IPv6) flood leading to a denial of service on the local LAN segment (e.g., CVE-2013-6014).
Attack Complexity (AC)
Low
Attack Complexity (AC)
Low
Specialized access conditions or extenuating circumstances do not exist. An attacker can expect repeatable success when attacking the vulnerable component.
Privileges Required (PR)
None
Privileges Required (PR)
None
The attacker is unauthorized prior to attack, and therefore does not require any access to settings or files of the vulnerable system to carry out an attack.
User Interaction (UI)
None
User Interaction (UI)
None
The vulnerable system can be exploited without interaction from any user.
Scope (S)
Unchanged
Scope (S)
Unchanged
An exploited vulnerability can only affect resources managed by the same security authority. In this case, the vulnerable component and the impacted component are either the same, or both are managed by the same security authority.
Confidentiality (C)
None
Confidentiality (C)
None
There is no loss of confidentiality.
Integrity (I)
None
Integrity (I)
None
There is no loss of trust or accuracy within the impacted component.
Availability (A)
High
Availability (A)
High
There is a total loss of availability, resulting in the attacker being able to fully deny access to resources in the impacted component; this loss is either sustained (while the attacker continues to deliver the attack) or persistent (the condition persists even after the attack has completed). Alternatively, the attacker has the ability to deny some availability, but the loss of availability presents a direct, serious consequence to the impacted component.
NIST
3.9
Ubuntu
3.9
GoLang
-
Amazon
-
Amazon
-
Chainguard
CGA-pxp9-vcpx-c9gv
-
Chainguard
CGA-qcg5-9m5x-fr6w
-
Chainguard
CGA-r8jw-h755-9w74
-
Chainguard
CGA-vjj6-53w2-5j3x
-
Chainguard
CGA-vhgm-j33m-pp4m
-
Chainguard
CGA-vwc2-jf2w-fxjp
-
Chainguard
CGA-wm75-8mm3-grrc
-
Chainguard
CGA-w4g8-fq43-cj36
-
Chainguard
CGA-x4r6-3jhh-2h6f
-
Chainguard
CGA-xcfj-23mp-rgxx
-
Chainguard
CGA-www6-wg4f-cp3w
-
Chainguard
CGA-xj35-w6rj-qj5r
-
Chainguard
CGA-xxvv-x9hc-cprv
-
Chainguard
CGA-wvf3-f4c4-5px5
-
Chainguard
CGA-2f62-c37v-36ch
-
Chainguard
CGA-49w7-5qh9-mhj3
-
Chainguard
CGA-47f7-3fcw-jgwf
-
Chainguard
CGA-4724-gqwp-98cg
-
Chainguard
CGA-57h2-x7p8-6cv9
-
Chainguard
CGA-93vq-hhw7-gpmj
-
Chainguard
CGA-9p5f-vr5c-fg78
-
Chainguard
CGA-chgm-c93p-4fx5
-
Chainguard
CGA-c7wx-f339-pq6c
-
Chainguard
CGA-fq2c-pwr2-7xjm
-
Chainguard
CGA-fhj5-vmvm-65wx
-
Chainguard
CGA-g5v2-x88p-vcmg
-
Chainguard
CGA-gw7m-mhvq-98vj
-
Chainguard
CGA-hjqc-9fvr-hx3h
-
Chainguard
CGA-hwmp-8m7m-62vm
-
Chainguard
CGA-j7wv-5m2f-gwvg
-
Chainguard
CGA-j5cg-4f4c-pj84
-
Chainguard
CGA-jxx8-chxx-qf74
-
Chainguard
CGA-m6qm-g2p7-5x2j
-
Chainguard
CGA-mq4m-5c88-mp2v
-
Chainguard
CGA-mpvf-vpc6-gqrj
-
Chainguard
CGA-p6p3-r9mx-g3mv
-
Chainguard
CGA-p9gj-9f4f-q6m5
-