Skip to main content

russh SSH agent EUVDEUVD-2026-111387

| CVE-2026-116696 LOW
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-27 GitHub_M
3.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Connect to russh agent socket (local or forwarded session)
  2. Delivery
    Send ADD_IDENTITY_CONSTRAINED with many 0x02 CONFIRM records
  3. Exploit
    Server appends one 56-byte Constraint::Confirm per record, no cap
  4. Execution
    Repeat to renew non-expiring memory growth
  5. Impact
    Exhaust process memory (denial of 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

Requires that the russh SSH-agent server (russh::keys::agent::server::serve) is actually running and reachable, and that the attacker's process can connect to its listening socket; in agent-forwarding deployments this includes processes on the remote end of a forwarded session. The attacker must be able to issue key-addition requests (PR:L). Affected only on russh versions prior to 0.65.0. Limiting factors that reduce real-world risk: impact is availability-only (no data exposure or code execution), the socket must be locally reachable or exposed via agent forwarding rather than network-facing by default, and memory growth is gradual and bounded per request by the 256 KiB agent frame cap (amplified ~48x per request), so exhausting a host requires sustained repeated requests.

Impact

This is a low-severity, availability-only denial-of-service issue (CWE-770, unbounded resource allocation), and the signals are internally consistent rather than conflicting. The provided CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L, base 3.3) indicates a local attack vector with low attacker privilege and no confidentiality or integrity impact - only an availability effect from unbounded memory growth. The vuln.today decision label is 'monitor', which aligns with the low CVSS. The issue is NOT in CISA KEV (not actively exploited) and no EPSS exploitation-probability score was supplied in the input, so widespread opportunistic exploitation cannot be quantified from the data given. A detailed proof-of-concept is present: the GHSA advisory embeds full working harness code that the reporter states was run against an unmodified russh v0.64.1 agent server (measuring ~72.4 MiB retained after six 256 KiB requests, ~48x amplification). Net judgment: a real but low-priority bug - the local/forwarded-socket prerequisite (PR:L, AV:L) and availability-only impact keep real-world risk modest, matching the 'monitor' triage rather than an emergency. The one nuance to verify operationally is reach: russh sets S:U (scope unchanged), yet in agent-forwarding deployments the trigger can originate from the remote side of a forwarded session, which effectively widens who can connect to the agent socket.

Exploit ScenarioDerived

An attacker who can reach the russh agent's listening socket - including a process on the remote side of a forwarded agent session - repeatedly sends SSH_AGENTC_ADD_IDENTITY_CONSTRAINED requests packed with many 1-byte SSH_AGENT_CONSTRAIN_CONFIRM (0x02) records. Each record is retained as a 56-byte Constraint::Confirm enum in the keystore and, because keys without a lifetime constraint never expire, the memory is never reclaimed; the attacker renews the growth at will until the host process is exhausted. A full, reportedly-verified PoC harness is published in the GHSA advisory.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

Unbounded, persistent memory retention in the russh SSH agent server (russh::keys::agent::server::serve) before 0.65.0 allows any process able to reach the agent socket to grow the agent's heap without limit by repeatedly submitting key-addition requests padded with SSH_AGENT_CONSTRAIN_CONFIRM (0x02) records. Each 1-byte record on the wire becomes a 56-byte retained Constraint::Confirm value inside the keystore, and because keys without a lifetime constraint never expire, that memory is never reclaimed for the life of the process. Severity is low and availability-only (CVSS 3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L, 3.3), the vendor fixed the issue in 0.65.0, there is no CISA KEV listing for this CVE, and the published GHSA advisory supplies a verified proof-of-concept harness rather than any indication of active exploitation.

RemediationAI

Upgrade to russh 0.65.0, the vendor-released fix, which ships commit 23aa5d28fe9601c5bdfe9e60b7ec5d4f882c3de6 and stores at most one Constraint::Confirm per key (see https://github.com/Eugeny/russh/releases/tag/v0.65.0 and the advisory https://github.com/Eugeny/russh/security/advisories/GHSA-9wfm-jcj8-jfv9); downstream applications embedding russh should raise their dependency bound accordingly. Until the upgrade can be shipped, the exposure described in the advisory is reachability of the agent socket, so reduce the set of processes that can connect: keep the agent socket owned by the user with restrictive filesystem permissions, avoid agent forwarding to untrusted remote hosts (ssh -a or ForwardAgent no) since the remote side of a forwarded session is explicitly within the attacker model, and monitor the agent process's RSS for sustained growth. These measures lower the chance of a reachable attacker but do not remove the unbounded retention itself, which the 0.65.0 upgrade does.

Affected VersionsENISA

russh < 0.65.0

Affected Packages

euvd russh fix: 0.65.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw lives in russh's implementation of the SSH agent protocol, specifically the server-side handler for SSH_AGENTC_ADD_IDENTITY_CONSTRAINED, which parses a variable-length constraint section byte by byte and pushes a typed Constraint value for each SSH_AGENT_CONSTRAIN_CONFIRM (0x02) record it encounters (russh/src/keys/agent/server.rs, roughly lines 296-303 in v0.64.1). CWE-770 (Allocation of Resources Without Limits or Throttling) applies because neither the per-key constraint vector nor the agent keystore enforces a count or size limit; only the 256 KiB agent frame cap constrains a single request, while the number of requests and the number of stored keys are unbounded. Because the Constraint enum is aligned to its largest variant, every 1-byte confirm record costs 56 bytes of retained heap, yielding roughly 48x amplification; the advisory reports that six maximum-size requests retained about 72.4 MiB (about 12.1 MiB per request) against an unmodified v0.64.1 server, while an equal number of unconstrained key additions retained nothing. A prior advisory for this same handler (GHSA-4wc5-f2rc-q74m, fixed by commit 4c30503 in 0.64.1) addressed only the sibling SSH_AGENT_CONSTRAIN_LIFETIME (0x01) record by de-duplicating lifetime entries, leaving the CONFIRM branch untouched, so all releases before 0.65.0 remain affected. The upstream fix in commit 23aa5d28fe9601c5bdfe9e60b7ec5d4f882c3de6 guards the push with a contains() check so a Confirm constraint is stored at most once per key, and adds a regression test that feeds 10,000 confirm records and asserts the stored vector is a single element.

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

Vendor (GitHub_M) PRIMARY 3.3 LOW
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 3.3 LOW

Attacker must connect to the local/forwarded agent socket and issue key-add requests (AV:L, PR:L); trigger is trivial and reliable (AC:L); only memory exhaustion applies, so C:N/I:N/A:L.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

1
Patch available
Oct 27, 2026 - 21:18 EUVD

DescriptionCVE.org

russh is a Rust SSH client and server library that includes an SSH agent protocol implementation. Prior to 0.65.0, russh::keys::agent::server::serve in russh/src/keys/agent/server.rs accepts repeated SSH_AGENT_CONSTRAIN_CONFIRM records while adding a key and appends every Constraint::Confirm record to the key's retained constraint vector without a count or memory limit. A process that can connect to the agent socket, including the remote side of a forwarded agent session, can repeatedly add constrained keys and cause renewable memory growth that persists for the process lifetime because keys without a lifetime constraint do not expire. This issue is fixed in version 0.65.0.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
niche Rust SSH library; agent-server component deployed in few projects
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Low

Priority Score

16
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +16
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Russh

View all
CVE-2023-48795 MEDIUM POC
5.9 Dec 18

The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot

CVE-2024-43410 HIGH POC
7.5 Aug 21

Russh is a Rust SSH client & server library. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,

CVE-2023-28113 MEDIUM POC
5.9 Mar 16

russh is a Rust SSH client and server library. Rated medium severity (CVSS 5.9), this vulnerability is remotely exploita

CVE-2026-73430 MEDIUM POC
5.3 Aug 12

Unauthenticated remote denial of service in the Russh SSH library (versions ≤ 0.62.3) allows any network attacker to cra

CVE-2026-73429 MEDIUM POC
5.3 Aug 12

Denial-of-service in russh's Curve25519 key exchange client path allows any malicious SSH server to crash a connecting r

CVE-2026-116794 HIGH
8.3 Oct 28

russh's SSH agent server signs with keys loaded under the confirm constraint without ever invoking the application's app

CVE-2026-102823 HIGH
7.5 Sep 29

Improper validation in the Russh Rust SSH library (versions prior to 0.63.1) lets a malicious or compromised SSH server

CVE-2026-42189 HIGH
7.5 May 08

Pre-authentication denial-of-service in russh SSH server library allows remote attackers to crash servers implementing k

CVE-2026-48110 HIGH
7.5 Jun 10

Denial of service in Russh (Rust SSH client/server library) versions 0.34.0 through 0.60.x allows remote SSH peers to tr

CVE-2026-48107 MEDIUM
6.5 Jun 10

Denial of service in Russh (versions 0.37.0-0.60.x), a Rust SSH client and server library, allows a malicious SSH server

CVE-2026-102821 MEDIUM POC
6.5 Sep 29

Memory exhaustion in the Russh Rust SSH client/server library prior to 0.63.2 allows an authenticated remote peer to sta

CVE-2026-102820 MEDIUM POC
6.2 Sep 29

The Windows Pageant client inside the pageant Rust crate (pageant/src/wmmessage.rs) trusts a peer-controlled u32 respons

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy