Skip to content
OpenAdvisories
Low · 3.7 CVE-2026-128087 EUVD-2026-125719GHSA-9264-jvgf-6w2f

russh kex_done: shared-secret callback runs before server host-key verification

Published Nov 13, 2026 · Updated Nov 13, 2026 · Assigned by GitHub_M

Description

russh is a Rust SSH client and server library that includes an SSH agent protocol implementation. From version 0.55.0 until version 0.65.1, the initial key exchange invokes client::Handler::kex_done() with the raw shared secret before check_server_key() accepts the server host key or certificate. A malicious SSH server can therefore trigger application-defined secondary-channel initialization or early data handling even when the server identity is subsequently rejected. Ordinary clients that keep the callback's no-op default or independently defer callback-derived actions until trust is confirmed are not affected. This issue is fixed in version 0.65.1.

Affected products

VendorProductAffectedFixed
Eugeny russh >= 0.55.0, < 0.65.1 —

Affected packages

EcosystemPackageAffectedFixedRecord
crates.io russh >= 0.55.0, < 0.65.1 0.65.1 GHSA-9264-jvgf-6w2f

References