RustSec logo

History ⋅ Edit ⋅ JSON (OSV)

RUSTSEC-2026-0492

Client Handler callbacks run for channels the client never opened

Reported
Issued
Package
russh (crates.io)
Type
Vulnerability
Keywords
#ssh #client #channel #handler
Aliases
References
CVSS Score
7.5 HIGH
CVSS Details
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality Impact
None
Integrity Impact
High
Availability Impact
None
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Patched
  • >=0.63.1

Description

On the client side, russh passed channel messages from the server (data, extended data, EOF, close, success, failure, open failure and the exit-status, exit-signal and xon-xoff requests) to the application's client::Handler callbacks without checking that the channel number belonged to a channel the client had opened and the server had confirmed. The server side already performed this check.

A malicious or compromised SSH server can therefore send these messages for any channel number, including the next number the client will allocate (they are assigned in order) or one it has already closed. An application that tracks per-channel state can be made to record a false exit status, see a channel close before its real output arrives, or panic when it looks up a channel it does not know.

From 0.63.1 the client ignores channel messages for channels that are not established and confirmed, and handles an open failure only for a channel it is actually opening.

Advisory available under CC0-1.0 license.