---
id: CVE-2026-116794
title: >-
  russh: Agent server never calls `Agent::confirm`, so keys added with the
  confirm constraint (`ssh-add -c`) sign without confirmation
summary: >-
  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_CONST…
severity: high
cvss: 8.3
cvssVector: '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'
cvssSource: cna
cwe:
  - CWE-862
vendor: Eugeny
product: russh
affected:
  - russh < 0.65
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-11-03T13:08:14.117607Z'
exploitAvailable: true
published: '2026-10-28'
updated: '2026-11-03'
sourceUpdated: '2026-11-03T13:08:40.870Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-116794'
references:
  - url: 'https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv'
    label: 'https://github.com/Eugeny/russh/security/advisories/GHSA-vp5q-ff62-jwqv'
  - url: >-
      https://github.com/Eugeny/russh/commit/3e04597dc54e36bfc85c21996f7d8d9d224e9826
    label: >-
      https://github.com/Eugeny/russh/commit/3e04597dc54e36bfc85c21996f7d8d9d224e9826
  - url: >-
      https://github.com/Eugeny/russh/commit/62db6e7defd6d244159da962ccccb029e785ce0f
    label: >-
      https://github.com/Eugeny/russh/commit/62db6e7defd6d244159da962ccccb029e785ce0f
  - url: 'https://github.com/Eugeny/russh/releases/tag/v0.65.0'
    label: 'https://github.com/Eugeny/russh/releases/tag/v0.65.0'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-116794'
  - url: 'https://github.com/Eugeny/russh'
  - url: 'https://github.com/advisories/GHSA-vp5q-ff62-jwqv'
tags:
  - cve.org
  - exploit-available
  - osv
  - rust
  - ghsa
epss: 0.00156
epssPercentile: 0.04789
aliases:
  - GHSA-vp5q-ff62-jwqv
ecosystem: rust
patched:
  - russh 0.65
ingestedAt: '2026-10-28T18:15:46.402Z'
---

## Overview

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.

## Affected

- `russh < 0.65`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-116794)

Affected packages:

- `russh < 0.65`

Patched in:

- `russh 0.65`

Source: https://osv.dev/vulnerability/GHSA-vp5q-ff62-jwqv
