russh: Missing user confirmation for keys in SSH agent server
Summary
russh, a Rust SSH client and server library, does not call the Agent::confirm method for keys added with the confirm constraint (ssh-add -c) in its agent server. Applications that override Agent::confirm to require user approval are affected. An attacker who can reach the agent socket, including the remote side of a forwarded agent, can use such a key to authenticate or sign data as the user without approval while the key remains loaded.
Affected
- russh from 0.50.0-beta.12 up to, but not including, 0.65.0
- Only applications that run the russh agent server and override Agent::confirm are affected.
Fixed in
- Upgrade to russh 0.65.0 or later.
Workaround
- If upgrading is not possible, implement the approval check in the Agent::confirm_request hook, which still runs for every signing request.
- Do not forward agent sockets to untrusted hosts.
- Remove keys loaded with ssh-add -c from russh-based agents if confirmation matters.
Exploitation
- No evidence of exploitation in the wild found. Not listed in CISA KEV.
- EPSS 0.16 % (percentile 5).
- No public proof of concept found.
Our recommendation
- Identify software in your environment that uses russh, for example developer tools, automation tools or SSH clients, and ask vendors whether they use it and which version.
- Update affected software or in-house builds to russh 0.65.0 or later in the normal patch cycle, with higher priority for products that use a russh agent with approval prompts.
- Check whether forwarded agent sockets are used on systems running affected software.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub security advisory GHSA-vp5q-ff62-jwqv github.com
- russh v0.65.0 release github.com
- Fix commit: call Agent::confirm github.com
- Regression commit: Native async traits encore github.com
- GitLab advisory CVE-2026-116794 advisories.gitlab.com
- OSV GHSA-vp5q-ff62-jwqv osv.dev
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 13:06.
Original description (NVD)
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.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
