CVE-2026-102821: russh Unbounded Memory Exhaustion via CHANNEL_OPEN Flood During Client-Stalled Rekey
Summary
CVE-2026-102821: Russh: Unbounded memory exhaustion via CHANNEL_OPEN flood during a client-stalled rekey. Affects russh versions < 0.63.2. Fixed in 0.63.2. How to fix ↓
Check if this vulnerability affects your application
Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.
No signup required · Results in about 60 seconds
Background
russh is a Rust implementation of the SSH protocol, designed for secure communication over networks. It provides features such as key exchange, encryption, and authentication. The package is widely used for establishing secure connections in various applications. However, it has a vulnerability that can lead to unbounded memory growth, potentially causing denial of service (DoS) conditions.
Vulnerability Detail
The vulnerability arises from the handling of SSH key re-exchange messages. When a russh server initiates a key re-exchange but does not receive the expected follow-up message from the client, it enters a state where it cannot process incoming messages correctly. This allows an attacker to flood the server with CHANNEL_OPEN messages, leading to unbounded growth of the server's memory usage. The server's internal queue accumulates these messages without any limit, ultimately causing the process to run out of memory and be killed. This issue is present in the default configuration of the russh server and can be exploited using standard SSH messages.
How To Fix
Latest published version: 0.64.1 as of 22 Oct 2026
Upgrading to it may include breaking changes; the version below is the minimum fixed release for this vulnerability.
If you need the minimum change
0.63.2
This is the first release that contains the fix.
Tip — Not sure which version your app runs? Vulert can match this fix to it. Scan free →
Workaround
As a temporary workaround, you can limit the number of non-key exchange messages processed during a rekey. This can be done by implementing a cap on the number of CHANNEL_OPEN messages that can be accepted while a rekey is in progress. This will help mitigate the risk of memory exhaustion until the package can be updated.
Conclusion
The russh package has a significant vulnerability (CVE-2026-102821) that can lead to unbounded memory exhaustion through a specific attack vector during key re-exchange. It is crucial to update to the patched version (0.63.2) to mitigate this risk. Additionally, temporary workarounds can be implemented to limit exposure until the update is applied.
See every vulnerability recorded for russh →
FAQ
The CVSS score of this vulnerability is 6.5, indicating a moderate severity level.
You can use Vulert, which monitors and alerts for open-source vulnerabilities in real-time. Visit the Vulert playground at Vulert Scanner to check if your application is affected without needing to sign up.
If the vulnerability is not fixed, your server may become susceptible to denial of service attacks, leading to potential downtime and service unavailability.
Yes, the vulnerability affects russh versions up to and including 0.63.1. It is fixed in version 0.63.2 and later.
The primary impact is denial of service due to unbounded memory growth, which can lead to the server being killed when it runs out of memory.
References
Related vulnerabilities
Recent vulnerabilities recorded for russh.