CVE-2026-68956: SSH daemon allocates unbounded idle session channels, bypassing max_channels
Allocation of Resources Without Limits or Throttling vulnerability in Erlang/OTP ssh allows an authenticated remote attacker to exhaust node memory by repeatedly opening session channels that are never assigned a handler.
The "session" clause of sshconnection:handlemsg/4 checks only minimalremotemaxpacketsize before calling setupsession/5, which unconditionally builds a #channel{} record and stores it in the ETS channel cache. The maxchannels daemon option is consulted only by sshchannelsup:maxnumchannelsnotexceeded/2, which counts supervisor children, so a channel that never gets a shell, exec, or subsystem handler is invisible to the limit and setting the option to a finite value does not mitigate the attack. RFC 4254 section 5.1 permits many session channels per connection, and each record costs only a few hundred bytes, so a single authenticated connection can accumulate channels until the node runs out of memory and the emulator terminates, affecting every application on it. No file contents, credentials, or write access are obtainable.
This issue affects OTP from OTP 18.1.2 before OTP 27.3.4.18, OTP 28.5.0.7, and OTP 29.1.1, corresponding to ssh from 4.1.1 before 5.2.11.13, 5.5.2.6, and 6.0.6. Whether OTP before OTP 18.1.2, corresponding to ssh before 4.1.1, is affected is unknown.
Other sources
SSH daemon allocates unbounded idle session channels, bypassing maxchannels
— Microsoft
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 26.2.5.21-7 - Upgrade
Upgrade
Erlang/OTPto a version that resolves this vulnerability.Fixed in 27.3.4.18 - Upgrade
Upgrade
Erlang/OTP sshto a version that resolves this vulnerability.Fixed in 5.2.11.13
Event History
Frequently Asked Questions
Who can exploit this issue?
An attacker must be able to authenticate to the Erlang/OTP SSH daemon. A single authenticated remote connection can repeatedly open unhandled session channels and consume node memory.
Does configuring a finite max_channels value prevent the attack?
No. Unhandled session channels are stored in the ETS channel cache without becoming supervisor children, so they are not counted by the max_channels limit.
What is the impact if exploitation succeeds?
The attacker can exhaust memory until the Erlang emulator terminates, disrupting every application running on that node. The issue does not provide access to file contents, credentials, or write capabilities.
Which releases are affected?
Affected releases include OTP 17.0 through versions before OTP 27.3.4.18, OTP 28.5.0.7, and OTP 29.1.1. The provided data does not include the complete corresponding ssh version range.