V3: etcd: `tlsListener.acceptLoop` spawns unbounded handshake goroutines with no deadline
Affects go.etcd.io/etcd/v3Source GCVE Database
Rated by Threat Radar
- Patch
- Available – fixed in 3.7.1, 3.6.14, 3.5.33
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NWhat to do
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| Gogo.etcd.io/etcd/v3 | Affected
| Fixed in
|
| Gogo.etcd.io/etcd/v3 | Affected
| Fixed in
|
| Gogo.etcd.io/etcd/v3 | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
A fix is available in etcd versions 3.5.33, 3.6.14, and 3.7.1. Users should upgrade to these or later versions to remediate this vulnerability. No other mitigations are specified.
Description
A vulnerability in etcd prior to versions 3.5.33, 3.6.14, and 3.7.1 allows a network attacker to cause unbounded growth of handshake goroutines by opening many TCP connections to the TLS listener and not completing the TLS handshake. This can exhaust memory and cause denial of service, impacting availability of the etcd cluster and dependent systems such as Kubernetes control planes.
Impact
An unauthenticated remote attacker can cause a denial of service by exhausting memory resources on the etcd server through unbounded goroutine creation during TLS handshakes. This can lead to loss of availability of the etcd cluster and, when etcd is used as the backing store for Kubernetes, disruption of the Kubernetes control plane.
Summary
etcd versions before 3.5.33, 3.6.14, and 3.7.1 contain a vulnerability in the tlsListener.acceptLoop function where each incoming TLS connection spawns a goroutine that blocks indefinitely during the TLS handshake if the client never sends a ClientHello message. These goroutines accumulate without limit, tracked in a pending map, leading to unbounded memory consumption and potential denial of service. This flaw allows a remote unauthenticated attacker with network access to the TLS listener to exhaust system resources and disrupt etcd availability. The issue is fixed in versions 3.5.33, 3.6.14, and 3.7.1.
Weaknesses
References
- github.com/etcd-io/etcd/security/advisories/GHSA-6vch-q96h-7gc3 (opens in a new tab)
- github.com/etcd-io/etcd/pull/22130 (opens in a new tab)
- github.com/etcd-io/etcd/commit/2e07efce9745004eb4773cffaada9b5cdf77cff2 (opens in a new tab)
- github.com/etcd-io/etcd/commit/f73cba7d920019f91a1ea1f6697833e42731f057 (opens in a new tab)
- github.com/etcd-io/etcd (opens in a new tab)
- github.com/etcd-io/etcd/releases/tag/v3.5.33 (opens in a new tab)
- github.com/etcd-io/etcd/releases/tag/v3.6.14 (opens in a new tab)
- github.com/etcd-io/etcd/releases/tag/v3.7.1 (opens in a new tab)