Skip to main content

russh EUVDEUVD-2026-112267

| CVE-2026-116794 HIGH
Missing Authorization (CWE-862)
2026-10-28 GitHub_M
8.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach user's russh agent socket (local or forwarded)
  2. Delivery
    Request signature using confirm-constrained key
  3. Exploit
    try_sign returns hard-coded success, skips Agent::confirm
  4. Execution
    Obtain valid signature without approval
  5. Impact
    Authenticate or sign data as the user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires ALL of the following concrete prerequisites: (1) the application embeds russh in the affected range 0.50.0-beta.12 to 0.64.1 and acts as an SSH agent server via russh::keys::agent::server; (2) the application OVERRIDES Agent::confirm to implement a real approval or policy check - the default always-true implementation is NOT affected, and checks placed in Agent::confirm_request are NOT bypassed because that hook still runs for every sign request; (3) a key was loaded with the SSH_AGENT_CONSTRAIN_CONFIRM constraint, i.e. via 'ssh-add -c', and remains loaded; and (4) the attacker can reach the agent socket, meaning either another local process running as the same user or the remote host when the agent is forwarded with 'ssh -A'. Limiting factors: the private key is never exposed (abuse lasts only while the attacker can reach the agent), and unaffected configurations (default confirm, confirm_request-based checks, non-forwarded agents with no hostile local processes) remove the risk entirely.

Impact

This is a genuine but conditional authorization-bypass (CWE-862) in russh's SSH agent server, not an inflated high-CVSS issue - though its real-world blast radius is narrower than the 8.3 score alone suggests. The supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:L/UI:N) correctly reflects that exploitation requires reaching the agent's local Unix socket (or the remote end of a forwarded agent), low privileges, no user interaction and no special attack conditions, with high integrity impact on both the vulnerable system (VI:H) and subsequent systems (SI:H/SC:H) because the agent can be driven to authenticate or sign as the user. No EPSS probability and no CISA KEV status were provided in the input, so there is no signal of active or widespread exploitation; the vuln.today decision label is 'this_week' (not act_now/emergency). The GHSA advisory ships a working reproducer test demonstrating the regression, so a public PoC reference exists; it is not verified in the input as a packaged weaponized exploit, and PoC availability must not be conflated with active exploitation. The crucial limiting signal, stated explicitly by the vendor, is that only applications that OVERRIDE Agent::confirm to enforce an approval/policy check are affected - implementations keeping the default always-true confirm, and any checks placed in Agent::confirm_request (still invoked for every sign request), are unaffected. Net: a real priority for the specific downstream applications that rely on ssh-add -c confirmation (e.g. the reporter names Proton Pass desktop, untested), but low urgency for the general russh population.

Exploit ScenarioDerived

A user runs a russh-based agent application that overrides Agent::confirm to prompt for approval, and loads a key with 'ssh-add -c' expecting per-use confirmation. An attacker who can reach the agent socket - another local process running as that user, or the remote host when the agent is forwarded with 'ssh -A' - issues a signature request for that key; the agent returns a hard-coded success and signs without the confirmation prompt ever firing, letting the attacker authenticate to other hosts or sign data (e.g. git commits) as the user while the key stays loaded. The GHSA advisory includes a reproducer test confirming the confirm callback is never invoked.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 28, 2026

russh's SSH agent server signs with keys loaded under the confirm constraint without ever invoking the application's approval hook, so any process able to reach the agent socket - another local process running as the same user, or the remote host when the agent is forwarded with ssh -A - can authenticate or sign data as the user while the key stays loaded. The regression spans russh 0.50.0-beta.12 through 0.64.1 and only affects applications that override Agent::confirm with a real approval or policy check; the default always-true confirm and checks implemented in Agent::confirm_request remain effective, and the private key itself is never exposed. The vendor advisory ships a reproducible test PoC demonstrating the bypass (a unit test, not working exploit code); the issue is not listed in CISA KEV and active exploitation is not confirmed.

RemediationAI

Vendor-released patch: upgrade russh to 0.65.0 and rebuild, per the advisory at https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv and the release at https://github.com/Eugeny/russh/releases/tag/v0.65.0 (fix commits 3e04597dc54e36bfc85c21996f7d8d9d224e9826 and 62db6e7defd6d244159da962ccccb029e785ce0f; the regression originated in 3e04597). Note the documented compatibility side effect: because Agent::confirm is called again for confirm-constrained keys, any implementation that stubs it (e.g. todo!()) will now be reached - each connection runs in its own task, so such a panic terminates only that connection. Until upgrading, move the approval or policy check into Agent::confirm_request, which still receives MessageType::Sign for every signing request, or refuse keys carrying the Confirm constraint outright as RFC 9987 §5.2.7 requires of agents that do not support a constraint; both trade-offs are that the trusted-prompt semantics of ssh-add -c change and clients relying on the constraint will see the key rejected. Also avoid forwarding the agent (ssh -A) to untrusted hosts and avoid running untrusted local processes that can reach the agent socket, since those are the two paths the advisory identifies for reaching the agent.

Affected VersionsENISA

russh < 0.65

Affected Packages

euvd russh fix: 0.65

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::keys::agent::server, the SSH agent server implementation of the russh Rust SSH library, and concerns the SSH agent protocol constraint extension (SSH_AGENT_CONSTRAIN_CONFIRM, RFC 9987 §5.2.7.2) that ssh-add -c attaches to a key so the agent must ask the user before each signature. Connection::try_sign detects needs_confirm but replaces the awaited Agent::confirm call with a hard-coded futures::future::ready((agent, true)) - a missing authorization check (CWE-862) introduced by commit 3e04597 ("Native async traits encore", PR #455) and shipped from 0.50.0-beta.12 onward; every one of the 52 published releases up to and including 0.64.1 contains the hard-coded true, while 0.50.0-beta.8 through beta.11 still called agent.confirm, and older releases have no agent server at all (it lived in russh-keys, where no release is affected). Two design details bound the impact: Agent::confirm_request is still invoked with MessageType::Sign on every signing request, so policy checks placed there still run, and implementations that keep the trait's default confirm (which returns true unconditionally) lose no check through this regression. Because the agent accepts the constraint without enforcing it, ssh-add -c reports success and the user wrongly believes the key is protected; RFC 9987 §5.2.7 requires an agent that does not support a constraint to refuse the key instead.

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 8.3 HIGH
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:N
vuln.today AI 6.5 MEDIUM

Attacker needs access to the user's agent socket (AV:L, PR:L); no key disclosure so C:N; unauthorized signing/authentication gives I:H; the agent is driven to authenticate to other systems, so S:C; no availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
High
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 28, 2026 - 18:18 EUVD
CVE Published
Oct 28, 2026 - 17:06 cve.org
HIGH 8.3

DescriptionCVE.org

russh is a Rust SSH client and server library that includes an SSH agent protocol implementation. From 0.50.0-beta.12 until 0.65.0, the agent server's Connection::try_sign path in russh/src/keys/agent/server.rs recognizes SSH_AGENT_CONSTRAIN_CONFIRM but returns a hard-coded successful result instead of calling Agent::confirm. In applications that override Agent::confirm to require user approval or another policy check, a process that can reach the agent socket, including the remote side of a forwarded agent, can use a key added through ssh-add -c without that check and can authenticate or sign data as the user while the key remains loaded. The separate Agent::confirm_request hook still runs for every signing request, so checks implemented there remain effective, and implementations that retain the default always-successful Agent::confirm do not lose an approval check through this regression. This issue is fixed in version 0.65.0.

Executive ViewAI

Why It Matters

CVE-2026-116794 is a high-severity flaw in the russh SSH agent server (versions 0.50.0-beta.12 through 0.64.1) that allows local or remote processes to sign with keys loaded under the 'confirm' constraint without triggering the application's approval prompt, enabling unauthorized authentication as the user. Organizations that have overridden the Agent::confirm hook with a real policy check are at risk; the private key is not exposed but improper signing can lead to account compromise. Given the ease of exploitation (low complexity, local or forwarded access) and the absence of a patch, leadership should prioritize identifying affected applications and implementing workarounds.

Business Impact: Medium
Compensating Controls

Disable SSH agent forwarding, restrict agent socket access to trusted local processes, implement alternative approval mechanisms outside russh (e.g., external policy enforcement or key confirmation at a higher layer), and monitor for suspicious authentication activity. No vendor patch identified at time of analysis.

Threat Intelligence Overview

Prevalence
Low
niche Rust SSH library; impact limited to apps overriding Agent::confirm
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 HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Medium

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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-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

CVE-2026-48108 MEDIUM
5.3 Jun 10

Resource exhaustion in Russh's SSH server identification-string reader allows unauthenticated remote attackers to hold c

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