v0.65.0
- d507707: feat(server): expose the publickey algorithms to Handler (#785) (@Eric-D) #785
Handler::auth_publickey_offerednow takes aserver::PublicKeyOfferandHandler::auth_publickeytakes aserver::VerifiedPublicKeyinstead of&PublicKey. Read the key from thepublic_keyfield. The newalgorithmfield makes accessible the signature algorithm used by the client, allowing the server to react to it
- 62efa5a: Remove the no-op
async-traitdependency and crate feature (#786) (@FalkWoldmann) #786
GHSA-9wfm-jcj8-jfv9 - russh's SSH agent server is susceptible to unbound allocations via repeated SSH_AGENT_CONSTRAIN_CONFIRM messages
- 23aa5d2 - A malicious SSH agent client can trigger unbounded allocations in russh based agents
GHSA-4p9f-7p9m-5vfg - russh's SSH client is susceptible to unbounded allocations via EXT_INFO packets
- b33e93b - russh did not limit the number of EXT_INFO messages that a malicious server can send, leading to unbounded memory growth over time
GHSA-fw5c-8223-6h42 - russh: peer-declared zero maximum packet size permanently stalls channel writes
- 39cb9db - malicious peers can hang up the channel by setting max packet size to zero
- 69e4b55 - a malicious SSH agent client can trigger unbounded allocations in russh based agents
- 62db6e7 -
Agent::confirmwas defunct and never got called by the agent server
- 730d663 - a malicious client could trigger a stack overflow via a crafted OpenSSH certificate
- d65823f: feat(client): support OpenSSH agent session binding (#794) (@inureyes) #794
- Exposes the verified initial key-exchange data through a typed
AgentSessionBinding. You need it to sendsession-bind@openssh.comfor OpenSSH destination-constrained agent keys.
- Exposes the verified initial key-exchange data through a typed
- 13c94f0: Fix channel window accounting on window adjust (#790) (@notsapinho) #790
- e2bdf85: client: keep the session usable when a Signer fails after PK_OK (#788) (@meanaverage) #788
- b10506e: Re-arm the client keepalive timer before authentication (#791) (@Bokjan) #791
- Fixes the client session task spinning on a CPU core when the keepalive timer fired before authentication.
- c1fada1: fix(agent): honor
SSH_AGENT_RSA_SHA2_*flags when signing with RSA keys (#796) (@mdevolde) #796 - 3beb126: client: don't arm the rekey timer on wasm32 (#797) (@biao29) #797
- @Eric-D made their first contribution in https://github.com/Eugeny/russh/pull/785
- @FalkWoldmann made their first contribution in https://github.com/Eugeny/russh/pull/786
- @meanaverage made their first contribution in https://github.com/Eugeny/russh/pull/788
- @notsapinho made their first contribution in https://github.com/Eugeny/russh/pull/790
- @Bokjan made their first contribution in https://github.com/Eugeny/russh/pull/791
- @mdevolde made their first contribution in https://github.com/Eugeny/russh/pull/796
- @biao29 made their first contribution in https://github.com/Eugeny/russh/pull/797
Full Changelog: https://github.com/Eugeny/russh/compare/v0.64.1...v0.65.0
v0.64.1
GHSA-4wc5-f2rc-q74m - Unbounded memory allocation in agent protocol server via crafted constraint records
A local actor or a connected remote server (that the user forwards an agent connection to) can trigger an unlimited memory allocation in a russh-based SSH agent via a crafted message.
v0.64.0
- 5d9d2b8: drop the legacy ed25519 key parser
- Dropped the
legacy-ed25519-pkcs8-parserfeature. Legacy keys were written in non-compliant format by russh pre-v0.43. From now on, parsing those keys will return a hard error.
- Dropped the
GHSA-j7h2-66j4-ghjf - russh server accepts pubkey authentication with a mismatched signature algorithm
Russh server side did not verify that the client signatures were made using the negotiated algorithm. While no bypass is possible through this bug, this allowed a client to e.g. silently downgrade its own signature from rsa-sha2-512 to rsa-sha1
-
efa9a03: Add support
hostkeys-prove-00@openssh.comsupport (#767) (@inureyes) #767- Adds
client::Handle::hostkeys_proveto ask the server to prove ownership of the host keys it announced viahostkeys-00@openssh.com.
- Adds
-
a0ded76: Support sending custom global requests from the client (#759) (@ChrisJr404) #759
- Adds
client::Handle::send_global_request(name, data, want_reply)
- Adds
- e8b2fd3: Fix enforce rekey read and time limits (#766) (@inureyes) #766
- bf05d50: honor
want_reply = falseon server-side global requests - dddf72c: bug: Fix partial_success clobber (#773) (@markovejnovic) #773
- 26487fb: fix: auth-agent-req@openssh.com replies on channel (#774) (#775) (@markovejnovic) #775
- 36fa1bc: fix(pageant): trim username padding and handle empty principals (#779) (@t8y2) #779
- @markovejnovic made their first contribution in https://github.com/Eugeny/russh/pull/773
- @t8y2 made their first contribution in https://github.com/Eugeny/russh/pull/779
- @ChrisJr404 made their first contribution in https://github.com/Eugeny/russh/pull/759
Full Changelog: https://github.com/Eugeny/russh/compare/v0.63.3...v0.64.0
v0.63.2
A malicious Pageant agent could cause an out-of-bounds read / oversized allocation in the pageant library user.
An authenticated client could trigger unbounded memory allocation during rekey phase
- client: encode the negotiated hash algorithm for RSA certificates (#764) #764 (Jeongkyu Shin)
- 4206815: Fix pty-req terminal modes: deliver them unpadded, encode the right l… (#755) (tluyben) #755
- b1d3893: fixed #762 - redact sensitive data from debug logging (Eugene)
- 66789f4: fixed #761 - data write split across a kex breaks (Eugene)
- a04e1b5: fixed #758 - fail RSA signing explicitly when RSA feature is not enabled (Eugene)
- 422123c: dedup zlib compress loop into compress_into (Eugene)
v0.63.1
A mirror of GHSA-m65r-rprj-r5rg for the client side - Handler per-channel callbacks are called even when the server supplies an invalid (never opened) channel ID. Depending on what the handler does this can lead to a vulnerability.
Two peers disagreeing on supported MACs can end up negotiating none MAC for a cipher that requires one, which leads to the session task panicking.
v0.63.0
-
09f6582: Support host certificates on the client side (#752) (@biao29) #752
- This changes the signature of
Handler::check_server_keyto take a newPublicKeyOrCertificateenum instead of&PublicKey
- This changes the signature of
-
d7601ae: Support host certificates on the server side (#641) (Georg von Zengen) #641
- Adds a
Config::certificatesthat functions similarly toConfig::keys
- Adds a
- f2354c7: improve strict kex checks (Eugene)
- 0363fde: fixed PKCS#8 parsing panicking on incorrect contents (Eugene)
- 46c927a: use constant-time comparison for agent unlock (Eugene)
- 8da8967: sanitize Curve25519 params (Eugene)
Full Changelog: https://github.com/Eugeny/russh/compare/v0.62.7...v0.63.0
v0.63.0-beta.1
- 09f6582: Support host certificates on the client side (#752) (@biao29) #752
- d7601ae: Support host certificates on the server side (#641) (Georg von Zengen) #641
Full Changelog: https://github.com/Eugeny/russh/compare/v0.62.7...v0.63.0-beta.1