#1152685 rust-russh: CVE-2026-116696 CVE-2026-116773 CVE-2026-116774 CVE-2026-116794

Package:
src:rust-russh
Source:
src:rust-russh
Submitter:
Salvatore Bonaccorso
Date:
2026-10-31 09:51:03 UTC
Severity:
normal
Tags:
#1152685#5
Date:
2026-10-31 09:49:17 UTC
From:
To:
Hi,

The following vulnerabilities were published for rust-russh.

CVE-2026-116696[0]:
| russh is a Rust SSH client and server library that includes an SSH
| agent protocol implementation. Prior to 0.65.0,
| russh::keys::agent::server::serve in russh/src/keys/agent/server.rs
| accepts repeated SSH_AGENT_CONSTRAIN_CONFIRM records while adding a
| key and appends every Constraint::Confirm record to the key's
| retained constraint vector without a count or memory limit. A
| process that can connect to the agent socket, including the remote
| side of a forwarded agent session, can repeatedly add constrained
| keys and cause renewable memory growth that persists for the process
| lifetime because keys without a lifetime constraint do not expire.
| This issue is fixed in version 0.65.0.


CVE-2026-116773[1]:
| russh is a Rust SSH client and server library that includes an SSH
| agent protocol implementation. Prior to 0.65.0, the client
| Session::process_packet path in russh/src/client/encrypted.rs
| accepts repeated packets encoded with russh's private msg::EXT_INFO
| = 7 before authentication, while the standards-compliant EXT_INFO
| message number 82 does not reach the affected handler. The
| handle_ext_info function appends every parsed extension name to
| received_extensions without clearing, deduplicating, or bounding the
| vector. A malicious SSH server that deliberately sends private
| message number 7 can therefore retain an unbounded number of
| attacker-controlled extension names for the session lifetime,
| causing progressive client memory exhaustion. This issue is fixed in
| version 0.65.0.


CVE-2026-116774[2]:
| russh is a Rust SSH client and server library that includes an SSH
| agent protocol implementation. From 0.60.0 until 0.65.0, channel-
| open parsing accepts a peer-declared maximum_packet_size of zero and
| passes it into ChannelTx::poll_writable in
| russh/src/channels/io/tx.rs. The Channel::data,
| Channel::make_writer, and Channel::into_stream asynchronous write
| paths then calculate a writable size of zero and remain pending
| forever because window adjustments cannot satisfy a static zero
| packet maximum. An authenticated client can strand server writes,
| and a malicious server can strand client writes, allowing affected
| tasks, channels, and connections to accumulate without surfacing an
| error. This issue is fixed in version 0.65.0.


CVE-2026-116794[3]:
| 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.


If you fix the vulnerabilities please also make sure to include the
CVE (Common Vulnerabilities & Exposures) ids in your changelog entry.

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-116696
https://www.cve.org/CVERecord?id=CVE-2026-116696
[1] https://security-tracker.debian.org/tracker/CVE-2026-116773
https://www.cve.org/CVERecord?id=CVE-2026-116773
[2] https://security-tracker.debian.org/tracker/CVE-2026-116774
https://www.cve.org/CVERecord?id=CVE-2026-116774
[3] https://security-tracker.debian.org/tracker/CVE-2026-116794
https://www.cve.org/CVERecord?id=CVE-2026-116794

Regards,
Salvatore