CVE-2026-46702
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk19th percentile - higher than 19% of all known CVEs
Summary
The Russh Rust SSH library versions 0.34.0 through 0.61.1 have a vulnerability related to SSH compression. When compression is enabled, a remote peer can send a compressed packet that decompresses to a much larger size than allowed, leading to resource exhaustion.
Risk Assessment
An attacker can remotely cause a denial of service (DoS) by exhausting system resources, especially in older versions before 0.58.0 where the use of CryptoVec worsens the impact.
Recommendation
Immediately update the Russh library to version 0.61.1 or later, which contains the fix.
Other vulnerabilities in Russh
See all- CVE-2026-68930Medium
Russh library before version 0.62.5 dispatches channel-scoped Handler callbacks for recipient channel IDs that were never opened or confirmed. The issue is fixed in version 0.62.5.
- CVE-2026-42189High
In the russh library, which is a Rust SSH client and server, prior to version 0.60.1, there is a pre-authentication denial-of-service vulnerability in the keyboard-interactive authentication handler. A malicious client can crash any russh-based server implementing this authentication by sending a single malformed packet.
- CVE-2026-73489Medium
Russh prior to version 0.62.4 has a denial-of-service vulnerability. An authenticated SSH client can send a pty-req channel request with more than 130 terminal-mode records. The parser in russh/src/server/encrypted.rs stores terminal modes in a fixed 130-entry array but continues increasing the mode count, leading to an out-of-bounds slice and panic before the pty_request handler runs.
- CVE-2026-73430Medium
Russh is a Rust SSH client & server library. Prior to 0.62.4, an unauthenticated SSH client can cause a denial of service by sending SSH_MSG_KEX_ECDH_INIT with a 32-byte all-zero Q_C value. Curve25519Kex::server_dh in russh/src/kex/curve25519.rs accepts the all-zero peer public value and computes an all-zero shared secret, after which compute_exchange_hash calls encode_mpint in russh/src/kex/mod.rs and indexes beyond the end of the input while skipping leading zero bytes. The resulting panic occurs before authentication and terminates the server key-exchange task. This issue is fixed in version 0.62.4.
- CVE-2026-73429Medium
Russh is a Rust SSH client & server library. Prior to 0.62.4, a malicious SSH server can crash a russh client session with a malformed KEX_ECDH_REPLY containing a server ephemeral value that is not 32 bytes long. The client-side Curve25519Kex::compute_shared_secret function in russh/src/kex/curve25519.rs passes the decoded exchange.server_ephemeral value to clone_from_slice without validating its length, causing a deterministic panic before the server host key is verified. The panic terminates the spawned client session task and surfaces as a JoinError, while the embedding process normally remains running. This issue is fixed in version 0.62.4.
- CVE-2026-48110High
Vulnerability in the Russh library (Rust SSH client & server) from version 0.34.0 to before 0.61.0. A remote SSH peer can send oversized or malformed length-prefixed fields, causing memory allocation or attempted allocation before rejecting data, potentially leading to denial of service or other issues.
- CVE-2026-48108Medium
Russh before version 0.61.0 does not strictly enforce SSH identification-string rules. The server-side identification reader uses a permissive path, allowing pre-banner lines from clients and not bounding their number. A remote attacker can hold connection setup resources in the cleartext pre-authentication phase with malformed identification input.
- CVE-2026-48107Medium
Russh (Rust SSH client & server library) versions 0.37.0 through 0.61.0 contain a vulnerability in the keyboard-interactive authentication path. A malicious SSH server can send USERAUTH_INFO_REQUEST with a controlled prompt count, and the client uses that count directly in Vec::with_capacity(...) before validation, potentially causing memory issues.
- CVE-2026-46705Medium
Russh before version 0.61.0 has a vulnerability in the server authentication path where internal authentication state is not reset when the username or service changes between requests. This can affect later requests for a different (user, service).
- CVE-2026-46673High
A vulnerability in the Russh library (Rust SSH client & server) before version 0.60.3 in the CryptoVec class allows unchecked capacity growth, unchecked length arithmetic, and unsafe allocation/locking paths. Local SSH agents can feed attacker-controlled frame lengths before validation, and in older versions (before 0.58.0) remote SSH traffic also reached CryptoVec through transport and compression buffers.
Original NVD description (English source)
Russh is a Rust SSH client & server library. From version 0.34.0 to before version 0.61.1, when SSH compression is enabled, russh accepted compressed packets whose on-wire size passed the normal transport packet-length checks but whose decompressed size was much larger. This allowed a remote peer to send oversized post-decompression packets that should have been rejected. In current releases, this is a remote denial-of-service / resource-exhaustion issue in the post-decompression receive path. In older releases before 0.58.0, the same remote decompression path used CryptoVec, which appears to make the historical impact worse. This issue has been patched in version 0.61.1.

