etcd: Nested etcd transactions bypass RBAC authorization checks
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 3.5.28, 3.6.9, 3.4.42
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: partial
Summary
etcd is a distributed key-value store for the data of a distributed system. Prior to versions 3.4.42, 3.5.28, and 3.6.9, an authenticated user with RBAC restricted permissions on key ranges can use nested transactions to bypass all key-level authorization. This allows any authenticated user with direct access to etcd to effectively ignore all key range restrictions, accessing the entire etcd data store. Kubernetes does not rely on etcd’s built-in authentication and authorization. Instead, the API server handles authentication and authorization itself, so typical Kubernetes deployments are not affected. Versions 3.4.42, 3.5.28, and 3.6.9 contain a patch. If upgrading is not immediately possible, reduce exposure by treating the affected RPCs as unauthenticated in practice. Restrict network access to etcd server ports so only trusted components can connect and require strong client identity at the transport layer, such as mTLS with tightly scoped client certificate distribution.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- etcd-io etcd
From 3.5.0-alpha.0 · fixed in 3.5.28; From 3.6.0-alpha.0 · fixed in 3.6.9; fixed in 3.4.42
- go.etcd.io/etcdGo
All versions
- go.etcd.io/etcd/v3Go
fixed in 3.4.42; From 3.5.0-alpha.0 · fixed in 3.5.28; From 3.6.0-alpha.0 · fixed in 3.6.9
- go.etcd.io/etcd/v3Go
From 3.6.0-alpha.0 · fixed in 3.6.9
- go.etcd.io/etcd/v3Go
From 3.5.0-alpha.0 · fixed in 3.5.28
- go.etcd.io/etcd/v3Go
fixed in 3.4.42
- go.etcd.io/etcdGo
through 3.3.27