Skip to main content
← All vulnerabilities
CVE-2026-116774EUVD-2026-111389GHSA-FW5C-8223-6H42

russh: peer-declared zero maximum packet size permanently stalls channel writes (silent AsyncWrite hang)

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 0.65.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: partial

Summary

russh, a Rust SSH client and server library (including its SSH agent implementation), is affected through its channel write paths. A peer can declare a zero maximum packet size, causing writes to hang indefinitely without an error, which can leave tasks and connections stuck and accumulating on both the server and client sides.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

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.

Timeline

  1. CVE published
  2. First seen by cve.now
  3. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  4. Record last updated

Affected versions

  • Eugeny russh

    From 0.60.0 · fixed in 0.65.0

References 3

GitHub · Eugeny/russh