CVE-2026-102821: Russh: Unbounded memory exhaustion via CHANNEL_OPEN flood during a client-stalled rekey
Russh is a Rust SSH client and server library. Prior to 0.63.2, an authenticated remote peer can send SSHMSGKEXINIT without the required SSHMSGKEXECDHINIT and then flood SSHMSGCHANNELOPEN messages while SessionKexState::InProgress prevents priorityreceiver in russh/src/server/session.rs from being drained. The server continues processing network input and enqueues a ChannelOpenReply for each request on an unbounded channel, allowing one connection to grow memory until the process is terminated. This issue is fixed in version 0.63.2.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
russhto a version that resolves this vulnerability.Fixed in 0.63.2
Event History
Frequently Asked Questions
Who can exploit this issue?
An authenticated remote SSH peer can exploit it. The attacker needs a valid authenticated connection to a server using the affected Russh library.
What conditions are required to trigger the memory exhaustion?
The peer sends SSH_MSG_KEXINIT but does not send the required SSH_MSG_KEX_ECDH_INIT, leaving rekeying in progress. It then floods the connection with SSH_MSG_CHANNEL_OPEN messages, causing ChannelOpenReply messages to accumulate on an unbounded channel.
What is the impact on an affected server?
A single malicious connection can cause unbounded memory growth until the server process is terminated. The reported impact is availability loss; no confidentiality or integrity impact is specified.
Which versions are affected and how should this be remediated?
Russh versions prior to 0.63.2 are affected. Upgrade to version 0.63.2, which contains the fix.