{"affected":[{"product":"russh","source":"CNA: GitHub_M","vendor":"Eugeny","versions":[{"status":"affected","version":">= 0.55.0, < 0.65.1"}]},{"defaultStatus":"unaffected","ecosystem":"crates.io","packageName":"russh","product":"russh","source":"OSV GHSA-9264-jvgf-6w2f","vendor":"","versions":[{"events":[{"introduced":"0.55.0"},{"fixed":"0.65.1"}],"lessThan":"0.65.1","status":"affected","version":"0.55.0","versionType":"semver"}]}],"cveId":"CVE-2026-128087","cwes":["CWE-696","CWE-863"],"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.","epss":null,"exploits":[{"kind":"exploit","source":"ADP: CISA-ADP","url":"https://github.com/Eugeny/russh/security/advisories/GHSA-9264-jvgf-6w2f"}],"kev":null,"metrics":[{"score":3.7,"severity":"low","source":"CNA: GitHub_M","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N","version":"3.1"}],"modifiedAt":1794604530367,"publishedAt":1794596606702,"references":[{"source":"CNA: GitHub_M","tags":["x_refsource_CONFIRM"],"url":"https://github.com/Eugeny/russh/security/advisories/GHSA-9264-jvgf-6w2f"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/Eugeny/russh/pull/808"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/Eugeny/russh/commit/43a46d67a80a7355fcd2fb25e7e00d79aec8184c"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/Eugeny/russh/releases/tag/v0.65.1"},{"source":"ADP: CISA-ADP","tags":["exploit"],"url":"https://github.com/Eugeny/russh/security/advisories/GHSA-9264-jvgf-6w2f"},{"source":"OSV / GitHub Security Advisories","tags":["advisory"],"url":"https://github.com/advisories/GHSA-9264-jvgf-6w2f"},{"source":"OSV / GitHub Security Advisories","tags":["osv"],"url":"https://osv.dev/vulnerability/GHSA-9264-jvgf-6w2f"}],"remediation":[{"kind":"fix","source":"OSV GHSA-9264-jvgf-6w2f","text":"russh (crates.io): OSV reports a fixed version 0.65.1. Check the advisory for supported release branches.","url":"https://github.com/advisories/GHSA-9264-jvgf-6w2f"}],"revision":"8659efc4b8d55fcb15d970fb7bf40328962ba2d366f5f077b806b3374f411371","sources":[{"modifiedAt":1794604530367,"name":"CNA: GitHub_M","retrievedAt":1794607761993,"url":"https://www.cve.org/CVERecord?id=CVE-2026-128087"},{"modifiedAt":1794598205188,"name":"OSV / GitHub Security Advisories","retrievedAt":1794600594057,"url":"https://osv.dev/vulnerability/GHSA-9264-jvgf-6w2f"}],"ssvc":{"assessedAt":1794604511345,"automatable":"no","exploitation":"poc","source":"ADP: CISA-ADP","technicalImpact":"partial"},"status":"published","title":"russh kex_done: shared-secret callback runs before server host-key verification","updatedAt":1794607761993}