CVE-2026-53495: containerd CRI ExecSync Goroutine Leak Leading to Node-Level Denial of Service

Published Sep 9, 2026
·
Updated

Impact

A bug in containerd's CRI ExecSync implementation allows exec probes and lifecycle hooks with background child processes to keep containerd's stdio-drain goroutines indefinitely blocked. Because the I/O drain phase lacks a default timeout or context cancellation handling, repeated ExecSync invocations (like probes) that include long-lived background processes against a container can cause containerd to leak goroutines and host memory. Over time, this resource exhaustion can cause the containerd daemon to be terminated by the OOM killer, rendering containerd unavailable until it is restarted. This issue affects containerd on Linux systems running with the CRI plugin enabled. Users not using containerd's CRI implementation or not running containers on Linux are not affected.

Patches

This bug has been fixed in containerd 2.3.5, 2.2.8, 2.0.12, and 1.7.35. Users should update to these versions to resolve the issue.

Workarounds

Ensure exec probes and lifecycle hooks do not launch long-lived background child processes.

Credits

The containerd project would like to thank XlabAI Team of Tencent Xuanwu Lab (xlabai@tencent.com), including Guannan Wang, Zhanpeng Liu, Jiashuo Liang, and Guancheng Li, and @IamwhatIamSY who independently discovered and responsibly disclosed this issue in accordance with the containerd security policy.

For more information

If there are any questions or comments about this advisory:

Open an issue in containerd Send an email to security@containerd.io

To report a security issue in containerd: Report a new vulnerability Send an email to security@containerd.io

Other sources

containerd CRI ExecSync Goroutine Leak Leading to Node-Level Denial of Service

— Microsoft

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/containerexecsync.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.

— NVD

Affected Software

13 affected componentsFixes available
go/github.com/containerd/containerd/v2>=2.3.0<2.3.5
2.3.5
go/github.com/containerd/containerd/v2>=2.2.0<2.2.8
2.2.8
go/github.com/containerd/containerd<1.7.35
1.7.35
go/github.com/containerd/containerd/v2<2.0.12
2.0.12
Microsoft azl3 containerd2 2.2.4-8<2.3.4-1
2.3.4-1
Microsoft azl3 containerd2 2.3.4-1<2.3.4-1
2.3.4-1
All of the following
azurelinux/moby-containerd-cc<1.7.7-19
1.7.7-19
Microsoft Azure Linux=3.0
All of the following
azurelinux/containerd2<2.3.4-1
2.3.4-1
Microsoft Azure Linux=3.0
All of the following
azurelinux/containerd2<2.3.7-1
2.3.7-1
Microsoft Azure Linux=3.0
alpine/containerd<2.3.5-r0
2.3.5-r0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/containerd/containerd/v2 to a version that resolves this vulnerability.

    Fixed in 2.3.5
  2. Upgrade

    Upgrade go/github.com/containerd/containerd/v2 to a version that resolves this vulnerability.

    Fixed in 2.2.8
  3. Upgrade

    Upgrade go/github.com/containerd/containerd to a version that resolves this vulnerability.

    Fixed in 1.7.35
  4. Upgrade

    Upgrade go/github.com/containerd/containerd/v2 to a version that resolves this vulnerability.

    Fixed in 2.0.12
  5. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 2.3.4-1
  6. Upgrade

    Upgrade azurelinux/moby-containerd-cc to a version that resolves this vulnerability.

    Fixed in 1.7.7-19
  7. Upgrade

    Upgrade azurelinux/containerd2 to a version that resolves this vulnerability.

    Fixed in 2.3.4-1
  8. Upgrade

    Upgrade azurelinux/containerd2 to a version that resolves this vulnerability.

    Fixed in 2.3.7-1
  9. Upgrade

    Upgrade alpine/containerd to a version that resolves this vulnerability.

    Fixed in 2.3.5-r0
  10. Upgrade

    Upgrade containerd to a version that resolves this vulnerability.

    Fixed in 1.7.35
  11. Upgrade

    Upgrade containerd to a version that resolves this vulnerability.

    Fixed in 2.0.12
  12. Upgrade

    Upgrade containerd to a version that resolves this vulnerability.

    Fixed in 2.2.8
  13. Upgrade

    Upgrade containerd to a version that resolves this vulnerability.

    Fixed in 2.3.5
  14. Configuration

    Ensure exec probes and lifecycle hooks do not launch long-lived background child processes that retain standard input and output pipes when CRI ExecSync is used.

    containerd (CRI plugin) exec probes/lifecycle hooks Background child processes retaining standard input/output pipes = Do not launch long-lived background child processes

Event History

Sep 9, 2026
Advisory Published
via GitHub·06:01 PM
Data Sourced
via GitHub·06:01 PM
DescriptionWeaknessAffected Software
Sep 14, 2026
CVE Published
via MITRE·05:18 PM
Data Sourced
via MITRE·05:18 PM
DescriptionWeakness
Data Sourced
via OSV·05:18 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·06:17 PM
DescriptionSeverityWeakness
Sep 16, 2026
Data Sourced
via Microsoft·08:02 AM
DescriptionSeverityWeaknessAffected Software
Nov 3, 2026
Data Sourced
via OSV·06:33 AM
Affected Software

Frequently Asked Questions

1

Which deployments are affected?

Affected deployments are Linux systems running containerd with the CRI plugin enabled. Systems not using containerd's CRI implementation, or not running containers on Linux, are not affected.

2

What conditions are needed to trigger the resource exhaustion?

An exec probe or lifecycle hook must launch a long-lived background child process. Repeated ExecSync invocations, such as recurring probes, can then leave stdio-drain goroutines blocked and progressively consume host memory.

3

What can be done before an update is available?

Ensure that exec probes and lifecycle hooks do not launch long-lived background child processes. This avoids the condition that causes the blocked goroutines and memory leak.

4

Which containerd releases contain the fix?

The issue is fixed in containerd 2.3.5, 2.2.8, 2.0.12, and 1.7.35.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203