CVE-2026-102823 in russhinfo

Summary

by MITRE • 09/29/2026

Russh is a Rust SSH client and server library. Prior to 0.63.1, client_read_authenticated in russh/src/client/encrypted.rs forwards CHANNEL_DATA, CHANNEL_EXTENDED_DATA, CHANNEL_EOF, CHANNEL_CLOSE, CHANNEL_OPEN_FAILURE, CHANNEL_SUCCESS, CHANNEL_FAILURE, and CHANNEL_REQUEST subtypes exit-status, exit-signal, and xon-xoff to public client::Handler callbacks without confirming that the ChannelId belongs to a channel the client opened and established. A malicious SSH server can send lifecycle events for predicted, unopened, unconfirmed, or released channel identifiers, causing application panics or corrupting command completion and exit-code tracking. This issue is fixed in version 0.63.1.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Analysis

by VulDB Data Team • 09/29/2026

The vulnerability identified within the Russh library, a Rust-based implementation of SSH client and server functionality, represents a critical failure in channel lifecycle management during the authenticated phase of an SSH session. Specifically, this flaw resides in the client_read_authenticated function located in the russh/src/client/encrypted.rs module. The core technical deficiency is that the handler fails to validate whether incoming ChannelId values correspond to channels that were explicitly opened and established by the local client instance. Instead of performing strict ownership verification against a tracked list of active or pending channels, the library blindly forwards various channel subtypes—including CHANNEL_DATA, CHANNEL_EXTENDED_DATA, CHANNEL_EOF, CHANNEL_CLOSE, CHANNEL_OPEN_FAILURE, CHANNEL_SUCCESS, CHANNEL_FAILURE, and specific request types such as exit-status, exit-signal, and xon-xoff—to public client::Handler callbacks. This lack of state validation allows a malicious SSH server to inject events for ChannelIds that are predicted, unopened, unconfirmed, or already released by the application.

From an operational perspective, this architectural oversight leads to severe stability issues within applications utilizing Russh as their underlying SSH engine. When a malicious server sends lifecycle events for invalid channel identifiers, the client-side handler attempts to process these messages against non-existent or stale channel objects. This mismatch typically results in application panics due to null pointer dereferences or index out-of-bounds errors when accessing internal data structures associated with the expected but missing channels. Furthermore, it can corrupt command completion logic and disrupt exit-code tracking mechanisms, leading to incorrect reporting of process termination statuses. In scenarios where automated systems rely on accurate SSH session outcomes for orchestration or security auditing, such corruption can lead to significant operational failures and potential misinterpretation of system states.

This vulnerability aligns with CWE-20 Improper Input Validation, as the software fails to adequately verify that incoming data conforms to expected structural constraints regarding channel ownership. It also relates to CWE-862 Missing Authorization in certain contexts where the server is able to influence client behavior through unauthorized channel manipulation. In terms of offensive security frameworks, this flaw can be leveraged via MITRE ATT&CK technique T1059 Command and Scripting Interpreter if an attacker uses the panic or corruption to disrupt defensive monitoring tools that rely on SSH session integrity for logging and analysis. Additionally, it falls under lateral movement vectors where disrupting authentication sessions could facilitate unauthorized access attempts by causing denial of service against legitimate administrative connections.

The issue has been addressed in version 0.63.1 of the Russh library through rigorous validation checks implemented within the client_read_authenticated function. Developers are strongly advised to upgrade immediately to this patched version or later releases that incorporate similar channel ID verification logic. Mitigation strategies also include implementing application-level safeguards such as timeout mechanisms for pending channels and ensuring that handler callbacks gracefully handle unexpected inputs without crashing, although relying solely on defensive coding practices is insufficient given the fundamental nature of the library flaw. Regular security audits focusing on state machine implementations in network protocol libraries are recommended to prevent similar issues where internal state assumptions are violated by external actors.

Responsible

GitHub M

Reservation

09/29/2026

Disclosure

09/29/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Might our Artificial Intelligence support you?

Check our Alexa App!