Skip to main content

russh EUVDEUVD-2026-111388

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

Attack ChainAIDerived

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

  1. Access
    Induce client to connect to malicious SSH server
  2. Exploit
    Server sends repeated private EXT_INFO (msg 7) pre-auth
  3. Execution
    Extension names accumulate unbounded in received_extensions
  4. Impact
    Progressive client memory exhaustion, 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

The victim must initiate and maintain an SSH connection using the russh client library at a version below 0.65.0 to a server the attacker controls or has compromised; per the advisory this remains exploitable even after the client has verified the server's host key. No special client configuration is required: russh routes its private EXT_INFO message number 7 to handle_ext_info unconditionally in the pre-authentication states (WaitingAuthServiceRequest and WaitingAuthRequest), and the read-limit-based automatic rekey throttle only engages after authentication, so no pre-auth budget applies. The standards-compliant EXT_INFO number 82 is not processed by this handler, so the attack specifically relies on the server speaking russh's private number 7. Limiting factors: exploitation requires the user/application to connect to the hostile server (UI:R) and the session to stay alive for memory to grow; impact is limited to availability (memory exhaustion) with no code execution, data disclosure, or integrity impact. The only complete fix stated by the vendor is upgrading to 0.65.0.

Impact

This is a moderate-severity availability-only issue (CVSS 4.3, CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L, CWE-770 unbounded resource allocation) and the signals are internally consistent rather than conflicting. The vendor priority label is this_month, not act_now/emergency, which matches a non-critical DoS. The attack vector is network but the real precondition is that the client must connect to a malicious or compromised SSH server (reflected in UI:R), so this is not a server-side remotely-reachable flaw that attackers can spray against exposed infrastructure - it is a client-trust problem that bites applications embedding russh as an SSH client. There is no CISA KEV listing and no EPSS score in the supplied data, so there is no evidence of active or widespread exploitation; a verified reproduction harness is published in the GitHub Security Advisory, which raises reproducibility but is distinct from in-the-wild use. Net: a legitimate but not urgent priority - patch within the vendor's this_month window. Impact is confined to availability (progressive memory exhaustion of the client process over the session lifetime); there is no confidentiality or integrity impact. Note the 'unauthenticated' framing (PR:N) is correct but should be read in context: the attacker is the server peer, which for a client library is the inherent threat position, and the advisory states this remains exploitable even after the client verifies the server host key.

Exploit ScenarioDerived

An application that uses russh (< 0.65.0) as an SSH client connects to a server the attacker controls or has compromised. During the pre-authentication phase the malicious server repeatedly sends russh's private EXT_INFO message (message number 7), each packet carrying thousands of extension names, which the client appends to its per-session received_extensions vector without any cap, dedup, or trimming - progressively exhausting the client's memory for as long as the session lives. A verified reproduction harness (driving the real Session::process_packet path) is published in the GitHub Security Advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Memory exhaustion in the russh Rust SSH library affects every release before 0.65.0: a malicious SSH server can send repeated pre-authentication EXT_INFO packets encoded with russh's private message number 7, and the client's handle_ext_info appends each parsed extension name to a per-session vector that is never cleared, deduplicated, or bounded, growing client heap for the lifetime of the connection. The victim must initiate a session with a hostile or compromised server (UI:R, PR:N), and the advisory reports that retention persists even after the client has verified the server's host key; impact is availability only (C:N/I:N/A:L, CVSS 4.3). The vendor shipped a fix in 0.65.0 and the advisory includes a reproduction harness exercising the real packet parser; there is no CISA KEV entry and no confirmed active exploitation, and no public exploit code is verified beyond that harness.

RemediationAI

Vendor-released patch: upgrade russh to 0.65.0 or later (release tag v0.65.0, fix commit b33e93beec393e6d29eee69c1b8831736724ee75), which tracks an ext_info_count and returns Error::Inconsistent once more than two EXT_INFO messages arrive, keeping received_extensions bounded per RFC 8308 §2.4; per the vendor, upgrading is the only complete fix and no workaround is described in the advisory (https://github.com/Eugeny/russh/security/advisories/GHSA-4p9f-7p9m-5vfg). Because the trigger requires the client to connect to an attacker-controlled or compromised server - and the advisory states this holds even after host-key verification - practical exposure reduction until the upgrade is applied means pointing russh-based clients only at servers you operate or otherwise trust and avoiding long-lived unattended sessions to third-party endpoints; note that host-key pinning alone does not mitigate this, since the malicious-server position persists post-verification, and neither measure removes the underlying unbounded accumulator. Patched builds should be confirmed against the dependency tree of any crate that vendors or re-exports russh, since the CPE range covers every version below 0.65.0.

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

SSH servers advertise capabilities with the RFC 8308 EXT_INFO message, which carries message number 82 on the wire. russh instead defines its own private constant msg::EXT_INFO = 7 (russh/src/msg.rs:32, present since 2022) and parses that number unconditionally, while the standards-compliant value 82 is not routed to the affected handler; a hostile server simply speaks number 7 to reach the vulnerable code. The state machine dispatches the packet to handle_ext_info in the WaitingAuthServiceRequest and WaitingAuthRequest states, and the read-limit-driven automatic rekey throttle only engages after authentication, so no pre-authentication budget constrains the packet rate or volume. The handler at russh/src/client/encrypted.rs:433 executes received_extensions.push(name.clone()) against the session-lifetime field declared at russh/src/session.rs:60 as Vec<String> with no cap and no deduplication, so the accumulation is a cross-packet sink rather than a single-packet allocation. The advisory's measurements show 400 packets of roughly 26 KB carrying 3000 extension names each retained 49.1 MiB with the vector reaching 1,200,000 entries, versus no retention for an equivalent volume of banner packets. This is CWE-770 (allocation of resources without limits or throttling) rooted in unbounded state accumulation, not a parsing memory-safety bug. The upstream fix adds an ext_info_count: u8 field and rejects a third EXT_INFO with Error::Inconsistent, citing RFC 8308 §2.4, which permits at most two EXT_INFO messages per session.

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 4.3 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L
vuln.today AI 4.3 MEDIUM

Malicious server is the unauthenticated attacker (PR:N) but the client must choose to connect (UI:R); straightforward packet flooding (AC:L); availability-only memory exhaustion (A:L, C/I:N).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
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, the client Session::process_packet path in russh/src/client/encrypted.rs accepts repeated packets encoded with russh's private msg::EXT_INFO = 7 before authentication, while the standards-compliant EXT_INFO message number 82 does not reach the affected handler. The handle_ext_info function appends every parsed extension name to received_extensions without clearing, deduplicating, or bounding the vector. A malicious SSH server that deliberately sends private message number 7 can therefore retain an unbounded number of attacker-controlled extension names for the session lifetime, causing progressive client memory exhaustion. This issue is fixed in version 0.65.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Low
niche Rust SSH library, limited to applications embedding russh as a client
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
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