Description
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.
Published: 2026-08-12
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Russh is a Rust SSH client and server library. In versions prior to 0.62.4, a malicious SSH server that sends a malformed KEX_ECDH_REPLY containing a server_ephemeral value that is not 32 bytes long can cause the client’s Curve25519Kex::compute_shared_secret routine to panic. That routine forwards the decoded exchange.server_ephemeral value directly to clone_from_slice without validating its length, resulting in 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 continues to run, the client session is lost, effectively denying service to the client before authentication.

Affected Systems

The vulnerability affects the russh library from the Eugeny project. Any application linking russh versions earlier than 0.62.4 is subject to this issue. The bug was addressed in release v0.62.4, and the issue is resolved in that and later versions.

Risk and Exploitability

The CVSS score of 5.3 indicates moderate severity. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog, suggesting limited known exploitation to date. An attacker can trigger the panic by acting as an SSH server that sends a malformed KEX_ECDH_REPLY; the crash occurs before authentication and only terminates the client session, not the entire process. The exploitation requires a malicious server connection, making the attack vector an unauthenticated network connection from a compromised or malicious SSH server.

Generated by OpenCVE AI on August 13, 2026 at 02:17 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the russh library to version 0.62.4 or later to apply the patch for the clone_from_slice length validation error.
  • Rebuild the application after updating the dependency to ensure the new library version is in use; verify Cargo.lock references the updated russh entry.
  • If an immediate upgrade is not possible, restrict the client’s connections to vetted SSH servers and consider adding network-level controls such as rate limiting or firewall rules to mitigate repeated connection attempts from untrusted sources.

Generated by OpenCVE AI on August 13, 2026 at 02:17 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-g9hv-x236-4qp3 Russh: client wrong-length X25519 `clone_from_slice` panic (pre-auth DoS)
History

Fri, 14 Aug 2026 23:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 12 Aug 2026 23:15:00 +0000

Type Values Removed Values Added
First Time appeared Eugeny
Eugeny russh
Vendors & Products Eugeny
Eugeny russh

Wed, 12 Aug 2026 21:00:00 +0000

Type Values Removed Values Added
Description 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.
Title Russh: client wrong-length X25519 `clone_from_slice` panic (pre-auth DoS)
Weaknesses CWE-704
CWE-754
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-14T22:15:45.159Z

Reserved: 2026-08-12T14:32:11.796Z

Link: CVE-2026-73429

cve-icon Vulnrichment

Updated: 2026-08-14T22:15:40.035Z

cve-icon NVD

Status : Received

Published: 2026-08-12T21:17:41.750

Modified: 2026-08-14T23:16:33.020

Link: CVE-2026-73429

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-13T02:30:12Z

Weaknesses
  • CWE-704

    Incorrect Type Conversion or Cast

  • CWE-754

    Improper Check for Unusual or Exceptional Conditions