Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach agent socket (local or via forwarding)
-
DeliverySend ADD_IDENTITY_CONSTRAINED with many lifetime records
-
ExploitSpawn one task + key clone per 5-byte record
-
ExecutionRepeat message stream (~141x amplification)
-
ImpactExhaust agent memory and tasks, denying SSH agent service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target must run russh (<= 0.64.0) as an SSH agent server, and the attacker must be able to speak the agent protocol to it. Two concrete paths qualify: (1) a local process with access to the agent's unix socket, or (2) a remote SSH server the victim connects to with agent forwarding enabled - russh clients accept the auth-agent@openssh.com channel by default (russh/src/client/mod.rs:2686). The specific trigger is an SSH_AGENTC_ADD_IDENTITY_CONSTRAINED request carrying many SSH_AGENT_CONSTRAIN_LIFETIME records. Limiting factors: no code execution or data disclosure is possible (availability-only), exploitation requires either local socket access or victim-initiated agent forwarding to an attacker-controlled endpoint, and hosts not using russh's agent server or not forwarding agents are unaffected. |
| Impact | This is a medium-severity denial-of-service issue, and the available signals are consistent in pointing to a bounded, non-critical risk. The provided CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, base 4.3) limits impact to availability only (A:L) with no confidentiality or integrity effect, which matches the CWE-770 (unbounded resource allocation) classification and the described memory/task exhaustion. No EPSS score was provided and the CVE is not listed in CISA KEV, so there is no evidence of active exploitation; exploitation status is best described as 'publicly available exploit code exists' because the GHSA advisory includes a working, measured proof-of-concept (10.2 MiB of traffic producing ~2,096,120 tasks and +1.4 GiB RSS at ~141x amplification). The main nuance is the attack vector: CVSS encodes AV:A (adjacent), but the advisory describes two distinct paths - a local process reaching the agent socket (local) and a remote SSH server exploiting a client that uses agent forwarding (effectively remote-via-forwarded-channel). The realistic priority is moderate: easy and reliable to trigger where it applies, but confined to availability of the SSH agent process and gated on either local socket access or the victim using agent forwarding to an attacker-controlled server. Treat as a 'patch in normal cycle' issue rather than an emergency, prioritizing hosts that use russh-based agents with forwarding enabled. |
| Exploit ScenarioDerived | A user connects with a russh-based SSH client that has agent forwarding enabled to a malicious or compromised server; russh clients accept the auth-agent@openssh.com channel by default. The server repeatedly sends crafted SSH_AGENTC_ADD_IDENTITY_CONSTRAINED messages packed with many SSH_AGENT_CONSTRAIN_LIFETIME records, each spawning a long-lived task and cloning the key blob, until the agent process exhausts memory and task capacity and is starved or killed. A working, measured proof-of-concept is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Memory and task exhaustion in the russh SSH agent server (versions through 0.64.0) lets an unauthenticated attacker deny SSH agent service by sending a constrained add-key request packed with SSH_AGENT_CONSTRAIN_LIFETIME records. Each 5-byte lifetime record causes the agent to spawn a long-lived tokio task that clones the key blob, producing roughly 141x amplification; the public proof-of-concept in the advisory turned 10.2 MiB of protocol traffic into about 2.1 million live tasks and roughly 1.4 GB of RSS growth. Attackers can reach the agent socket locally or through agent forwarding to an attacker-controlled SSH server, and publicly available exploit code exists, though this is availability-only with no code execution or data disclosure.
RemediationAI
Upgrade russh to 0.64.1, which contains fix commit 4c305033d72f8e5dd21a3fd4c53a6c291a16ebd1 and is published at https://github.com/Eugeny/russh/releases/tag/v0.64.1; the advisory is at https://github.com/Eugeny/russh/security/advisories/GHSA-4wc5-f2rc-q74m. If upgrading is not immediately possible, restrict access to the agent's unix socket to trusted local users via filesystem permissions or socket activation, and disable SSH agent forwarding for connections to untrusted or attacker-controlled servers; note that russh clients accept auth-agent@openssh.com by default, so this requires an application-level change to refuse that channel. Running the agent under a cgroup or systemd MemoryMax/TasksMax limit can cap the blast radius but may still allow the agent to be starved or killed, so it is only a compensating control.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in cargo
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
russh implements the ssh-agent protocol, and the vulnerable path is the constrained add-identity request decoding loop in russh/src/keys/agent/server.rs. For every SSH_AGENT_CONSTRAIN_LIFETIME record (5 wire bytes), the loop spawned a separate tokio task that cloned the key blob and slept for the declared lifetime (up to roughly 136 years), with no per-request task budget and no rollback of already-spawned tasks when later constraint parsing failed. This is CWE-770, Allocation of Resources Without Limits or Throttling: attacker-controlled wire input is converted directly into resident tasks and heap at about 141x amplification, exhausting the agent process's memory and task capacity. The fix in 0.64.1 rejects duplicate lifetime constraints, parses all constraints before inserting the key, and spawns at most one lifetime task after a successful parse.
Know when Russh gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Agent socket is reachable by a local process or a forwarded remote server (AV:A), no auth or interaction needed (PR:N/UI:N), and impact is availability-only resource exhaustion (A:L, C/I:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
russh is a Rust SSH client and server library that includes an SSH agent protocol implementation. Prior to 0.64.1, the agent server spawns a separate long-lived task for every SSH_AGENT_CONSTRAIN_LIFETIME record in a constrained add-key request. The loop accepts repeated lifetime records, clones the key blob into each task, and does not roll back tasks when later constraint parsing fails. An attacker that can speak the agent protocol locally or through agent forwarding can exhaust memory and tasks until the agent process is starved or terminated, denying SSH agent service. This issue is fixed in version 0.64.1.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
Russh is a Rust SSH client & server library. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,
russh is a Rust SSH client and server library. Rated medium severity (CVSS 5.9), this vulnerability is remotely exploita
Unauthenticated remote denial of service in the Russh SSH library (versions ≤ 0.62.3) allows any network attacker to cra
Denial-of-service in russh's Curve25519 key exchange client path allows any malicious SSH server to crash a connecting r
russh's SSH agent server signs with keys loaded under the confirm constraint without ever invoking the application's app
Improper validation in the Russh Rust SSH library (versions prior to 0.63.1) lets a malicious or compromised SSH server
Pre-authentication denial-of-service in russh SSH server library allows remote attackers to crash servers implementing k
Denial of service in Russh (Rust SSH client/server library) versions 0.34.0 through 0.60.x allows remote SSH peers to tr
Denial of service in Russh (versions 0.37.0-0.60.x), a Rust SSH client and server library, allows a malicious SSH server
Memory exhaustion in the Russh Rust SSH client/server library prior to 0.63.2 allows an authenticated remote peer to sta
The Windows Pageant client inside the pageant Rust crate (pageant/src/wmmessage.rs) trusts a peer-controlled u32 respons
EUVD-2026-104457
GHSA-4wc5-f2rc-q74m
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB