containerd CRI ExecSync Goroutine Leak Leading to Node-Level Denial of Service
- 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 1.7.35, 2.0.12, 2.2.8, 2.3.5
- 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: no
- Technical impact: partial
Summary
containerd is an open-source container runtime. Prior to 1.7.35, 2.0.12, 2.2.8, and 2.3.5, containerd on Linux with the CRI plugin enabled can indefinitely block the drainExecSyncIO goroutine in internal/cri/server/container_execsync.go when CRI ExecSync is used by exec probes or lifecycle hooks that launch long-lived background child processes retaining standard input and output pipes. The input and output drain phase has no default timeout and did not stop when the request context was canceled, so repeated ExecSync invocations can accumulate blocked goroutines and host memory. The resulting resource exhaustion can cause the OOM killer to terminate containerd, leaving the container runtime unavailable until restart. Deployments not using containerd's CRI implementation and containers not running on Linux are not affected. This issue is fixed in versions 1.7.35, 2.0.12, 2.2.8, and 2.3.5.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- containerd containerd
fixed in 1.7.35; From 2.0.0 · fixed in 2.0.12; From 2.2.0 · fixed in 2.2.8; From 2.3.0 · fixed in 2.3.5
- github.com/containerd/containerd/v2Go
fixed in 2.0.12
- github.com/containerd/containerdGo
fixed in 1.7.35
- github.com/containerd/containerd/v2Go
From 2.2.0 · fixed in 2.2.8
- github.com/containerd/containerd/v2Go
From 2.3.0 · fixed in 2.3.5
- github.com/containerd/containerd/v2Go
fixed in 2.0.12; From 2.2.0 · fixed in 2.2.8; From 2.3.0 · fixed in 2.3.5