russh: SSH agent fails to require confirmation for keys (CVE-2026-116794)
The russh library fails to trigger the Agent::confirm callback for SSH keys protected by the confirm constraint, allowing unauthorized signing operations by any process capable of communicating with the agent.
CVE search metadata
CVE search record: CVE-2026-116794. KEV: no. Product: russh (< 0.65), Proton Pass desktop. Brief: russh: SSH agent fails to require confirmation for keys (CVE-2026-116794). Brief link: https://feed.craftedsignal.io/briefs/2026-10-russh-ssh-agent-bypass/
Triage facts
Revision 1- Applicability
- russh (< 0.65), Proton Pass desktop
- Evidence
- Unknown
- Severity
- High
- Action
- Elevated
- Sources
- 2 public sources
- Freshness
- Revision 1Oct 31, 03:20 UTC
- Vulnerabilities
- 1 CVE
- Source quality
- A1Likely
The SSH agent server in the russh library fails to invoke Agent::confirm when handling signing requests for keys added with the SSH_AGENT_CONSTRAIN_CONFIRM constraint (commonly applied via ssh-add -c). This logic error, introduced in version 0.50.0-beta.12 and persisting through version 0.64.1, replaces the required confirmation check with a hard-coded success result. Applications relying on this callback for security enforcement, such as Proton Pass desktop, do not prompt the user for authorization before performing cryptographic operations, effectively bypassing the protection provided by the confirm constraint.
Impact
Successful exploitation allows local processes or remote hosts (via SSH agent forwarding) to use protected SSH keys for authentication or data signing without user consent. The private key material itself is not exposed, but the ability to use the key is compromised for as long as an attacker maintains access to the agent socket.
Recommendation
- Update all software packages using
russhto version 0.65 or later immediately. - Review downstream applications that use
russhto implement agent functionality and verify theirAgent::confirmlogic is invoked correctly. - For applications that use
confirmto perform security checks (e.g., "Pass is unlocked" checks), verify that the state logic is not bypassed by the regression.
Immediate actions
Upgrade all russh-based applications and dependencies to version 0.65 or later.
Threat Hunt
Identify applications in the environment using the russh library versions 0.50.0-beta.12 through 0.64.1.
Data: Software composition analysis (SCA) results or dependency tree output for Rust-based binaries.
Mitigations
Update to russh v0.65+.
CVE-2026-116794