Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOperate or compromise upstream SSH server
-
DeliveryClient bridges forwarded-agent channel to raw PageantStream
-
ExploitSend 4-byte prefix claiming ~4 GiB frame
-
ExecutionStream bytes or stall with frame incomplete
-
ImpactUnbounded buffering exhausts client process memory
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 | Exploitation requires an application that bridges an SSH forwarded-agent channel directly to the raw pageant::PageantStream (the documented transport-only usage, e.g. copy_bidirectional between the SSH server channel and PageantStream), so that the peer-controlled channel payload supplies the trusted 4-byte length prefix read in PageantStream::new (wmmessage.rs). The attacker must control or have compromised the upstream SSH server the client connects to. Platform is limited to Windows (the WM_COPYDATA / _AGENT_MAX_MSGLEN shared-memory transport) and to pageant versions 0.2.0 through 0.2.4. Exploitation does NOT apply to russh's typed AgentClient path, which bounds response frames at 256 KiB; only the raw-stream bridging pattern is affected. The only complete fix stated by the vendor is upgrading to pageant 0.2.5, which rejects frames exceeding _AGENT_MAX_MSGLEN before buffering. |
| Impact | All signals converge on LOW real-world priority. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P, VA:L only, VC:N/VI:N) scores 2.3, and the vuln.today Decision label is 'monitor' - not act_now or emergency. The impact ceiling is a memory-exhaustion DoS of the client process (CWE-770): no confidentiality or integrity impact, no code execution, no memory-safety violation (the advisory states this explicitly). A working proof-of-concept is published in the GHSA advisory, so exploit code is public, but a public PoC is a distinct signal from active exploitation: this CVE is NOT in CISA KEV, so there is no confirmed in-the-wild use. No EPSS score was provided in the input, so exploitation-probability cannot be compared against the KEV/PoC signals - that data is MISSING. Two attack-requirement signals materially cap risk: AT:P (a specific condition must hold) and UI:P (the vulnerable bridging usage), both reflecting that exploitation only applies when an application bridges an SSH forwarded-agent channel directly to the raw PageantStream and the attacker controls the upstream SSH server. The crate's own typed AgentClient path is not affected (it bounds frames at MAX_AGENT_FRAME_LEN / 256 KiB). Net: a genuine but low-severity, deployment-dependent DoS - patch in normal maintenance cadence, not an emergency. |
| Exploit ScenarioDerived | A Windows SSH client built on russh/pageant 0.2.0-0.2.4 services a remote server's forwarded-agent channel by bridging the SSH channel bytes directly into a raw PageantStream (e.g. tokio::io::copy_bidirectional). A malicious or compromised SSH server sends the 4-byte big-endian prefix FF FF F0 00 claiming a ~4 GiB frame, then streams data or simply stalls mid-frame, forcing the client's re-framing task to buffer unbounded memory. A working PoC is published in the GHSA advisory: observed working-set growth from ~7.4 MB to ~264.7 MB after streaming 256 MiB, with memory retained while the peer stalls. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Memory exhaustion in the pageant crate's raw PageantStream transport affects versions 0.2.0 through 0.2.4: PageantStream::new reads a peer-supplied four-byte length prefix and buffers up to len + 4 bytes without checking it against the fixed 8 KiB _AGENT_MAX_MSGLEN transport limit, so a malicious SSH server can claim a frame of up to ~4 GiB and either stream that much data or stall mid-frame, keeping the partial buffer resident. Exploitation is narrowly scoped - Windows only, and only for applications that bridge an SSH forwarded-agent channel directly to the raw stream (e.g. copy_bidirectional); russh's typed AgentClient path bounds frames at 256 KiB and is not affected. The advisory includes a proof-of-concept that the reporter observed growing a pageant 0.2.4 process from ~7.4 MB to ~264.7 MB working set on Windows 11; the flaw is fixed in pageant 0.2.5, no CISA KEV entry or active exploitation is reported, and the priority label is monitor with an assessed CVSS 3.1 of AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L.
RemediationAI
Upgrade pageant to 0.2.5 (shipped with russh v0.65.0, https://github.com/Eugeny/russh/releases/tag/v0.65.0), which rejects any frame where len.saturating_add(4) exceeds _AGENT_MAX_MSGLEN before it is buffered and also removes a theoretical 32-bit len + 4 overflow; the vendor states upgrading is the only complete fix. For code that cannot be updated immediately, the exposure comes specifically from bridging an SSH forwarded-agent channel to the raw stream, so removing or avoiding that raw bridging pattern (in particular the copy_bidirectional hand-off of server-controlled channel bytes into PageantStream) removes the attack path, at the cost of losing forwarded-agent service for remote sessions on Windows; if agent forwarding must stay, the typed AgentClient path used by russh bounds response frames at MAX_AGENT_FRAME_LEN (256 KiB) and does not exhibit the unbounded buffering, though it does not cover general raw-stream transport use.
Affected VersionsENISA
Affected Packages
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
pageant is a Windows-specific Rust crate in the russh project that speaks the PuTTY Pageant agent protocol over WM_COPYDATA, backed by a fixed-size shared memory mapping of _AGENT_MAX_MSGLEN (8192) bytes; the crate implements only the transport, not the agent protocol itself. Since commit 6eac7a157dd2cc81b8fafdb2977f1c388fe9784b (PR #565, September 2025) the stream uses length-prefixed framing: the re-framing task reads a 4-byte big-endian length and continues accumulating into a BytesMut until len + 4 bytes are present, with no upper bound on len. This is CWE-770 (allocation of resources without limits or throttling) rather than a memory-safety bug: the oversized frame can never actually be delivered, because query_pageant_direct() writes it into the 8192-byte shared mapping and returns Error::Overflow, so the attacker-controlled growth is pure wasted allocation and the task can also be left holding a partial frame indefinitely. The 0.1.x line predates the length-prefixed loop and is not affected. The documented bridging pattern (copy_bidirectional between the server's agent-forward channel and PageantStream) hands the SSH server's payload to the parser, making the length prefix server-controlled; the crate's own typed AgentClient instead caps response frames at MAX_AGENT_FRAME_LEN (256 KiB). The trigger requires the peer to control or compromise the upstream SSH server, which is why the assessed vector carries AC:H, and impact is limited to availability.
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
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Malicious SSH server controls bytes over network (AV:N, PR:N); AC:H because it requires the specific raw-stream bridging deployment; only partial availability impact (A:L), no C/I.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
pageant provides a PageantStream type that implements AsyncRead and AsyncWrite traits and can be used to communicate with a running Pageant instance. From 0.2.0 until 0.2.5, PageantStream::new in pageant/src/wmmessage.rs trusts a peer-controlled four-byte length prefix and buffers until len + 4 bytes are available without checking the fixed _AGENT_MAX_MSGLEN transport capacity. An application that bridges an SSH forwarded-agent channel to the raw stream can allow a malicious server to force large allocations or retain a partially filled frame, causing client memory exhaustion. This issue is fixed in version 0.2.5.
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-111390
NVD
CVE.org
EPSS
GitHub
Exploit-DB