RUSTSEC-2026-0492

Source
https://rustsec.org/advisories/RUSTSEC-2026-0492
Import Source
https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0492.json
JSON Data
https://api.osv.dev/v1/vulns/RUSTSEC-2026-0492
Aliases
Published
2026-09-30T12:00:00Z
Modified
2026-11-12T08:00:03Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N CVSS Calculator
Summary
Client `Handler` callbacks run for channels the client never opened
Details

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.

Database specific
{
    "license": "CC0-1.0"
}
References

Affected packages

crates.io / russh

Package

Affected ranges

Type
SEMVER
Events
Introduced
0.0.0-0
Fixed
0.63.1

Ecosystem specific

{
    "affected_functions": null,
    "affects": {
        "arch": [],
        "functions": [],
        "os": []
    }
}

Database specific

categories
[]
cvss
"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
informational
null
source
"https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0492.json"