OpenSSH 10.5 Released OpenSSH 10.5 was released on 2026-08-11, featuring security fixes and new features, including a fix for an ssh-agent interaction that could allow remote operations when the agent was locked. The OpenSSH team announced they will make more frequent releases due to a large number of security bug reports, many from AI models, and noted that some bugs found by AI are later independently discovered by other researchers. OpenSSH 10.5 was released on 2026-08-11. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Recently the OpenSSH team have received a large number of security bug reports, many of which are findings from AI models or made with AI assistance. While many AI reports are determined not to have security impact when considered in the context of a realistic threat model, we very much welcome these reports, especially when combined with human triage, analysis, test-cases and particularly when accompanied by proposed fixes. We have seen a number of cases where a security bug identified by AI tools is subsequently independently discovered by a different researcher. This suggests that adversaries who do not report bugs to OSS projects are likely to be able to discover these bugs too. Given this, the OpenSSH team will, for now, be making more frequent releases to get bugfixes into users' hands more quickly rather than batching them until the next planned release. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Potentially-incompatible changes -------------------------------- Portable OpenSSH now requires ECC Elliptic Curve Cryptography support in libcrypto, including support for the NISTP521 curve. ECC is included in the default build configurations of all versions of all libcrypto implementations currently supported by OpenSSH, including LibreSSL, OpenSSL, BoringSSL and AWS LC. The --without-openssl build configuration is not affected. Changes since OpenSSH 10.4 ========================== This release contains a number of security fixes and small bugfixes. Security ======== ssh-agent 1 : fix an interaction between agent locking and the session-bind@openssh.com extension that is used to identify forwarded agents. These binding requests were refused when the agent was locked, with the result that operations that were intended to be limited to local use only could be performed remotely, including the ability to add PKCS 11 tokens and make use of keys that had destination restrictions applied. Reported by sn0x-sharma ssh 1 : avoid potential realloc use-after-free in the client if a remote forwarding is added via the local session multiplexing socket while a remote forwarding open request is pending with the server. Report and fix from Brian Mingus of Cognatory sshd 8 : make the authorized keys "restrict" keyword apply correctly to tunnel forwarding too which is administratively disabled by default . Reported by Erichen, Institute of Computing Technology, Chinese Academy of Sciences New features ------------ ssh-keygen 1 : add ability to set or clear the touch-required and verify-required flags on FIDO private keys when resetting a private key's passphrase. ssh 1 : tweak ordering of certificates tried during pubkey authentication to prefer FIDO keys that do not require user presence touch first, and FIDO keys that require user verification via PIN or biometrics last. This effectively tries low-friction authenticators before higher friction ones. ssh 1 : add a "ssh -Z user@host" mode that prints the keys that will be tried for public key authentication in the order that they will be used. sshd 8 use setproctitle 3 to identify sshd-session when its acting as a post-authentication monitor. Bugfixes -------- ssh-keyscan 1 : make reading the server banner a non-blocking operation to prevent a stuck server from blocking a many-host keyscan from proceeding. sshd 8 : use sshpkt fatal instead of plain fatal for errors in the packet code as this provides context of the failing peer address, port, user, etc . sshd 8 : when signing hostkey proofs for a client UpdateHostKeys request, allow each hostkey to perform at most one signature operation. sshd 8 fix GSSAPI option names, that were broken during a servconf.c refactoring in openssh-10.4; bz3974. ssh-keygen 1 : pass back errors from ed25519 key generation, which theoretically can fail. GHPR702. sshd 8 : move check of public key type against allowed algorithms to before parsing of the key sent by the peer. This removes at least some key parsing and verification paths from the pre-auth attack surface. Suggested by Christopher Paul Rohlf of Anthropic. ssh-keygen 1 : fix double frees impossible to reach outside of a test harness , and also use freezero where possible. From Christopher Paul Rohlf at Anthropic. sshd 8 : fix ChannelTimeout and RekeyLimit not being applied in sshd config Match blocks. sshd 8 : in sshd config dump mode, write all directives in mixed case for consistency Portability ----------- sshd 8 : re-allow PAMServiceName inside a Match block, which was incorrectly disabled during a refactoring in openssh-10.4. bz3987 Checksums: ========== - SHA1 openssh-10.5.tar.gz = 273163972f623bb9bffef9fd75a85c74d3b22633 - SHA256 openssh-10.5.tar.gz = 9Zhp0C/mDWNLmnatq68mtbqOUhvbyYcffH04dsHUwZQ= - SHA1 openssh-10.5p1.tar.gz = 3067e2af7c526b31c7e94bc3ed38904ef791eb2c - SHA256 openssh-10.5p1.tar.gz = 1E0oqDnqna+WnMaRUP3lmRCys5Nh2tgaO9bL0ZIY2xE= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 10.4 was released on 2026-07-06. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Potentially-incompatible changes -------------------------------- sshd 8 : configuration dump mode "sshd -G" now writes directives in mixed case e.g. "PubkeyAuthentication" whereas previously it emitted only lower-case names. sshd 8 : on Linux systems with the seccomp sandbox enabled, failures to enable SECCOMP or NO NEW PRIVS are now fatal. Previously sshd 8 would log the error but continue operation, to support systems that lacked these features. Now systems that lack these should instead disable the sandbox at configure time. ssh 1 , sshd 8 : make the transport protocol stricter by disconnecting if the peer sends non-KEX messages during a post- authentication key re-exchange. Previously a malicious peer could continue sending non-key exchange messages without penalty. These would be buffered, causing memory to be wasted up until the connection terminated or the server/client hit a memory limit. Implementations that do not restrict messages sent during key exchange as per RFC4253 section 7.1 may be disconnected. Reported by Marko Jevtic. Changes since OpenSSH 10.3 ========================== This release contains a number of security fixes as well as general bugfixes and a couple of new features. Security ======== sftp 1 : when downloading files on the command-line using "sftp host:/path .", a malicious server could cause the file to be downloaded to an unexpected location. This issue was identified by the Swival Security Scanner. scp 1 : when copying files between two remote destinations, do not allow a malicious server to write files to the parent directory of the intended target directory. This issue was identified by the Swival Security Scanner. sshd 8 : when using the "internal-sftp" SFTP server implementation this is not the default , long command lines were previously truncated silently after the 9th argument. If a security-relevant option was in the 10th or later position, it would be discarded. Reported by Steve Caffrey. sshd 8 : add a documentation note to mention that the GSSAPIStrictAcceptorCheck option is ineffective when the server is joined to a Windows Active Directory. Reported by Yarin Aharoni of Safebreach. sshd 8 : DisableForwarding=yes didn't override PermitTunnel=yes as it was documented to do. Note that PermitTunnel is not enabled by default. Reported independently by Huzaifa Sidhpurwala of Redhat and Marko Jevtic. sshd 8 : avoid a potential pre-authentication denial of service when GSSAPIAuthentication was enabled this feature is off by default . This was not mitigated by MaxAuthTries, but would be penalised by PerSourcePenalties. This was reported by Manfred Kaiser of the milCERT AT Austrian Ministry of Defence . sshd 8 : fix a number of cases where the minimum authentication delay was not being enforced. Reported by the Orange Cyberdefense Vulnerability Team. ssh 1 : fix a possible client-side use-after-free if the server changes its host key during a key reexchange. This was reported by Zhenpeng Leo Lin of Depthfirst. New features ------------ All: add experimental support for a composite post-quantum signature scheme that combines ML-DSA 44 and Ed25519 as specified in draft-miller-sshm-mldsa44-ed25519-composite-sigs. This scheme is not enabled by default. To use it, you'll need to add it to HostKeyAlgorithms, PubkeyAcceptedAlgorithms, etc. Keys may be generated using "ssh-keygen -t mldsa44-ed25519". ssh 1 , sshd 8 : replace the wildcard pattern matcher with an implementation based on an NFA. This avoids exponential worst-case behaviour for the old implementation. Bugfixes -------- ssh-agent 1 : fix incorrect reply to "query" SSH AGENTC EXTENSION requests. bz3967 sshd 8 : avoid sending observably different messages for valid vs invalid users in GSSAPIAuthentication disabled by default . ssh 1 , sshd 8 : fix several bugs that incorrectly classified bulk traffic as interactive. bz3972, bz3958 ssh-keygen 1 , ssh-add 1 : skip unsupported key types when downloading resident keys from a FIDO token. Previously, downloads would abort when one was encountered. GHPR657 ssh 1 : fix a potential use-after-free on an error path if cipher init fails. sshd 8 : perform stricter encoding and validation of transport state passed between sshd privilege separation subprocesses. This somewhat further hardens the server against attacks on sshd-auth or sshd-session subprocesses. ssh-agent 1 : avoid possible runtime denial of service by enforcing some limits on the length of usernames in key use constraints. sftp 1 : fix two separate one-byte out-of-bounds reads, in SSH2 FXP REALPATH and batch command processing. sftp-server 8 : disallow use of the copy-data extension to read and write to the same inode simultaneously. ssh 1 , sshd 8 : avoid strlen NULL crash if an X11 channel was created before the x11-req SSH MSG CHANNEL REQUEST was sent. GHPR679 sftp 1 , scp 1 : avoid a situation where sftp download could get stuck in a loop if a broken server repeatedly returned zero length while reading a file. ssh 1 : avoid leaking DNS0x20 case-randomised names into names canonicalised using CanonicalizePermittedCNAMEs. bz3966 sftp-server 8 : avoid truncation of pathnames passed to lstat during SSH FXP REALPATH handling on systems where PATH MAX is not the actual max. GHPR688 ssh 1 , sshd 8 : correct arming of poll 2 event masks for some socket-type channels. GHPR660 sshd 8 : major refactor of sshd config parsing and management code, to allow for more exact serialisation/deserialisation across privilege separation boundaries. ssh-add 1 : open connection to the agent only after getopt processing has completed, to give options like "-v" a chance to display debug information about this operation. crypto code: fix bounds checking when signing messages of length greater than will fit in a size t. In OpenSSH, message sizes are bounded by SSHBUF SIZE MAX so this was unreachable. crypto code: add signature malleability and pubkey validity checks to ed25519 verification. SSH doesn't depend on these properties crypto code: fix ECDSA order check for curves with cofactor = 1. All supported EC curves have cofactor 1, so this was unreachable. sshd 8 : differentiate between execution failures and a subsystem that was not found when logging why a subsystem failed to start. GHPR637 All: use safer idioms for timegm 3 and mktime 3 error detection. ssh 1 , sshd 8 : avoid accepting invalid cipher or MAC lists in config files or command-line arguments. This could cause runtime failures later. ssh 1 : fix NULL deref crash during pubkey auth when using a PEM style private key with no corresponding .pub key adjacent to it. sshd 8 : don't print an error message when trying to load a host private key when PKCS 11 keys are in use, as these don't need the private half on the filesystem. GHPR664 All: don't use deprecated ERR load crypto strings . GHPR650 ssh 1 : properly report errors during configuration default setting. GHPR649 ssh 1 : use correct directive name Match instead of Host in error message. bz3968 sftp 1 : fix "ls -ln" which was not correctly showing numeric UID/GIDs but rather user and group names. bz3953 sshd 8 : avoid possible NULL dereference if an allocation fails during config parsing. bz3948 All: fix ineffective guards against loading overly large public keys in several places. bz3969 and bz3970 sftp 1 : ensure file descriptors used by sftp to communicate to its ssh 1 subprocess don't leak into executed subprocesses e.g. via " " . GHPR693 Portability ----------- Sync fmt scaled.c with OpenBSD upstream, picking up an exactness fix for large exponents GHPR671 sshd 8 : remove duplicate sandbox entry for clock gettime64. ssh 1 , sshd 8 : use correct IPTOS DSCP VA value if not provided by the system headers. Sync getrrsetbyname.c with OpenBSD upstream, picking up robustness fixes. Disable replacements in openbsd-compat for strvisx 3 and stravis 3 , as these are unused in OpenSSH Avoid fortify warnings on Android bz3954 Fix a number of memory leaks on error paths in the portability code. GHPR681 Revise the README.privsep documentation to reflect sshd's recent switch to a multi-binary model. Checksums: ========== - SHA1 openssh-10.4.tar.gz = 8502b516230865e229d55045bb4ccc67aeae905b - SHA256 openssh-10.4.tar.gz = qUVI+wMg4mVpiQbXvfMVkF3Zuyy2JrS+ZjN764mtyGE= - SHA1 openssh-10.4p1.tar.gz = ae8650a71cc52dbbd049519cee276ae6d65c2c4d - SHA256 openssh-10.4p1.tar.gz = 72Am3SrqjVYFljjV0yYpAsiSzrqfiDlYNeDQbT+2Mjg= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 10.3 was released on 2026-04-02. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Potentially-incompatible changes -------------------------------- ssh 1 , sshd 8 : remove bug compatibility for implementations that don't support rekeying. If such an implementation tries to interoperate with OpenSSH, it will now eventually fail when the transport needs rekeying. sshd 8 : prior to this release, a certificate that had an empty principals section would be treated as matching any principal i.e. as a wildcard when used via authorized keys principals="" option. This was intentional, but created a surprising and potentially risky situation if a CA accidentally issued a certificate with an empty principals section: instead of being useless as one might expect, it could be used to authenticate as any user who trusted the CA via authorized keys. Note that this condition did not apply to CAs trusted via the sshd config 5 TrustedUserCAKeys option. This release treats an empty principals section as never matching any principal, and also fixes interpretation of wildcard characters in certificate principals. Now they are consistently implemented for host certificates and not supported for user certificates. ssh 1 : the -J and equivalent -oProxyJump="..." options now validate user and host names for ProxyJump/-J options passed via the command-line no such validation is performed for this option in configuration files . This prevents shell injection in situations where these were directly exposed to adversarial input, which would have been a terrible idea to begin with. Reported by rabbit. Changes since OpenSSH 10.2 ========================== This release contains some relatively minor security fixes as well as a number of feature improvements and general bugfixes. Security ======== ssh 1 : validation of shell metacharacters in user names supplied on the command-line was performed too late to prevent some situations where they could be expanded from %-tokens in ssh config. For certain configurations, such as those that use a "%u" token in a "Match exec" block, an attacker who can control the user name passed to ssh 1 could potentially execute arbitrary shell commands. Reported by Florian Kohnhäuser. We continue to recommend against directly exposing ssh 1 and other tools' command-lines to untrusted input. Mitigations such as this can not be absolute given the variety of shells and user configurations in use. sshd 8 : when matching an authorized keys principals="" option against a list of principals in a certificate, an incorrect algorithm was used that could allow inappropriate matching in cases where a principal name in the certificate contains a comma character. Exploitation of the condition requires an authorized keys principals="" option that lists more than one principal and a CA that will issue a certificate that encodes more than one of these principal names separated by a comma typical CAs strongly constrain which principal names they will place in a certificate . This condition only applies to user- trusted CA keys in authorized keys, the main certificate authentication path TrustedUserCAKeys/AuthorizedPrincipalsFile is not affected. Reported by Vladimir Tokarev. scp 1 : when downloading files as root in legacy -O mode and without the -p preserve modes flag set, scp did not clear setuid/setgid bits from downloaded files as one might typically expect. This bug dates back to the original Berkeley rcp program. Reported by Christos Papakonstantinou of Cantina and Spearbit. sshd 8 : fix incomplete application of PubkeyAcceptedAlgorithms and HostbasedAcceptedAlgorithms with regard to ECDSA keys. Previously if one of these directives contains any ECDSA algorithm name say "ecdsa-sha2-nistp384" , then any other ECDSA algorithm would be accepted in its place regardless of whether it was listed or not. Reported by Christos Papakonstantinou of Cantina and Spearbit. ssh 1 : connection multiplexing confirmation requested using "ControlMaster ask/autoask" was not being tested for proxy mode multiplexing sessions i.e. "ssh -O proxy ..." . Reported by Michalis Vasileiadis. New features ------------ ssh 1 , sshd 8 : support IANA-assigned codepoints for SSH agent forwarding, as per draft-ietf-sshm-ssh-agent. Support for the new names is advertised via the EXT INFO message. If a server offers support for the new names, then they are used preferentially. Support for the pre-standardisation "@openssh.com" extensions for agent forwarding remains supported. ssh-agent 1 : implement support for draft-ietf-sshm-ssh-agent "query" extension. ssh-add 1 : support querying the protocol extensions via the agent "query" extension with a new -Q flag. ssh 1 : support multiple files in a ssh config RevokedHostKeys directive. bz3918 sshd 8 : support multiple files in a sshd config RevokedKeys directive bz3918 ssh 1 : add a ~I escape option that shows information about the current SSH connection. ssh 1 : add an "ssh -Oconninfo user@host" multiplexing command that shows connection information, similar to the ~I escapechar. ssh 1 : add an "ssh -O channels user@host" multiplexing command to get a running mux process to show information about what channels are currently open. sshd 8 : add 'invaliduser' penalty to PerSourcePenalties, which is applied to login attempts for usernames that do not match real accounts. Defaults to 5s to match 'authfail' but allows administrators to block such attempts for longer if desired. sshd 8 : add a GSSAPIDelegateCredentials option for the server, controlling whether it accepts delegated credentials offered by the client. This option mirrors the same option in ssh config. GHPR614 ssh 1 , sshd 8 : support the VA DSCP codepoint in the IPQoS directive. sshd 8 : convert PerSourcePenalties to using floating point time, allowing penalties to be less than a second. This is useful if you need to penalise things you expect to occur at =1 QPS. ssh-keygen 1 : support writing ED25519 keys in PKCS8 format. GHPR570 Support the ed25519 signature scheme via libcrypto. Bugfixes -------- sshd 8 : make IPQoS first-match-wins in sshd config, like other configuration directives. bz3924 sshd 8 : fix potential crash when MaxStartups is using a single argument i.e. not using the MaxStartps x:y:z form to a value below 10. bz3941 sshd 8 : fix a potential hang during key exchange if needed DH group values were missing from /etc/moduli. ssh-agent 1 : fix return values from extensions to be correct wrt draft-ietf-sshm-ssh-agent: extension requests should indicate failure using SSH AGENT EXTENSION FAILURE rather than the generic SSH AGENT FAILURE error code. This allows the client to discern between "the request failed" and "the agent doesn't support this extension". ssh 1 : use fmprintf for showing challenge-response name and info to preserve UTF-8 characters where appropriate. Prompted by GitHub PR 452. scp 1 : when uploading a directory using sftp/sftp e.g. during a recursive transfer , don't clobber the remote directory permissions unless either we created the directory during the transfer or the -p flag was set. bz3925 All: implement missing pieces of FIDO/webauthn signature support, mostly related to certificate handling and enable acceptance of this signature format by default. bz3748 GHPR624 GHPR625 sshd config 5 : make it clear that DenyUsers/DenyGroups overrides AllowUsers/AllowGroups. Previously we specified the order in which the directives are processed but it was ambiguous as to what happened if both matched. ssh 1 : don't try to match certificates held in an agent to private keys. This matching is done to support certificates that were loaded without their private key material, but is unnecessary for agent-hosted certificate which always have private key material available in the agent. Worse, this matching would mess up the request sent to the agent in such a way as to break usage of these keys when the key usage was restricted in the agent. bz3752 sftp 1 : if editline has been switched to vi mode i.e. via "bind -v" in .editrc , setup a keybinding so that command mode can be entered. ssh 1 , sshd 8 : improve performance of keying the sntrup761 key agreement algorithm. ssh 1 , sshd 8 : enforce maximum packet/block limit during pre-authentication phase. sftp 1 : don't misuse the sftp limits extension's open-handles field. This value is supposed to be the number of handles a server will allow to be opened and not a number of outstanding read/write requests that can be sent during an upload/download. sshd 8 : don't crash at connection time if the main sshd config lacks any subsystem directive but one is defined in a Match block. bz3906 sshd config 5 : add a warning next to the ForceCommand directive that forcing a command doesn't automatically disable forwarding. sshd config 5 : add a warning that TOKENS are replaced without filtering or escaping and that it's the administrator's responsibility to ensure they are used safely in context. scp 1 : correctly quote filenames in verbose output for local- local copies. bz3900 sshd 8 : don't mess up the PerSourceNetBlockSize IPv6 mask if sscanf didn't decode it. GHPR598 ssh-add 1 : when loading FIDO2 resident keys, set the comment to the FIDO application string. This matches the behaviour of ssh-keygen -K. GHPR608 sshd 8 : don't strnvis log messages that are going to be logged by sshd-auth via its parent sshd-session process, as the parent will also run them though strnvis . Prevents double-escaping of non-printing characters in some log messages. bz3896 ssh-agent 1 : escape SSH AUTH SOCK paths that are sent to the shell as setenv commands. Unbreaks ssh-agent for home directory paths that contain whitespace. bz3884 All: Remove unnecessary checks for ECDSA public key validity. sshd 8 : activate UnusedConnectionTimeout only after the last channel has closed. Previously UnusedConnectionTimeout could fire early after a ChannelTimeout. This was not a problem for the OpenSSH client because it terminates once all channels have closed but could cause problems for other clients e.g. API clients that do things differently. bz3827 All: fix PKCS 11 key PIN entry problems introduced in openssh-10.1/10.2. bz3879 scp 1 : when using the SFTP protocol for transfers, fix implicit destination path selection when source path ends with "..". bz3871 sftp 1 : when tab-completing a filename, ensure that the completed string does not end up mid-way through a multibyte character, as this will cause a fatal later on. GHPR 587 ssh-keygen 1 : fix crash at exit visible via ssh-keygen -D when multiple keys loaded. scp 1 /sftp 1 : correctly display bandwidths 2GBps in the progress meter. Portability ----------- sshd 8 : fix condition introduced in openssh 10.2p1 stable branch here a PAM module that changed the requested username between SSH MSG USERAUTH REQUEST messages during authentication could confuse the PAM stack and let it proceed with a different understanding of the active username than the rest of sshd. Reported by Mike Damm. sshd 8 : immediately report interactive instructions to clients when using keyboard-interactive authentication with PAM. bz2876 sshd 8 : fix duplicate PAM messages under some situations. sshd 8 : don't leak PAM handle on repeat invocations. bz3882 All: support linking libcrypto implementations e.g. BoringSSL that require libstdc++. sshd 8 : fix ut type for btmp records, correctly using LOGIN PROCESS and USER PROCESS. sshd 8 : allow uname 3 in the seccomp sandbox. This is needed by zlib-ng on RISC-V platforms. All: remove remaining OpenSSL add all algorithms calls. We already have OPENSSL init crypto in the compat layer. Prompted by github PR 606 All: fix builds on older Mac OS wrt nfds t. mdoc2man: several improvements including better support for Dl and Ns inside Ic. Checksums: ========== - SHA1 openssh-10.3.tar.gz = 854863c04cd28242d73ac6c3ee9c37fa756f1a2f - SHA256 openssh-10.3.tar.gz = aCU5P47rM+m4N8/i2JOHMOMhafMYqBhvQQSnPXczN5M= - SHA1 openssh-10.3p1.tar.gz = 9c78838ec07af14aff54f3755ac56ce6812452a9 - SHA256 openssh-10.3p1.tar.gz = VmgqNruS3PS08Bb9jsjnQFm3mo3iXBXWcNcx59GORfQ= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 10.2 was released on 2025-10-10. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Future deprecation warning -------------------------- A future release of OpenSSH will deprecate support for SHA1 SSHFP records due to weaknesses in the SHA1 hash function. SHA1 SSHFP DNS records will be ignored and ssh-keygen -r will generate only SHA256 SSHFP records. The SHA256 hash algorithm, which has no known weaknesses, has been supported for SSHFP records since OpenSSH 6.1, released in 2012. Changes since OpenSSH 10.1 ========================== This is a bugfix release, primarily to fix a problem that rendered ssh 1 unusable when ControlPersist was enabled. Bugfixes -------- ssh 1 : fix mishandling of terminal connections when ControlPersist was active that rendered the session unusable. bz3872 ssh-keygen 1 : fix download of keys from PKCS 11 tokens. ssh-keygen 1 : fix CA signing operations when the CA key is held in a ssh-agent 1 . bz3877 Portability ----------- All: support platforms without mmap 2 , e.g. WASM builds such as https://hterm.org All: fix builds on FreeBSD for missing fnctl.h include. All: fix builds on MacOS <10.12 Sierra, which lacks clock gettime 3 sshd 8 : don't PAM RHOST if the remote host is the "UNKNOWN" placeholder name. Avoids potential hangs in some PAM modules as they try to resolve it. Note, sshd 8 only uses the "UNKNOWN" name when the connection is not on an IPv4 or IPv6 socket. Checksums: ========== SHA1 openssh-10.2.tar.gz = 6fcda8004bad0fb0eaee60e8308f91b605ad0dce SHA256 openssh-10.2.tar.gz = y0rCEdrVc4OJRZLg0u3F0frAgz87ydeTktCk3rQfVj8= SHA1 openssh-10.2p1.tar.gz = c34efade16109f065ec8c834f237bcedd8d7ef5c SHA256 openssh-10.2p1.tar.gz = zMQsBBmTeVkmP6Hb0W2vwYxWuYTANWLSk3zlamD3mLI= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 10.1 was released on 2025-10-06. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Future deprecation warning -------------------------- A future release of OpenSSH will deprecate support for SHA1 SSHFP records due to weaknesses in the SHA1 hash function. SHA1 SSHFP DNS records will be ignored and ssh-keygen -r will generate only SHA256 SSHFP records. The SHA256 hash algorithm, which has no known weaknesses, has been supported for SSHFP records since OpenSSH 6.1, released in 2012. Potentially-incompatible changes -------------------------------- ssh 1 : add a warning when the connection negotiates a non-post quantum key agreement algorithm. This warning has been added due to the risk of "store now, decrypt later" attacks. More details at https://openssh.com/pq.html This warning may be controlled via a new WarnWeakCrypto ssh config option, defaulting to on. This option is likely to control additional weak crypto warnings in the future. ssh 1 , sshd 8 : major changes to handling of DSCP marking/IPQoS In both client and server the default DSCP a.k.a IPQoS values were revised and the way these values are used during runtime has changed. Interactive traffic is now assigned to the EF Expedited Forwarding class by default. This provides more appropriate packet prioritisation information for the intermediate network, such as wireless media cf. RFC 8325 . Non-interactive traffic will now use the operating system default DSCP marking. Both the interactive and non-interactive DSCP values may be overridden via the IPQoS keyword, described in ssh config 5 and sshd config 5 . The appropriate DSCP marking is now automatically selected and updated as needed over the course of a connection's lifetime. ssh 1 and sshd 8 will switch between the interactive and non-interactive IPQoS values depending on the type of SSH channels open at the time. For example, if an sftp session is using the connection alongside a shell session, then the non- interactive value will be used for the duration of the sftp. A connection which contains only interactive sessions is marked EF. ssh 1 , sshd 8 : deprecate support for IPv4 type-of-service ToS keywords in the IPQoS configuration directive. Type of Service ToS was deprecated in the late nineties and replaced with the Differentiated Services architecture, which has significant advantages for operators because it offers more granularity. OpenSSH switched its default IPQoS from ToS to DSCP values in 2018 openssh-7.7 . IPQoS configurations with 'lowdelay', 'reliability', or 'throughput' will be ignored and will instead use the system default QoS settings. Additionally, a debug message will be logged about the deprecation with a suggestion to use DSCP QoS instead. ssh-add 1 : when adding certificates to an agent, set the expiry to the certificate expiry time plus a short 5 min grace period. This will cause the agent to automatically remove certificates shortly after they expire. A new ssh-add -N option disables this behaviour. All: remove experimental support for XMSS keys. This was never enabled by default. We expect to implement a new post-quantum signature scheme in the near future. ssh-agent 1 , sshd 8 : move agent listener sockets from /tmp to under ~/.ssh/agent for both ssh-agent 1 and forwarded sockets in sshd 8 . This ensures processes that have restricted filesystem access that includes /tmp do not ambiently have the ability to use keys in an agent. Moving the default directory has the consequence that the OS will no longer clean up stale agent sockets, so ssh-agent now gains this ability. To support $HOME on NFS, the socket path includes a truncated hash of the hostname. ssh-agent will, by default, only clean up sockets from the same hostname. ssh-agent 1 gains some new flags: -U suppresses the automatic cleanup of stale sockets when it starts. -u forces a cleanup without keeping a running agent, -uu forces a cleanup that ignores the hostname. -T makes ssh-agent put the socket back in /tmp. Changes since OpenSSH 10.0 ========================== This release contains a minor security fix as well as a number of feature improvements and bugfixes. Security ======== ssh 1 : disallow control characters in usernames passed via the commandline or expanded using %-sequences from the configuration file, and disallow \0 characters in ssh:// URIs. If an ssh 1 commandline was constructed using usernames or URIs obtained from an untrusted source, and if a ProxyCommand that uses the %r expansion was configured, then it may be possible for an attacker to inject shell expressions that may be executed when the proxy command is started. We strongly recommend against using untrusted inputs to construct ssh 1 commandlines. This change also relaxes the validity checks in one small way: usernames supplied via the configuration file as literals i.e. that have no % expansion characters are not subject to these validity checks. This allows usernames that contain arbitrary characters to be used, but only via configuration files. This is done on the basis that ssh's configuration is trusted. This issue was reported by David Leadbeater. New features ------------ ssh 1 , sshd 8 : add SIGINFO handlers to log active channel and session information. sshd 8 : when refusing a certificate for user authentication, log enough information to identify the certificate in addition to the reason why it was being denied. Makes debugging certificate authorisation problems a bit easier. ssh 1 , ssh-agent 1 : support ed25519 keys hosted on PKCS 11 tokens. ssh 1 : add an ssh config 5 RefuseConnection option that, when encountered while processing an active section in a configuration, terminates ssh 1 with an error message that contains the argument to the option. This may be useful for expressing reminders or warnings in config files, for example: Match host foo RefuseConnection "foo is deprecated, use splork instead" sshd 8 : make the X11 display number check relative to X11DisplayOffset. This will allow people to use X11DisplayOffset to configure much higher port ranges if they really want, while not changing the default behaviour. unit tests: the unit test framework now includes some basic benchmarking capabilities. Run with "make UNITTEST BENCHMARK=yes" on OpenBSD or "make unit-bench" on Portable OpenSSH. Bugfixes -------- sshd 8 : fix mistracking of MaxStartups process exits in some situations. At worst, this could cause all MaxStartups slots to fill and sshd to refuse new connections. ssh 1 : fix delay on X client startup when ObscureKeystrokeTiming is enabled. bz 3820 sshd 8 : increase the maximum size of the supported configuration from 256KB to 4MB, which ought to be enough for anybody. Fail early and visibly when this limit is breached. bz3808 sftp 1 : during sftp uploads, avoid a condition where a failed write could be ignored if a subsequent write succeeded. This is unlikely but technically possible because sftp servers are allowed to reorder requests. sshd 8 : avoid a race condition when the sshd-auth process exits that could cause a spurious error message to be logged. sshd 8 : log at level INFO when PerSourcePenalties actually blocks access to a source address range. Previously this was logged at level VERBOSE, which hid enforcement actions under default config settings. sshd 8 : GssStrictAcceptor was missing from sshd -T output; fix sshd 8 : Make the MaxStartups and PerSourceNetBlockSize options first-match-wins as advertised. bz3859 ssh 1 : fix an incorrect return value check in the local forward cancellation path that would cause failed cancellations not to be logged. sshd 8 : make "Match final" not trigger a second parsing pass of ssh config unless hostname canonicalisation or a separate "Match final" does . bz3843 ssh 1 : better debug diagnostics when loading keys. Will now list key fingerprint and algorithm not just algorithm number as well as making it explicit which keys didn't load. All: fix a number of memory leaks found by LeakSanitizer, Coverity and manual inspection. sshd 8 : Output the current name for PermitRootLogin's "prohibit-password" in sshd -T instead of its deprecated alias "without-password". bz 3788 ssh 1 : make writing known hosts lines more atomic by writing the entire line in one operation and using unbuffered stdio. Usually writes to this file are serialised on the "Are you sure you want to continue connecting?" prompt, but if host key checking is disabled and connections were being made with high concurrency then interleaved writes might have been possible. Portability ----------- sshd 8 : check the username didn't change during the PAM transactions. PAM modules can change the user during their execution, but this is not supported by sshd 8 . If such a case was incorrectly configured by the system administrator, then sshd 8 could end up using a different username to the one authorised by PAM. sshd 8 : don't log audit messages with UNKNOWN hostname to avoid slow DNS lookups in the audit subsystem. All: when making a copy of struct passwd, ensure struct fields are non-NULL. Android libc can return NULL pw gecos, for example. All: Remove status bits from OpenSSL =3 version check. sshd 8 , ssh 1 : Use SSH TUN COMPAT AF on FreeBSD. Otherwise tun forwarding from other OSes fails as soon as the first IPv6 message is sent by the other side which is usually a Router Solicitation ICMPv6 message which is sent as soon as the interface is up . ssh 1 , ssh-agent 8 : check for nlist function presence before attempting to use it instead of relying on the presence of the nlist.h header. Mac OS X, for example, has the header but not the function in the 64bit libraries. All: fill in missing system header files. Create replacement header files inside openbsd-compat for common headers that are missing on a given platform. Usually these are just empty, but in some cases they'll include the equivalent file. This avoids having to wrap those includes in ' ifdef HAVE FOO H' and reduces the diff between Portable OpenSSH and OpenBSD. sshd 8 : handle futex time64 properly in seccomp sandbox Previously we only allowed NR futex, but some 32-bit systems apparently support NR futex time64. We had support for this in the sandbox, but because of a macro error only NR futex was allowlisted. Add contrib/gnome-ssh-askpass4 for GNOME 40+ using the GCR API. sshd 8 : let ga init fail gracefully if getgrouplist does. Apparently getgrouplist can fail on OSX when passed a non-existent group name. Other platforms seem to return a group list consisting of the numeric gid passed to the function. bz3848 ssh-agent 1 : exit 0 from SIGTERM under systemd socket-activation, preventing a graceful shutdown of an agent via systemd from incorrectly marking the service as "failed". build: wrap some autoconf macros in AC CACHE CHECK. This allows skipping/overriding the OSSH CHECK CFLAG COMPILE and OSSH CHECK CFLAG LINK macros used to discover supported compiler or linker flags. E.g. $ ./configure ossh cv cflag fzero call used regs used=no ... checking if cc supports compile flag -fzero-call-used-regs=used and linking succeeds... cached no Checksums: ========== SHA1 openssh-10.1.tar.gz = 8eef44a945a9a9a5a99213ab0d57e35b7ba60e75 SHA256 openssh-10.1.tar.gz = j9ymvhvdGMeAvh1oTI2YmOAwv7Ao70gbGPyPedgQsBU= SHA1 openssh-10.1p1.tar.gz = 7fd17b99d1beffb47cd380d64079e920bb0bd91f SHA256 openssh-10.1p1.tar.gz = ufx6K4JXlGem8vQ+SoHI4d/aYU3bT5slWq/XAgu/B1g= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 10.0 was released on 2025-04-09. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Potentially-incompatible changes -------------------------------- This release removes support for the weak DSA signature algorithm, completing the deprecation process that began in 2015 when DSA was disabled by default and repeatedly warned over the last 12 months. scp 1 , sftp 1 : pass "ControlMaster no" to ssh when invoked by scp & sftp. This disables implicit session creation by these tools when ControlMaster was set to yes/auto by configuration, which some users found surprising. This change will not prevent scp/sftp from using an existing multiplexing session if one had already been created. GHPR557 This release has the version number 10.0 and announces itself as "SSH-2.0-OpenSSH 10.0". Software that naively matches versions using patterns like "OpenSSH 1 " may be confused by this. sshd 8 : this release removes the code responsible for the user authentication phase of the protocol from the per- connection sshd-session binary to a new sshd-auth binary. Splitting this code into a separate binary ensures that the crucial pre-authentication attack surface has an entirely disjoint address space from the code used for the rest of the connection. It also yields a small runtime memory saving as the authentication code will be unloaded after the authentication phase completes. This change should be largely invisible to users, though some log messages may now come from "sshd-auth" instead of "sshd-session". Downstream distributors of OpenSSH will need to package the sshd-auth binary. sshd 8 : this release disables finite field a.k.a modp Diffie-Hellman key exchange in sshd by default. Specifically, this removes the "diffie-hellman-group " and "diffie-hellman-group-exchange- " methods from the default KEXAlgorithms list. The client is unchanged and continues to support these methods by default. Finite field Diffie Hellman is slow and computationally expensive for the same security level as Elliptic Curve DH or PQ key agreement while offering no redeeming advantages. ECDH has been specified for the SSH protocol for 15 years and some form of ECDH has been the default key exchange in OpenSSH for the last 14 years. sshd 8 : this release removes the implicit fallback to compiled- in groups for Diffie-Hellman Group Exchange KEX when the moduli file exists but does not contain moduli within the client- requested range. The fallback behaviour remains for the case where the moduli file does not exist at all. This allows administrators more explicit control over which DH groups will be selected, but can lead to connection failures if the moduli file is edited incorrectly. bz 2793 Changes since OpenSSH 9.9 ========================= This release contains a minor security fix as well as a number of feature improvements and bugfixes. Security ======== sshd 8 : fix the DisableForwarding directive, which was failing to disable X11 forwarding and agent forwarding as documented. X11 forwarding is disabled by default in the server and agent forwarding is off by default in the client. New features ------------ ssh 1 : the hybrid post-quantum algorithm mlkem768x25519-sha256 is now used by default for key agreement. This algorithm is considered to be safe against attack by quantum computers, is guaranteed to be no less strong than the popular curve25519-sha256 algorithm, has been standardised by NIST and is considerably faster than the previous default. ssh 1 : prefer AES-GCM to AES-CTR mode when selecting a cipher for the connection. The default cipher preference list is now Chacha20/Poly1305, AES-GCM 128/256 followed by AES-CTR 128/192/256 . ssh 1 : add %-token and environment variable expansion to the ssh config SetEnv directive. ssh 1 : allow %-token and environment variable expansion in the ssh config User directive, with the exception of %r and %C which would be self-referential. bz 3477 ssh 1 , sshd 8 : add "Match version" support to ssh config and sshd config. Allows matching on the local version of OpenSSH, e.g. "Match version OpenSSH 10. ". ssh 1 : add support for "Match sessiontype" to ssh config. Allows matching on the type of session initially requested, either "shell" for interactive sessions, "exec" for command execution sessions, "subsystem" for subsystem requests, such as sftp, or "none" for transport/forwarding-only sessions. ssh 1 : add support for "Match command ..." support to ssh config, allowing matching on the remote command as specified on the command-line. ssh 1 : allow 'Match tagged ""' and 'Match command ""' to match empty tag and command values respectively. sshd 8 : allow glob 3 patterns to be used in sshd config AuthorizedKeysFile and AuthorizedPrincipalsFile directives. bz2755 sshd 1 : support the VersionAddendum in the client, mirroring the option of the same name in the server; bz2745 ssh-agent 1 : the agent will now delete all loaded keys when signaled with SIGUSR1. This allows deletion of keys without having access to $SSH AUTH SOCK. Portable OpenSSH, ssh-agent 1 : support systemd-style socket activation in ssh-agent using the LISTEN PID/LISTEN FDS mechanism. Activated when these environment variables are set, the agent is started with the -d or -D option and no socket path is set. GHPR502 ssh-keygen 1 : support FIDO tokens that return no attestation data, e.g. recent WinHello. GHPR542 ssh-agent 1 : add a "-Owebsafe-allow=..." option to allow the default FIDO application ID allow-list to be overridden. Add a work-in-progress tool to verify FIDO attestation blobs that ssh-keygen can optionally write when enrolling FIDO keys. This tool is available under regress/misc/ssh-verify-attestation for experimentation but is not installed by "make install". ssh-keygen 1 : allow "-" as output file for moduli screening. GHPR393 Bugfixes -------- sshd 8 : remove assumption that the sshd config and any configs it includes can fit in a possibly enlarged socket buffer. Previously it was possible to create a sufficiently large configuration that could cause sshd to fail to accept any connection. sshd 8 will now actively manage sending its config to the sshd-session sub-process. ssh 1 : don't start the ObscureKeystrokeTiming mitigations if there has been traffic on a X11 forwarding channel recently. Should fix X11 forwarding performance problems when this setting is enabled. bz3655 ssh 1 : prohibit the comma character in hostnames accepted, but allow an underscore as the first character in a hostname. sftp 1 : set high-water when resuming a "put". Prevents bogus "server reordered acks" debug message. ssh 1 , sshd 8 : fix regression in openssh-9.8, which would fail to accept "Match criteria=argument" as well as the documented "Match criteria argument" syntax in ssh config and sshd config. bz3739 sftp 1 , ssh 1 : fix a number possible NULL dereference bugs, including Coverity CIDs 405019 and 477813. sshd 8 : fix PerSourcePenalty incorrectly using "crash" penalty when LoginGraceTime was exceeded. bz3797 sshd 8 : fix "Match invalid-user" from incorrectly being activated in initial configuration pass when no other predicates were present on the match line sshd 8 : fix debug logging of user specific delay. GHPR 552 sshd 8 : improve debug logging across sub-process boundaries. Previously some log messages were lost early in the sshd-auth and sshd-session processes' life. ssh 1 : require control-escape character sequences passed via the '-e ^x' command-line to be exactly two characters long. Avoids one byte out-of-bounds read if ssh is invoked as "ssh -e^ ..." GHPR368 ssh 1 , sshd 8 : prevent integer overflow in x11 port handling. These are theoretically possible if the admin misconfigured X11DisplayOffset or the user misconfigures their own $DISPLAY, but don't happen in normal operation. bz 3730 ssh-keygen 1 : don't mess up ssh-keygen -l output when the file contains CR characters; GHPR236 bz3385. sshd 8 : add rate limits to logging of connections dropped by PerSourcePenalties. Previously these could be noisy in logs. ssh 1 : fix argument of "Compression" directive in ssh -G config dump, which regressed in openssh-9.8. sshd 8 : fix a corner-case triggered by UpdateHostKeys when sshd refuses to accept the signature returned by an agent holding host keys during the hostkey rotation sub-protocol. This situation could occur in situations where a PKCS 11 smartcard that lacked support for particular signature algorithms was used to store host keys. ssh-keygen 1 : when using RSA keys to sign messages with "ssh-keygen -Y", select the signature algorithm based on the requested hash algorithm "-Ohashalg=xxx" . This allows using something other than the default of rsa-sha2-512, which may not be supported on all signing backends, e.g. some smartcards only support SHA256. ssh 1 , sshd 8 , ssh-keyscan 1 : fix ML-KEM768x25519 KEX on big-endian systems. Many regression and interop test improvements. Portability ----------- All: add support for AWS-LC AWS libcrypto . bz3784 sshd 8 : add wtmpdb support as a Y2038 safe wtmp replacement. sshd 8 : add support for locking sshd into memory, enabled with the --with-linux-memlock-onfault configure flag. Add support for building a standalone sk-libfido2 library, enabled by --with-security-key-standalone ssh 1 , sshd 8 , ssh-keyscan 1 : include builtin popcount replacement function. for compilers that lack it. All: Check for and replace le32toh, le64toh, htole64 separately. It appears that at least some versions of endian.h in glibc do not have the latter two. bz 3794 Remove ancient RHL 6.x config in RPM spec. Checksums: ========== - SHA1 openssh-10.0.tar.gz = 933f4fded0497ef6a588381257276e156a70f9c3 - SHA256 openssh-10.0.tar.gz = oaJ+cXLCVoCZAz9W5W1vF7ko4GJW6iq7JmblrPUA34Q= - SHA1 openssh-10.0p2.tar.gz = ac4205e827aea383bf316a33a0e2d5b66b85fcf8 - SHA256 openssh-10.0p2.tar.gz = AhoucJoO30JQsSVr1anlAEEakN3avqgw7VnO+Q652Fw= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.9p2 was released on 2025-02-18. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.9p1 =========================== This release fixes two security bugs. Security ======== Fix CVE-2025-26465 - ssh 1 in OpenSSH versions 6.8p1 to 9.9p1 inclusive contained a logic error that allowed an on-path attacker a.k.a MITM to impersonate any server when the VerifyHostKeyDNS option is enabled. This option is off by default. Fix CVE-2025-26466 - sshd 8 in OpenSSH versions 9.5p1 to 9.9p1 inclusive is vulnerable to a memory/CPU denial-of-service related to the handling of SSH2 MSG PING packets. This condition may be mitigated using the existing PerSourcePenalties feature. Both vulnerabilities were discovered and demonstrated to be exploitable by the Qualys Security Advisory team. We thank them for their detailed review of OpenSSH. For OpenBSD, fixes to these problems are available as errata; refer to https://www.openbsd.org/errata.html Bugfixes ======== ssh 1 , sshd 8 : fix regression in Match directive that caused failures when predicates and their arguments were separated by '=' characters instead of whitespace bz3739 . sshd 8 : fix the "Match invalid-user" predicate, which was matching incorrectly in the initial pass of config evaluation. ssh 1 , sshd 8 , ssh-keyscan 1 : fix mlkem768x25519-sha256 key exchange on big-endian systems. Fix a number of build problems on particular operating systems / configurations. Checksums: ========== - SHA1 openssh-9.9p2.tar.gz = edefe960645780dee78059c444d4261667ad3056 - SHA256 openssh-9.9p2.tar.gz = karbYD4IzChe3fll4RmdAlhfqU2ZTWyuW0Hhch4hVnM= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.9 was released on 2024-09-19. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Future deprecation notice ========================= OpenSSH plans to remove support for the DSA signature algorithm in early 2025. This release disables DSA by default at compile time. DSA, as specified in the SSHv2 protocol, is inherently weak - being limited to a 160 bit private key and use of the SHA1 digest. Its estimated security level is only 80 bits symmetric equivalent. OpenSSH has disabled DSA keys by default since 2015 but has retained run-time optional support for them. DSA was the only mandatory-to- implement algorithm in the SSHv2 RFCs, mostly because alternative algorithms were encumbered by patents when the SSHv2 protocol was specified. This has not been the case for decades at this point and better algorithms are well supported by all actively-maintained SSH implementations. We do not consider the costs of maintaining DSA in OpenSSH to be justified and hope that removing it from OpenSSH can accelerate its wider deprecation in supporting cryptography libraries. Currently DSA is disabled at compile time. The final step of removing DSA support entirely is planned for the first OpenSSH release of 2025. DSA support may be re-enabled on OpenBSD by setting "DSAKEY=yes" in Makefile.inc. To enable DSA support in portable OpenSSH, pass the "--enable-dsa-keys" option to configure. Potentially-incompatible changes -------------------------------- ssh 1 : remove support for pre-authentication compression. OpenSSH has only supported post-authentication compression in the server for some years. Compression before authentication significantly increases the attack surface of SSH servers and risks creating oracles that reveal information about information sent during authentication. ssh 1 , sshd 8 : processing of the arguments to the "Match" configuration directive now follows more shell-like rules for quoted strings, including allowing nested quotes and \-escaped characters. If configurations contained workarounds for the previous simplistic quote handling then they may need to be adjusted. If this is the case, it's most likely to be in the arguments to a "Match exec" confition. In this case, moving the command to be evaluated from the Match line to an external shell script is easiest way to preserve compatibility with both the old and new versions. Changes since OpenSSH 9.8 ========================= This release contains a number of new features and bugfixes. New features ------------ ssh 1 , sshd 8 : add support for a new hybrid post-quantum key exchange based on the FIPS 203 Module-Lattice Key Enapsulation mechanism ML-KEM combined with X25519 ECDH as described by https://datatracker.ietf.org/doc/html/draft-kampanakis-curdle-ssh-pq-ke-03 This algorithm "mlkem768x25519-sha256" is available by default. ssh 1 : the ssh config "Include" directive can now expand environment as well as the same set of %-tokens "Match Exec" supports. sshd 8 : add a sshd config "RefuseConnection" option that, if set will terminate the connection at the first authentication request. sshd 8 : add a "refuseconnection" penalty class to sshd config PerSourcePenalties that is applied when a connection is dropped by the new RefuseConnection keyword. sshd 8 : add a "Match invalid-user" predicate to sshd config Match options that matches when the target username is not valid on the server. ssh 1 , sshd 8 : update the Streamlined NTRUPrime code to a substantially faster implementation. ssh 1 , sshd 8 : the hybrid Streamlined NTRUPrime/X25519 key exchange algorithm now has an IANA-assigned name in addition to the "@openssh.com" vendor extension name. This algorithm is now also available under this name "sntrup761x25519-sha512" ssh 1 , sshd 8 , ssh-agent 1 : prevent private keys from being included in core dump files for most of their lifespans. This is in addition to pre-existing controls in ssh-agent 1 and sshd 8 that prevented coredumps. This feature is supported on OpenBSD, Linux and FreeBSD. All: convert key handling to use the libcrypto EVP PKEY API, with the exception of DSA. sshd 8 : add a random amount of jitter up to 4 seconds to the grace login time to make its expiry unpredictable. Bugfixes -------- sshd 8 : relax absolute path requirement back to what it was prior to OpenSSH 9.8, which incorrectly required that sshd was started with an absolute path in inetd mode. bz3717 sshd 8 : fix regression introduced in openssh-9.8 that swapped the order of source and destination addresses in some sshd log messages. sshd 8 : do not apply authorized keys options when signature verification fails. Prevents more restrictive key options being incorrectly applied to subsequent keys in authorized keys. bz3733 ssh-keygen 1 : include pathname in some of ssh-keygen's passphrase prompts. Helps the user know what's going on when ssh-keygen is invoked via other tools. Requested in GHPR503 ssh 1 , ssh-add 1 : make parsing user@host consistently look for the last '@' in the string rather than the first. This makes it possible to more consistently use usernames that contain '@' characters. ssh 1 , sshd 8 : be more strict in parsing key type names. Only allow short names e.g "rsa" in user-interface code and require full SSH protocol names e.g. "ssh-rsa" everywhere else. bz3725 regress: many performance and correctness improvements to the re-keying regression test. ssh-keygen 1 : clarify that ed25519 is the default key type generated and clarify that rsa-sha2-512 is the default signature scheme when RSA is in use. GHPR505 sshd 8 : fix minor memory leak in Subsystem option parsing; GHPR515 All: additional hardening and consistency checks for the sshbuf code. sshd 8 : reduce default logingrace penalty to ensure that a single forgotton login that times out will be below the penalty threshold. ssh 1 : fix proxy multiplexing -O proxy bug. If a mux started with ControlPersist then later has a forwarding added using mux proxy connection and the forwarding was used, then when the mux proxy session terminated, the mux master process would issue a bad message that terminated the connection. Portability ----------- sync contrib/ssh-copy-id to the latest upstream version. regress: improve portablility for some awk 1 usage e.g. Solaris In the contrib/redhat RPM spec file, without openssl was previously incorrectly enabled unconditionally. sshd 8 restore audit call before exit that regressed in openssh-9.8 Fixes an issue where the SSH CONNECTION ABANDON event was not recorded. sshd 8 : add support for class-imposed loging restrictions on FreeBSD. Allowing auth hostok 3 and auth timeok 3 to control logins. Build fixes for Musl libc. Fix detection of setres id on GNU/Hurd Checksums: ========== - SHA1 openssh-9.9.tar.gz = 080acf6ff0b862e8faa3baa3920a079536d28e85 - SHA256 openssh-9.9.tar.gz = h1xwa7CVcJfN7I9MgxxPBpUELzo+tnmLy+6slYHTUtw= - SHA1 openssh-9.9p1.tar.gz = 5ded7eb0add0b02b5d1a1c4bf5cb2c89d2117b53 - SHA256 openssh-9.9p1.tar.gz = s0P7zb/4fxWxmG5uFdbU/Jp9NgZr5rf7UHCHuo+WbAI= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.8 was released on 2024-07-01. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Security ======== This release contains fixes for two security problems, one critical and one minor. 1 Race condition in sshd 8 A critical vulnerability in sshd 8 was present in Portable OpenSSH versions between 8.5p1 and 9.7p1 inclusive that may allow arbitrary code execution with root privileges. Successful exploitation has been demonstrated on 32-bit Linux/glibc systems with ASLR. Under lab conditions, the attack requires on average 6-8 hours of continuous connections up to the maximum the server will accept. Exploitation on 64-bit systems is believed to be possible but has not been demonstrated at this time. It's likely that these attacks will be improved upon. Exploitation on non-glibc systems is conceivable but has not been examined. Systems that lack ASLR or users of downstream Linux distributions that have modified OpenSSH to disable per-connection ASLR re-randomisation yes - this is a thing, no - we don't understand why may potentially have an easier path to exploitation. OpenBSD is not vulnerable. We thank the Qualys Security Advisory Team for discovering, reporting and demonstrating exploitability of this problem, and for providing detailed feedback on additional mitigation measures. 2 Logic error in ssh 1 ObscureKeystrokeTiming In OpenSSH version 9.5 through 9.7 inclusive , when connected to an OpenSSH server version 9.5 or later, a logic error in the ssh 1 ObscureKeystrokeTiming feature on by default rendered this feature ineffective - a passive observer could still detect which network packets contained real keystrokes when the countermeasure was active because both fake and real keystroke packets were being sent unconditionally. This bug was found by Philippos Giavridis and also independently by Jacky Wei En Kung, Daniel Hugenroth and Alastair Beresford of the University of Cambridge Computer Lab. Worse, the unconditional sending of both fake and real keystroke packets broke another long-standing timing attack mitigation. Since OpenSSH 2.9.9 sshd 8 has sent fake keystoke echo packets for traffic received on TTYs in echo-off mode, such as when entering a password into su 8 or sudo 8 . This bug rendered these fake keystroke echoes ineffective and could allow a passive observer of a SSH session to once again detect when echo was off and obtain fairly limited timing information about keystrokes in this situation 20ms granularity by default . This additional implication of the bug was identified by Jacky Wei En Kung, Daniel Hugenroth and Alastair Beresford and we thank them for their detailed analysis. This bug does not affect connections when ObscureKeystrokeTiming was disabled or sessions where no TTY was requested. Future deprecation notice ========================= OpenSSH plans to remove support for the DSA signature algorithm in early 2025. This release disables DSA by default at compile time. DSA, as specified in the SSHv2 protocol, is inherently weak - being limited to a 160 bit private key and use of the SHA1 digest. Its estimated security level is only 80 bits symmetric equivalent. OpenSSH has disabled DSA keys by default since 2015 but has retained run-time optional support for them. DSA was the only mandatory-to- implement algorithm in the SSHv2 RFCs, mostly because alternative algorithms were encumbered by patents when the SSHv2 protocol was specified. This has not been the case for decades at this point and better algorithms are well supported by all actively-maintained SSH implementations. We do not consider the costs of maintaining DSA in OpenSSH to be justified and hope that removing it from OpenSSH can accelerate its wider deprecation in supporting cryptography libraries. This release, and its deactivation of DSA by default at compile-time, marks the second step in our timeline to finally deprecate DSA. The final step of removing DSA support entirely is planned for the first OpenSSH release of 2025. DSA support may be re-enabled in OpenBSD by setting "DSAKEY=yes" in Makefile.inc. To enable DSA support in portable OpenSSH, pass the "--enable-dsa-keys" option to configure. Potentially-incompatible changes -------------------------------- all: as mentioned above, the DSA signature algorithm is now disabled at compile time. sshd 8 : the server will now block client addresses that repeatedly fail authentication, repeatedly connect without ever completing authentication or that crash the server. See the discussion of PerSourcePenalties below for more information. Operators of servers that accept connections from many users, or servers that accept connections from addresses behind NAT or proxies may need to consider these settings. sshd 8 : the server has been split into a listener binary, sshd 8 , and a per-session binary "sshd-session". This allows for a much smaller listener binary, as it no longer needs to support the SSH protocol. As part of this work, support for disabling privilege separation which previously required code changes to disable and disabling re-execution of sshd 8 has been removed. Further separation of sshd-session into additional, minimal binaries is planned for the future. sshd 8 : several log messages have changed. In particular, some log messages will be tagged with as originating from a process named "sshd-session" rather than "sshd". ssh-keyscan 1 : this tool previously emitted comment lines containing the hostname and SSH protocol banner to standard error. This release now emits them to standard output, but adds a new "-q" flag to silence them altogether. sshd 8 : portable OpenSSH only sshd will no longer use argv 0 as the PAM service name. A new "PAMServiceName" sshd config 5 directive allows selecting the service name at runtime. This defaults to "sshd". bz2101 portable OpenSSH only Automatically-generated files, such as configure, config.h.in, etc will now be checked in to the portable OpenSSH git release branch e.g. V 9 8 . This should ensure that the contents of the signed release branch exactly match the contents of the signed release tarball. Changes since OpenSSH 9.7 ========================= This release contains mostly bugfixes. New features ------------ sshd 8 : as described above, sshd 8 will now penalise client addresses that, for various reasons, do not successfully complete authentication. This feature is controlled by a new sshd config 5 PerSourcePenalties option and is on by default. sshd 8 will now identify situations where the session did not authenticate as expected. These conditions include when the client repeatedly attempted authentication unsucessfully possibly indicating an attack against one or more accounts, e.g. password guessing , or when client behaviour caused sshd to crash possibly indicating attempts to exploit bugs in sshd . When such a condition is observed, sshd will record a penalty of some duration e.g. 30 seconds against the client's address. If this time is above a minimum configurable threshold, then all connections from the client address will be refused along with any others in the same PerSourceNetBlockSize CIDR range until the penalty expire. Repeated offenses by the same client address will accrue greater penalties, up to a configurable maximum. Address ranges may be fully exempted from penalties, e.g. to guarantee access from a set of trusted management addresses, using the new sshd config 5 PerSourcePenaltyExemptList option. We hope these options will make it significantly more difficult for attackers to find accounts with weak/guessable passwords or exploit bugs in sshd 8 itself. This option is enabled by default. ssh 8 : allow the HostkeyAlgorithms directive to disable the implicit fallback from certificate host key to plain host keys. Bugfixes -------- misc: fix a number of inaccuracies in the PROTOCOL. documentation files. GHPR430 GHPR487 all: switch to strtonum 3 for more robust integer parsing in most places. ssh 1 , sshd 8 : correctly restore sigprocmask around ppoll ssh-keysign 8 : stricter validation of messaging socket fd GHPR492 sftp 1 : flush stdout after writing "sftp " prompt when not using editline. GHPR480 sftp-server 8 : fix home-directory extension implementation, it previously always returned the current user's home directory contrary to the spec. GHPR477 ssh-keyscan 1 : do not close stdin to prevent error messages when stdin is read multiple times. E.g. echo localhost | ssh-keyscan -f - -f - regression tests: fix rekey test that was testing the same KEX algorithm repeatedly instead of testing all of them. bz3692 ssh config 5 , sshd config 5 : clarify the KEXAlgorithms directive documentation, especially around what is supported vs available. bz3701. Portability ----------- sshd 8 : expose SSH AUTH INFO 0 always to PAM auth modules unconditionally. The previous behaviour was to expose it only when particular authentication methods were in use. build: fix OpenSSL ED25519 support detection. An incorrect function signature in configure.ac previously prevented enabling the recently added support for ED25519 private keys in PEM PKCS8 format. ssh 1 , ssh-agent 8 : allow the presence of the WAYLAND DISPLAY environment variable to enable SSH ASKPASS, similarly to the X11 DISPLAY environment variable. GHPR479 build: improve detection of the -fzero-call-used-regs compiler flag. bz3673. build: relax OpenSSL version check to accept all OpenSSL 3.x versions. sshd 8 : add support for notifying systemd on server listen and reload, using a standalone implementation that doesn't depend on libsystemd. bz2641 Checksums: ========== - SHA1 openssh-9.8.tar.gz = bc45cedae7f70b41e9922ef4c9f56e74b9a659b7 - SHA256 openssh-9.8.tar.gz = Dnc69VLWFBFdiaz8wySPlvHjb7wZfh/kblQ8ISuQr1Y= - SHA1 openssh-9.8p1.tar.gz = a0bb501b11349f5c5c33a269351be091dc2c2727 - SHA256 openssh-9.8p1.tar.gz = 3YvQAqN5tdSZ37BQ3R+pr4Ap6ARh9LtsUjxJlz9aOfM= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.7 was released on 2024-03-11. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Future deprecation notice ========================= OpenSSH plans to remove support for the DSA signature algorithm in early 2025 and compile-time disable it later this year. DSA, as specified in the SSHv2 protocol, is inherently weak - being limited to a 160 bit private key and use of the SHA1 digest. Its estimated security level is only 80 bits symmetric equivalent. OpenSSH has disabled DSA keys by default since 2015 but has retained run-time optional support for them. DSA was the only mandatory-to- implement algorithm in the SSHv2 RFCs 3 , mostly because alternative algorithms were encumbered by patents when the SSHv2 protocol was specified. This has not been the case for decades at this point and better algorithms are well supported by all actively-maintained SSH implementations. We do not consider the costs of maintaining DSA in OpenSSH to be justified and hope that removing it from OpenSSH can accelerate its wider deprecation in supporting cryptography libraries. This release makes DSA support in OpenSSH compile-time optional, defaulting to on. We intend the next release to change the default to disable DSA at compile time. The first OpenSSH release of 2025 will remove DSA support entirely. Changes since OpenSSH 9.6 ========================= This release contains mostly bugfixes. New features ------------ ssh 1 , sshd 8 : add a "global" ChannelTimeout type that watches all open channels and will close all open channels if there is no traffic on any of them for the specified interval. This is in addition to the existing per-channel timeouts added recently. This supports situations like having both session and x11 forwarding channels open where one may be idle for an extended period but the other is actively used. The global timeout could close both channels when both have been idle for too long. All: make DSA key support compile-time optional, defaulting to on. Bugfixes -------- sshd 8 : don't append an unnecessary space to the end of subsystem arguments bz3667 ssh 1 : fix the multiplexing "channel proxy" mode, broken when keystroke timing obfuscation was added. GHPR 463 ssh 1 , sshd 8 : fix spurious configuration parsing errors when options that accept array arguments are overridden bz3657 . ssh-agent 1 : fix potential spin in signal handler bz3670 Many fixes to manual pages and other documentation, including GHPR 462, GHPR 454, GHPR 442 and GHPR 441. Greatly improve interop testing against PuTTY. Portability ----------- Improve the error message when the autoconf OpenSSL header check fails bz 3668 Improve detection of broken toolchain -fzero-call-used-regs support bz3645 . Fix regress/misc/fuzz-harness fuzzers and make them compile without warnings when using clang16 Checksums: ========== - SHA1 openssh-9.7.tar.gz = 163272058edc20a8fde81661734a6684c9b4db11 - SHA256 openssh-9.7.tar.gz = gXDWrF4wN2UWyPjyjvVhpjjKd7D2qI6LyZiIYhbJQVg= - SHA1 openssh-9.7p1.tar.gz = ce8985ea0ea2f16a5917fd982ade0972848373cc - SHA256 openssh-9.7p1.tar.gz = SQQm92bYKidj/KzY2D6j1weYdQx70q/y5X3FZg93P/0= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.6 was released on 2023-12-18. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.5 ========================= This release contains a number of security fixes, some small features and bugfixes. Security ======== This release contains fixes for a newly-discovered weakness in the SSH transport protocol, a logic error relating to constrained PKCS 11 keys in ssh-agent 1 and countermeasures for programs that invoke ssh 1 with user or hostnames containing invalid characters. ssh 1 , sshd 8 : implement protocol extensions to thwart the so-called "Terrapin attack" discovered by Fabian Bäumer, Marcus Brinkmann and Jörg Schwenk. This attack allows a MITM to effect a limited break of the integrity of the early encrypted SSH transport protocol by sending extra messages prior to the commencement of encryption, and deleting an equal number of consecutive messages immediately after encryption starts. A peer SSH client/server would not be able to detect that messages were deleted. While cryptographically novel, the security impact of this attack is fortunately very limited as it only allows deletion of consecutive messages, and deleting most messages at this stage of the protocol prevents user user authentication from proceeding and results in a stuck connection. The most serious identified impact is that it lets a MITM to delete the SSH2 MSG EXT INFO message sent before authentication starts, allowing the attacker to disable a subset of the keystroke timing obfuscation features introduced in OpenSSH 9.5. There is no other discernable impact to session secrecy or session integrity. OpenSSH 9.6 addresses this protocol weakness through a new "strict KEX" protocol extension that will be automatically enabled when both the client and server support it. This extension makes two changes to the SSH transport protocol to improve the integrity of the initial key exchange. Firstly, it requires endpoints to terminate the connection if any unnecessary or unexpected message is received during key exchange including messages that were previously legal but not strictly required like SSH2 MSG DEBUG . This removes most malleability from the early protocol. Secondly, it resets the Message Authentication Code counter at the conclusion of each key exchange, preventing previously inserted messages from being able to make persistent changes to the sequence number across completion of a key exchange. Either of these changes should be sufficient to thwart the Terrapin Attack. More details of these changes are in the PROTOCOL file in the OpenSSH source distribition. ssh-agent 1 : when adding PKCS 11-hosted private keys while specifying destination constraints, if the PKCS 11 token returned multiple keys then only the first key had the constraints applied. Use of regular private keys, FIDO tokens and unconstrained keys are unaffected. ssh 1 : if an invalid user or hostname that contained shell metacharacters was passed to ssh 1 , and a ProxyCommand, LocalCommand directive or "match exec" predicate referenced the user or hostname via %u, %h or similar expansion token, then an attacker who could supply arbitrary user/hostnames to ssh 1 could potentially perform command injection depending on what quoting was present in the user-supplied ssh config 5 directive. This situation could arise in the case of git submodules, where a repository could contain a submodule with shell characters in its user/hostname. Git does not ban shell metacharacters in user or host names when checking out repositories from untrusted sources. Although we believe it is the user's responsibility to ensure validity of arguments passed to ssh 1 , especially across a security boundary such as the git example above, OpenSSH 9.6 now bans most shell metacharacters from user and hostnames supplied via the command-line. This countermeasure is not guaranteed to be effective in all situations, as it is infeasible for ssh 1 to universally filter shell metacharacters potentially relevant to user-supplied commands. User/hostnames provided via ssh config 5 are not subject to these restrictions, allowing configurations that use strange names to continue to be used, under the assumption that the user knows what they are doing in their own configuration files. Potentially incompatible changes -------------------------------- ssh 1 , sshd 8 : the RFC4254 connection/channels protocol provides a TCP-like window mechanism that limits the amount of data that can be sent without acceptance from the peer. In cases where this limit was exceeded by a non-conforming peer SSH implementation, ssh 1 /sshd 8 previously discarded the extra data. From OpenSSH 9.6, ssh 1 /sshd 8 will now terminate the connection if a peer exceeds the window limit by more than a small grace factor. This change should have no effect of SSH implementations that follow the specification. New features ------------ ssh 1 : add a %j token that expands to the configured ProxyJump hostname or the empty string if this option is not being used that can be used in a number of ssh config 5 keywords. bz3610 ssh 1 : add ChannelTimeout support to the client, mirroring the same option in the server and allowing ssh 1 to terminate quiescent channels. ssh 1 , sshd 8 , ssh-add 1 , ssh-keygen 1 : add support for reading ED25519 private keys in PEM PKCS8 format. Previously only the OpenSSH private key format was supported. ssh 1 , sshd 8 : introduce a protocol extension to allow renegotiation of acceptable signature algorithms for public key authentication after the server has learned the username being used for authentication. This allows varying sshd config 5 PubkeyAcceptedAlgorithms in a "Match user" block. ssh-add 1 , ssh-agent 1 : add an agent protocol extension to allow specifying certificates when loading PKCS 11 keys. This allows the use of certificates backed by PKCS 11 private keys in all OpenSSH tools that support ssh-agent 1 . Previously only ssh 1 supported this use-case. Bugfixes -------- ssh 1 : when deciding whether to enable the keystroke timing obfuscation, enable it only if a channel with a TTY is active. ssh 1 : switch mainloop from poll 3 to ppoll 3 and mask signals before checking flags set in signal handler. Avoids potential race condition between signaling ssh to exit and polling. bz3531 ssh 1 : when connecting to a destination with both the AddressFamily and CanonicalizeHostname directives in use, the AddressFamily directive could be ignored. bz5326 sftp 1 : correct handling of the limits@openssh.com option when the server returned an unexpected message. A number of fixes to the PuTTY and Dropbear regress/integration tests. ssh 1 : release GSS OIDs only at end of authentication, avoiding unnecessary init/cleanup cycles. bz2982 ssh config 5 : mention "none" is a valid argument to IdentityFile in the manual. bz3080 scp 1 : improved debugging for paths from the server rejected for not matching the client's glob 3 pattern in old SCP/RCP protocol mode. ssh-agent 1 : refuse signing operations on destination-constrained keys if a previous session-bind operation has failed. This may prevent a fail-open situation in future if a user uses a mismatched ssh 1 client and ssh-agent 1 where the client supports a key type that the agent does not support. Portability ----------- Better identify unsupported and unstable compiler flags, such as -fzero-call-used-regs which has been unstable across a several clang releases. A number of fixes to regression test reliability and log collection. Update the OpenSSL dependency in the RPM specification. sshd 8 : for OpenSolaris systems that support privilege limitation via the getpflags interface, prefer using the newer PRIV XPOLICY to PRIV LIMIT. bz2833 Checksums: ========== - SHA1 openssh-9.6.tar.gz = a6d4cb69811e879e2f158c2e597fd9f444b26506 - SHA256 openssh-9.6.tar.gz = nejPUhSnG1R1sOmIBi/t+HMNvsRqfN/DJgjwIU2tvqg= - SHA1 openssh-9.6p1.tar.gz = de300d09ec79fdbf37de4e6672cce4161439f2c3 - SHA256 openssh-9.6p1.tar.gz = kQIRwHJVqMWtZUORtA7lmABxDdgRndU2LeCThap6d3w= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.5 was released on 2023-10-04. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.4 ========================= This release fixes a number of bugs and adds some small features. Potentially incompatible changes -------------------------------- ssh-keygen 1 : generate Ed25519 keys by default. Ed25519 public keys are very convenient due to their small size. Ed25519 keys are specified in RFC 8709 and OpenSSH has supported them since version 6.5 January 2014 . sshd 8 : the Subsystem directive now accurately preserves quoting of subsystem commands and arguments. This may change behaviour for exotic configurations, but the most common subsystem configuration sftp-server is unlikely to be affected. New features ------------ ssh 1 : add keystroke timing obfuscation to the client. This attempts to hide inter-keystroke timings by sending interactive traffic at fixed intervals default: every 20ms when there is only a small amount of data being sent. It also sends fake "chaff" keystrokes for a random interval after the last real keystroke. These are controlled by a new ssh config ObscureKeystrokeTiming keyword. ssh 1 , sshd 8 : Introduce a transport-level ping facility. This adds a pair of SSH transport protocol messages SSH2 MSG PING/PONG to implement a ping capability. These messages use numbers in the "local extensions" number space and are advertised using a "ping@openssh.com" ext-info message with a string version number of "0". sshd 8 : allow override of Subsystem directives in sshd Match blocks. Bugfixes -------- scp 1 : fix scp in SFTP mode recursive upload and download of directories that contain symlinks to other directories. In scp mode, the links would be followed, but in SFTP mode they were not. bz3611 ssh-keygen 1 : handle cr+lf instead of just cr line endings in sshsig signature files. ssh 1 : interactive mode for ControlPersist sessions if they originally requested a tty. sshd 8 : make PerSourceMaxStartups first-match-wins sshd 8 : limit artificial login delay to a reasonable maximum 5s and don't delay at all for the "none" authentication mechanism.cw bz3602 sshd 8 : Log errors in kex exchange identification with level verbose instead of error to reduce preauth log spam. All of those get logged with a more generic error message by sshpkt fatal . sshd 8 : correct math for ClientAliveInterval that caused the probes to be sent less frequently than configured. ssh 1 : fix regression in OpenSSH 9.4 mux.c r1.99 that caused multiplexed sessions to ignore SIGINT under some circumstances. Portability ----------- Avoid clang zero-call-used-regs=all bug on Apple compilers, which for some reason have version numbers that do not match the upstream clang version numbers. bz 3584 Fix configure test for zlib 1.3 and later/development versions. bz3604 Checksums: ========== - SHA1 openssh-9.5.tar.gz = 8a0bd3a91fac338d97d91817af58df731f6509a3 - SHA256 openssh-9.5.tar.gz = sVMxeM3d6g65qBMktJIofxmK4Ipg9dblKif0VnhPeO0= - SHA1 openssh-9.5p1.tar.gz = 35c16dcc6e7d0a9465faa241476ef24f76b196cc - SHA256 openssh-9.5p1.tar.gz = 8Cbnt5un+1QPdRgq+W3IqPHbOV+SK7yfbKYDZyaGCGs= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.4 was released on 2023-08-10. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.3p2 =========================== This release fixes a number of bugs and adds some small features. Potentially incompatible changes -------------------------------- This release removes support for older versions of libcrypto. OpenSSH now requires LibreSSL = 3.1.0 or OpenSSL = 1.1.1. Note that these versions are already deprecated by their upstream vendors. ssh-agent 1 : PKCS 11 modules must now be specified by their full paths. Previously dlopen 3 could search for them in system library directories. New features ------------ ssh 1 : allow forwarding Unix Domain sockets via ssh -W. ssh 1 : add support for configuration tags to ssh 1 . This adds a ssh config 5 "Tag" directive and corresponding "Match tag" predicate that may be used to select blocks of configuration similar to the pf.conf 5 keywords of the same name. ssh 1 : add a "match localnetwork" predicate. This allows matching on the addresses of available network interfaces and may be used to vary the effective client configuration based on network location. ssh 1 , sshd 8 , ssh-keygen 1 : infrastructure support for KRL extensions. This defines wire formats for optional KRL extensions and implements parsing of the new submessages. No actual extensions are supported at this point. sshd 8 : AuthorizedPrincipalsCommand and AuthorizedKeysCommand now accept two additional %-expansion sequences: %D which expands to the routing domain of the connected session and %C which expands to the addresses and port numbers for the source and destination of the connection. ssh-keygen 1 : increase the default work factor rounds for the bcrypt KDF used to derive symmetric encryption keys for passphrase protected key files by 50%. Bugfixes -------- ssh-agent 1 : improve isolation between loaded PKCS 11 modules by running separate ssh-pkcs11-helpers for each loaded provider. ssh 1 : make -f fork after authentication work correctly with multiplexed connections, including ControlPersist. bz3589 bz3589 ssh 1 : make ConnectTimeout apply to multiplexing sockets and not just to network connections. ssh-agent 1 , ssh 1 : improve defences against invalid PKCS 11 modules being loaded by checking that the requested module contains the required symbol before loading it. sshd 8 : fix AuthorizedPrincipalsCommand when AuthorizedKeysCommand appears before it in sshd config. Since OpenSSH 8.7 the AuthorizedPrincipalsCommand directive was incorrectly ignored in this situation. bz3574 sshd 8 , ssh 1 , ssh-keygen 1 : remove vestigal support for KRL signatures When the KRL format was originally defined, it included support for signing of KRL objects. However, the code to sign KRLs and verify KRL signatues was never completed in OpenSSH. This release removes the partially-implemented code to verify KRLs. All OpenSSH tools now ignore KRL SECTION SIGNATURE sections in KRL files. All: fix a number of memory leaks and unreachable/harmless integer overflows. ssh-agent 1 , ssh 1 : don't truncate strings logged from PKCS 11 modules; GHPR406 sshd 8 , ssh 1 : better validate CASignatureAlgorithms in ssh config and sshd config. Previously this directive would accept certificate algorithm names, but these were unusable in practice as OpenSSH does not support CA chains. bz3577 ssh 1 : make ssh -Q CASignatureAlgorithms only list signature algorithms that are valid for CA signing. Previous behaviour was to list all signing algorithms, including certificate algorithms. ssh-keyscan 1 : gracefully handle systems where rlimits or the maximum number of open files is larger than INT MAX; bz3581 ssh-keygen 1 : fix "no comment" not showing on when running ssh-keygen -l on multiple keys where one has a comment and other following keys do not. bz3580 scp 1 , sftp 1 : adjust ftruncate logic to handle servers that reorder requests. Previously, if the server reordered requests then the resultant file would be erroneously truncated. ssh 1 : don't incorrectly disable hostname canonicalization when CanonicalizeHostname=yes and ProxyJump was expicitly set to "none". bz3567 scp 1 : when copying local- remote, check that the source file exists before opening an SFTP connection to the server. Based on GHPR 370 Portability ----------- All: a number of build fixes for various platforms and configuration combinations. sshd 8 : provide a replacement for the SELinux matchpathcon function, which is deprecated. All: relax libcrypto version checks for OpenSSL =3. Beyond OpenSSL 3.0, the ABI compatibility guarantees are wider only the library major must match instead of major and minor in earlier versions . bz 3548. Tests: fix build problems for the sk-dummy.so FIDO provider module used in some tests. Checksums: ========== - SHA1 openssh-9.4.tar.gz = d88126d8d7b8e5bf4656587ac4a16055560641cc - SHA256 openssh-9.4.tar.gz = 7eqFjx2hAunw+1Jy7f1JQXq//3AMr9B3dKtASDtq8go= - SHA1 openssh-9.4p1.tar.gz = 5dea1f3c88f9cfe53a711a3c893ee8b7d3ffecff - SHA256 openssh-9.4p1.tar.gz = Ngj9kIjbIWPOs+YAyFq3nQ3j0iHlkZLqGSPiMmOGaoU= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.3p2 was released on 2023-07-19. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.3 ========================= This release fixes a security bug. Security ======== Fix CVE-2023-38408 - a condition where specific libaries loaded via ssh-agent 1 's PKCS 11 support could be abused to achieve remote code execution via a forwarded agent socket if the following conditions are met: Exploitation requires the presence of specific libraries on the victim system. Remote exploitation requires that the agent was forwarded to an attacker-controlled system. Exploitation can also be prevented by starting ssh-agent 1 with an empty PKCS 11/FIDO allowlist ssh-agent -P '' or by configuring an allowlist that contains only specific provider libraries. This vulnerability was discovered and demonstrated to be exploitable by the Qualys Security Advisory team. In addition to removing the main precondition for exploitation, this release removes the ability for remote ssh-agent 1 clients to load PKCS 11 modules by default see below . Potentially-incompatible changes -------------------------------- ssh-agent 8 : the agent will now refuse requests to load PKCS 11 modules issued by remote clients by default. A flag has been added to restore the previous behaviour "-Oallow-remote-pkcs11". Note that ssh-agent 8 depends on the SSH client to identify requests that are remote. The OpenSSH =8.9 ssh 1 client does this, but forwarding access to an agent socket using other tools may circumvent this restriction. Checksums: ========== - SHA1 openssh-9.3p2.tar.gz = 219cf700c317f400bb20b001c0406056f7188ea4 - SHA256 openssh-9.3p2.tar.gz = IA6+FH9ss/EB/QzfngJEKvfdyimN/9n0VoeOfMrGdug= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.3 was released on 2023-03-15. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.2 ========================= This release fixes a number of security bugs. Security ======== This release contains fixes for a security problem and a memory safety problem. The memory safety problem is not believed to be exploitable, but we report most network-reachable memory faults as security bugs. ssh-add 1 : when adding smartcard keys to ssh-agent 1 with the per-hop destination constraints ssh-add -h ... added in OpenSSH 8.9, a logic error prevented the constraints from being communicated to the agent. This resulted in the keys being added without constraints. The common cases of non-smartcard keys and keys without destination constraints are unaffected. This problem was reported by Luci Stanescu. ssh 1 : Portable OpenSSH provides an implementation of the getrrsetbyname 3 function if the standard library does not provide it, for use by the VerifyHostKeyDNS feature. A specifically crafted DNS response could cause this function to perform an out-of-bounds read of adjacent stack data, but this condition does not appear to be exploitable beyond denial-of- service to the ssh 1 client. The getrrsetbyname 3 replacement is only included if the system's standard library lacks this function and portable OpenSSH was not compiled with the ldns library --with-ldns . getrrsetbyname 3 is only invoked if using VerifyHostKeyDNS to fetch SSHFP records. This problem was found by the Coverity static analyzer. New features ------------ ssh-keygen 1 , ssh-keyscan 1 : accept -Ohashalg=sha1|sha256 when outputting SSHFP fingerprints to allow algorithm selection. bz3493 sshd 8 : add a sshd -G option that parses and prints the effective configuration without attempting to load private keys and perform other checks. This allows usage of the option before keys have been generated and for configuration evaluation and verification by unprivileged users. Bugfixes -------- scp 1 , sftp 1 : fix progressmeter corruption on wide displays; bz3534 ssh-add 1 , ssh-keygen 1 : use RSA/SHA256 when testing usability of private keys as some systems are starting to disable RSA/SHA1 in libcrypto. sftp-server 8 : fix a memory leak. GHPR363 ssh 1 , sshd 8 , ssh-keyscan 1 : remove vestigal protocol compatibility code and simplify what's left. Fix a number of low-impact Coverity static analysis findings. These include several reported via bz2687 ssh config 5 , sshd config 5 : mention that some options are not first-match-wins. Rework logging for the regression tests. Regression tests will now capture separate logs for each ssh and sshd invocation in a test. ssh 1 : make ssh -Q CASignatureAlgorithms work as the manpage says it should; bz3532. ssh 1 : ensure that there is a terminating newline when adding a new entry to known hosts; bz3529 Portability ----------- sshd 8 : harden Linux seccomp sandbox. Move to an allowlist of mmap 2 , madvise 2 and futex 2 flags, removing some concerning kernel attack surface. sshd 8 : improve Linux seccomp-bpf sandbox for older systems; bz3537 Checksums: ========== - SHA1 openssh-9.3.tar.gz = 5f9d2f73ddfe94f3f0a78bdf46704b6ad7b66ec7 - SHA256 openssh-9.3.tar.gz = eRcXkFZByz70DUBUcyIdvU0pVxP2X280FrmV8pyUdrk= - SHA1 openssh-9.3p1.tar.gz = 610959871bf8d6baafc3525811948f85b5dd84ab - SHA256 openssh-9.3p1.tar.gz = 6bq6dwGnalHz2Fpiw4OjydzZf6kAuFm8fbEUwYaK+Kg= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.2 was released on 2023-02-02. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.1 ========================= This release fixes a number of security bugs. Security ======== This release contains fixes for two security problems and a memory safety problem. The memory safety problem is not believed to be exploitable, but we report most network-reachable memory faults as security bugs. sshd 8 : fix a pre-authentication double-free memory fault introduced in OpenSSH 9.1. This is not believed to be exploitable, and it occurs in the unprivileged pre-auth process that is subject to chroot 2 and is further sandboxed on most major platforms. ssh 8 : in OpenSSH releases after 8.7, the PermitRemoteOpen option would ignore its first argument unless it was one of the special keywords "any" or "none", causing the permission list to fail open if only one permission was specified. bz3515 ssh 1 : if the CanonicalizeHostname and CanonicalizePermittedCNAMEs options were enabled, and the system/libc resolver did not check that names in DNS responses were valid, then use of these options could allow an attacker with control of DNS to include invalid characters possibly including wildcards in names added to known hosts files when they were updated. These names would still have to match the CanonicalizePermittedCNAMEs allow-list, so practical exploitation appears unlikely. Potentially-incompatible changes -------------------------------- ssh 1 : add a new EnableEscapeCommandline ssh config 5 option that controls whether the client-side ~C escape sequence that provides a command-line is available. Among other things, the ~C command-line could be used to add additional port-forwards at runtime. This option defaults to "no", disabling the ~C command-line that was previously enabled by default. Turning off the command-line allows platforms that support sandboxing of the ssh 1 client currently only OpenBSD to use a stricter default sandbox policy. New features ------------ sshd 8 : add support for channel inactivity timeouts via a new sshd config 5 ChannelTimeout directive. This allows channels that have not seen traffic in a configurable interval to be automatically closed. Different timeouts may be applied to session, X11, agent and TCP forwarding channels. sshd 8 : add a sshd config UnusedConnectionTimeout option to terminate client connections that have no open channels for a length of time. This complements the ChannelTimeout option above. sshd 8 : add a -V version option to sshd like the ssh client has. ssh 1 : add a "Host" line to the output of ssh -G showing the original hostname argument. bz3343 scp 1 , sftp 1 : add a -X option to both scp 1 and sftp 1 to allow control over some SFTP protocol parameters: the copy buffer length and the number of in-flight requests, both of which are used during upload/download. Previously these could be controlled in sftp 1 only. This makes them available in both SFTP protocol clients using the same option character sequence. ssh-keyscan 1 : allow scanning of complete CIDR address ranges, e.g. "ssh-keyscan 192.168.0.0/24". If a CIDR range is passed, then it will be expanded to all possible addresses in the range including the all-0s and all-1s addresses. bz 976 ssh 1 : support dynamic remote port forwarding in escape command-line's -R processing. bz 3499 Bugfixes -------- ssh 1 : when restoring non-blocking mode to stdio fds, restore exactly the flags that ssh started with and don't just clobber them with zero, as this could also remove the append flag from the set. bz3523 ssh 1 : avoid printf "%s", NULL if using UserKnownHostsFile=none and a hostkey in one of the system known hosts file changes. scp 1 : switch scp from using pipes to a socket-pair for communication with its ssh sub-processes, matching how sftp 1 operates. sshd 8 : clear signal mask early in main ; sshd may have been started with one or more signals masked sigprocmask 2 is not cleared on fork/exec and this could interfere with various things, e.g. the login grace timer. Execution environments that fail to clear the signal mask before running sshd are clearly broken, but apparently they do exist. ssh 1 : warn if no host keys for hostbased auth can be loaded. sshd 8 : Add server debugging for hostbased auth that is queued and sent to the client after successful authentication, but also logged to assist in diagnosis of HostbasedAuthentication problems. bz3507 ssh 1 : document use of the IdentityFile option as being usable to list public keys as well as private keys. GHPR352 sshd 8 : check for and disallow MaxStartups values less than or equal to zero during config parsing, rather than failing later at runtime. bz3489 ssh-keygen 1 : fix parsing of hex cert expiry times specified on the command-line when acting as a CA. scp 1 : when scp 1 is using the SFTP protocol for transport the default , better match scp/rcp's handling of globs that don't match the globbed characters but do match literally e.g. trying to transfer a file named "foo. 1 " . Previously scp 1 in SFTP mode would not match these pathnames but legacy scp/rcp mode would. bz3488 ssh-agent 1 : document the "-O no-restrict-websafe" command-line option. ssh 1 : honour user's umask 2 if it is more restrictive then the ssh default 022 . Portability ----------- sshd 8 : allow writev 2 in the Linux seccomp sandbox. This seems to be used by recent glibcs at least in some configurations during error conditions. bz3512. sshd 8 : simply handling of SSH CONNECTION PAM env var, removing global variable and checking the return value from pam putenv. bz3508 sshd 8 : disable SANDBOX SECCOMP FILTER DEBUG that was mistakenly enabled during the OpenSSH 9.1 release cycle. misc: update autotools and regenerate the config files using the latest autotools all: use -fzero-call-used-regs=used on clang 15 instead of -fzero-call-used-reg=all, as some versions of clang 15 have miscompile code when it was enabled. bz3475 sshd 8 : defer PRNG seeding until after the initial closefrom 2 call. PRNG seeding will initialize OpenSSL, and some engine providers e.g. Intel's QAT will open descriptors for their own use that closefrom 2 could clobber. bz3483 misc: in the poll 2 /ppoll 2 compatibility code, avoid assuming the layout of fd set. sftp-server 8 , ssh-agent 1 : fix ptrace 2 disabling on older FreeBSD kernels. Some versions do not support using id 0 to refer to the current PID for procctl, so try again with getpid explicitly before failing. configure.ac: fix -Wstrict-prototypes in configure test code. Clang 16 now warns on this and legacy prototypes will be removed in C23. GHPR355 configure.ac: fix setres id checks to work with clang-16. glibc has the prototypes for setresuid behind GNU SOURCE, and clang 16 will error out on implicit function definitions. bz3497 Checksums: ========== - SHA1 openssh-9.2.tar.gz = e4b806b7c81b87d6c90afe97b3d016ba6cf3ba1c - SHA256 openssh-9.2.tar.gz = yYe9uaaWSeetXGXOxuaaEiIsLnvITmGW+l5dgMZb9QU= - SHA1 openssh-9.2p1.tar.gz = 3b172b8e971773a7018bbf3231f6589ae539ca4b - SHA256 openssh-9.2p1.tar.gz = P2bb8WVftF9Q4cVtpiqwEhjCKIB7ITONY068351xz0Y= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.1 was released on 2022-10-04. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 9.0 ========================= This release is focused on bug fixing. Security ======== This release contains fixes for three minor memory safety problems. None are believed to be exploitable, but we report most memory safety problems as potential security vulnerabilities out of caution. ssh-keyscan 1 : fix a one-byte overflow in SSH- banner processing. Reported by Qualys ssh-keygen 1 : double free in error path of file hashing step in signing/verify code; GHPR333 ssh-keysign 8 : double-free in error path introduced in openssh-8.9 Potentially-incompatible changes -------------------------------- The portable OpenSSH project now signs commits and release tags using git's recent SSH signature support. The list of developer signing keys is included in the repository as .git allowed signers and is cross-signed using the PGP key that is still used to sign release artifacts: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc ssh 1 , sshd 8 : SetEnv directives in ssh config and sshd config are now first-match-wins to match other directives. Previously if an environment variable was multiply specified the last set value would have been used. bz3438 ssh-keygen 8 : ssh-keygen -A generate all default host key types will no longer generate DSA keys, as these are insecure and have not been used by default for some years. New features ------------ ssh 1 , sshd 8 : add a RequiredRSASize directive to set a minimum RSA key length. Keys below this length will be ignored for user authentication and for host authentication in sshd 8 . ssh 1 will terminate a connection if the server offers an RSA key that falls below this limit, as the SSH protocol does not include the ability to retry a failed key exchange. sftp-server 8 : add a "users-groups-by-id@openssh.com" extension request that allows the client to obtain user/group names that correspond to a set of uids/gids. sftp 1 : use "users-groups-by-id@openssh.com" sftp-server extension when available to fill in user/group names for directory listings. sftp-server 8 : support the "home-directory" extension request defined in draft-ietf-secsh-filexfer-extensions-00. This overlaps a bit with the existing "expand-path@openssh.com", but some other clients support it. ssh-keygen 1 , sshd 8 : allow certificate validity intervals, sshsig verification times and authorized keys expiry-time options to accept dates in the UTC time zone in addition to the default of interpreting them in the system time zone. YYYYMMDD and YYMMDDHHMM SS dates/times will be interpreted as UTC if suffixed with a 'Z' character. Also allow certificate validity intervals to be specified in raw seconds-since-epoch as hex value, e.g. -V 0x1234:0x4567890. This is intended for use by regress tests and other tools that call ssh-keygen as part of a CA workflow. bz3468 sftp 1 : allow arguments to the sftp -D option, e.g. sftp -D "/usr/libexec/sftp-server -el debug3" ssh-keygen 1 : allow the existing -U use agent flag to work with "-Y sign" operations, where it will be interpreted to require that the private keys is hosted in an agent; bz3429 Bugfixes -------- ssh-keygen 1 : implement the "verify-required" certificate option. This was already documented when support for user-verified FIDO keys was added, but the ssh-keygen 1 code was missing. ssh-agent 1 : hook up the restrict websafe command-line flag; previously the flag was accepted but never actually used. sftp 1 : improve filename tab completions: never try to complete names to non-existent commands, and better match the completion type local or remote filename against the argument position being completed. ssh-keygen 1 , ssh 1 , ssh-agent 1 : several fixes to FIDO key handling, especially relating to keys that request user-verification. These should reduce the number of unnecessary PIN prompts for keys that support intrinsic user verification. GHPR302, GHPR329 ssh-keygen 1 : when enrolling a FIDO resident key, check if a credential with matching application and user ID strings already exists and, if so, prompt the user for confirmation before overwriting the credential. GHPR329 sshd 8 : improve logging of errors when opening authorized keys files. bz2042 ssh 1 : avoid multiplexing operations that could cause SIGPIPE from causing the client to exit early. bz3454 ssh config 5 , sshd config 5 : clarify that the RekeyLimit directive applies to both transmitted and received data. GHPR328 ssh-keygen 1 : avoid double fclose in error path. sshd 8 : log an error if pipe fails while accepting a connection. bz3447 ssh 1 , ssh-keygen 1 : fix possible NULL deref when built without FIDO support. bz3443 ssh-keyscan 1 : add missing -sk types to ssh-keyscan manpage. GHPR294. sshd 8 : ensure that authentication passwords are cleared from memory in error paths. GHPR286 ssh 1 , ssh-agent 1 : avoid possibility of notifier code executing kill -1 . GHPR286 ssh config 5 : note that the ProxyJump directive also accepts the same tokens as ProxyCommand. GHPR305. scp 1 : do not not ftruncate 3 files early when in sftp mode. The previous behaviour of unconditionally truncating the destination file would cause "scp ~/foo localhost:foo" and the reverse "scp localhost:foo ~/foo" to delete all the contents of their destination. bz3431 ssh-keygen 1 : improve error message when 'ssh-keygen -Y sign' is unable to load a private key; bz3429 sftp 1 , scp 1 : when performing operations that glob 3 a remote path, ensure that the implicit working directory used to construct that path escapes glob 3 characters. This prevents glob characters from being processed in places they shouldn't, e.g. "cd /tmp/a /", "get .txt" should have the get operation treat the path "/tmp/a " literally and not attempt to expand it. ssh 1 , sshd 8 : be stricter in which characters will be accepted in specifying a mask length; allow only 0-9. GHPR278 ssh-keygen 1 : avoid printing hash algorithm twice when dumping a KRL ssh 1 , sshd 8 : continue running local I/O for open channels during SSH transport rekeying. This should make ~-escapes work in the client e.g. to exit if the connection happened to have stalled during a rekey event. ssh 1 , sshd 8 : avoid potential poll spin during rekeying Further hardening for sshbuf internals: disallow "reparenting" a hierarchical sshbuf and zero the entire buffer if reallocation fails. GHPR287 Portability ----------- ssh 1 , ssh-keygen 1 , sshd 8 : automatically enable the built-in FIDO security key support if libfido2 is found and usable, unless --without-security-key-builtin was requested. ssh 1 , ssh-keygen 1 , sshd 8 : many fixes to make the WinHello FIDO device usable on Cygwin. The windows://hello FIDO device will be automatically used by default on this platform unless requested otherwise, or when probing resident FIDO credentials an operation not currently supported by WinHello . Portable OpenSSH: remove workarounds for obsolete and unsupported versions of OpenSSL libcrypto. In particular, this release removes fallback support for OpenSSL that lacks AES-CTR or AES-GCM. Those AES cipher modes were added to OpenSSL prior to the minimum version currently supported by OpenSSH, so this is not expected to impact any currently supported configurations. sshd 8 : fix SANDBOX SECCOMP FILTER DEBUG on current Linux/glibc All: resync and clean up internal CSPRNG code. scp 1 , sftp 1 , sftp-server 8 : avoid linking these programs with unnecessary libraries. They are no longer linked against libz and libcrypto. This may be of benefit to space constrained systems using any of those components in isolation. sshd 8 : add AUDIT ARCH PPC to supported seccomp sandbox architectures. configure: remove special casing of crypt . configure will no longer search for crypt in libcrypto, as it was removed from there years ago. configure will now only search libc and libcrypt. configure: refuse to use OpenSSL 3.0.4 due to potential RCE in its RSA implementation CVE-2022-2274 on x86 64. All: request 1.1x API compatibility for OpenSSL =3.x; GHPR 322 ssh 1 , ssh-keygen 1 , sshd 8 : fix a number of missing includes required by the XMSS code on some platforms. sshd 8 : cache timezone data in capsicum sandbox. Checksums: ========== - SHA1 openssh-9.1.tar.gz = 3ae2d6a3a695d92778c4c4567dcd6ad481092f6c - SHA256 openssh-9.1.tar.gz = QKfVArlcItV+e8V1Th85TL5//5d/AvOUhYOeHMDEGuE= - SHA1 openssh-9.1p1.tar.gz = 15545440268967511d3194ebf20bcd0c7ff3fcc9 - SHA256 openssh-9.1p1.tar.gz = GfhQCcfj4jeH8CNvuxV4OSq01L+fjsX+a8HNfov90og= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 9.0 was released on 2022-04-08. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Changes since OpenSSH 8.9 ========================= This release is focused on bug fixing. Potentially-incompatible changes -------------------------------- This release switches scp 1 from using the legacy scp/rcp protocol to using the SFTP protocol by default. Legacy scp/rcp performs wildcard expansion of remote filenames e.g. "scp host: ." through the remote shell. This has the side effect of requiring double quoting of shell meta-characters in file names included on scp 1 command-lines, otherwise they could be interpreted as shell commands on the remote side. This creates one area of potential incompatibility: scp 1 when using the SFTP protocol no longer requires this finicky and brittle quoting, and attempts to use it may cause transfers to fail. We consider the removal of the need for double-quoting shell characters in file names to be a benefit and do not intend to introduce bug-compatibility for legacy scp/rcp in scp 1 when using the SFTP protocol. Another area of potential incompatibility relates to the use of remote paths relative to other user's home directories, for example - "scp host:~user/file /tmp". The SFTP protocol has no native way to expand a ~user path. However, sftp-server 8 in OpenSSH 8.7 and later support a protocol extension "expand-path@openssh.com" to support this. In case of incompatibility, the scp 1 client may be instructed to use the legacy scp/rcp using the -O flag. New features ------------ ssh 1 , sshd 8 : use the hybrid Streamlined NTRU Prime + x25519 key exchange method by default "sntrup761x25519-sha512@openssh.com" . The NTRU algorithm is believed to resist attacks enabled by future quantum computers and is paired with the X25519 ECDH key exchange the previous default as a backstop against any weaknesses in NTRU Prime that may be discovered in the future. The combination ensures that the hybrid exchange offers at least as good security as the status quo. We are making this change now i.e. ahead of cryptographically- relevant quantum computers to prevent "capture now, decrypt later" attacks where an adversary who can record and store SSH session ciphertext would be able to decrypt it once a sufficiently advanced quantum computer is available. sftp-server 8 : support the "copy-data" extension to allow server- side copying of files/data, following the design in draft-ietf-secsh-filexfer-extensions-00. bz2948 sftp 1 : add a "cp" command to allow the sftp client to perform server-side file copies. Bugfixes -------- ssh 1 , sshd 8 : upstream: fix poll 2 spin when a channel's output fd closes without data in the channel buffer. bz3405 and bz3411 sshd 8 : pack pollfd array in server listen/accept loop. Could cause the server to hang/spin when MaxStartups RLIMIT NOFILE ssh-keygen 1 : avoid NULL deref via the find-principals and check-novalidate operations. bz3409 and GHPR 307 respectively. scp 1 : fix a memory leak in argument processing. bz3404 sshd 8 : don't try to resolve ListenAddress directives in the sshd re-exec path. They are unused after re-exec and parsing errors possible for example if the host's network configuration changed could prevent connections from being accepted. sshd 8 : when refusing a public key authentication request from a client for using an unapproved or unsupported signature algorithm include the algorithm name in the log message to make debugging easier. Portability ----------- sshd 8 : refactor platform-specific locked account check, fixing an incorrect free on platforms with both libiaf and shadow passwords probably only Unixware GHPR 284, ssh 1 , sshd 8 : Fix possible integer underflow in scan scaled 3 parsing of K/M/G/etc quantities. bz 3401. sshd 8 : provide killpg implementation mostly for Tandem NonStop GHPR 301. Check for missing ftruncate prototype. GHPR 301 sshd 8 : default to not using sandbox when cross compiling. On most systems poll 2 does not work when the number of FDs is reduced with setrlimit, so assume it doesn't when cross compiling and we can't run the test. bz 3398. sshd 8 : allow ppoll time64 in seccomp sandbox. Should fix sandbox violations on some at least i386 and armhf 32bit Linux platforms. bz 3396. Improve detection of -fzero-call-used-regs=all support in configure script. Checksums: ========== - SHA1 openssh-9.0.tar.gz = 05302aa4781e1a69db4261474ed940bd685afc24 - SHA256 openssh-9.0.tar.gz = 9I/FrLf5Gij/4NIPts9A8yWVi0ienyyMqjqn8s0hyLk= - SHA1 openssh-9.0p1.tar.gz = 06dd658874dcd22d66311cf5999bd56c614de509 - SHA256 openssh-9.0p1.tar.gz = A5dDAhYenszjIVPPoQAS8eZcjzdQ9XOnOrG+/Vlyooo= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Please note that the OpenPGP key used to sign releases has been rotated for this release. The new key has been signed by the previous key to provide continuity. Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 8.9 was released on 2022-02-23. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Future deprecation notice ========================= A near-future release of OpenSSH will switch scp 1 from using the legacy scp/rcp protocol to using SFTP by default. Legacy scp/rcp performs wildcard expansion of remote filenames e.g. "scp host: ." through the remote shell. This has the side effect of requiring double quoting of shell meta-characters in file names included on scp 1 command-lines, otherwise they could be interpreted as shell commands on the remote side. This creates one area of potential incompatibility: scp 1 when using the SFTP protocol no longer requires this finicky and brittle quoting, and attempts to use it may cause transfers to fail. We consider the removal of the need for double-quoting shell characters in file names to be a benefit and do not intend to introduce bug-compatibility for legacy scp/rcp in scp 1 when using the SFTP protocol. Another area of potential incompatibility relates to the use of remote paths relative to other user's home directories, for example - "scp host:~user/file /tmp". The SFTP protocol has no native way to expand a ~user path. However, sftp-server 8 in OpenSSH 8.7 and later support a protocol extension "expand-path@openssh.com" to support this. Security Near Miss ================== sshd 8 : fix an integer overflow in the user authentication path that, in conjunction with other logic errors, could have yielded unauthenticated access under difficult to exploit conditions. This situation is not exploitable because of independent checks in the privilege separation monitor. Privilege separation has been enabled by default in since openssh-3.2.2 released in 2002 and has been mandatory since openssh-7.5 released in 2017 . Moreover, portable OpenSSH has used toolchain features available in most modern compilers to abort on signed integer overflow since openssh-6.5 released in 2014 . Thanks to Malcolm Stagg for finding and reporting this bug. Potentially-incompatible changes ================================ sshd 8 , portable OpenSSH only: this release removes in-built support for MD5-hashed passwords. If you require these on your system then we recommend linking against libxcrypt or similar. This release modifies the FIDO security key middleware interface and increments SSH SK VERSION MAJOR. Changes since OpenSSH 8.8 ========================= This release includes a number of new features. New features ------------ ssh 1 , sshd 8 , ssh-add 1 , ssh-agent 1 : add a system for restricting forwarding and use of keys added to ssh-agent 1 A detailed description of the feature is available at https://www.openssh.com/agent-restrict.html and the protocol extensions are documented in the PROTOCOL and PROTOCOL.agent files in the source release. ssh 1 , sshd 8 : add the sntrup761x25519-sha512@openssh.com hybrid ECDH/x25519 + Streamlined NTRU Prime post-quantum KEX to the default KEXAlgorithms list after the ECDH methods but before the prime-group DH ones . The next release of OpenSSH is likely to make this key exchange the default method. ssh-keygen 1 : when downloading resident keys from a FIDO token, pass back the user ID that was used when the key was created and append it to the filename the key is written to if it is not the default . Avoids keys being clobbered if the user created multiple resident keys with the same application string but different user IDs. ssh-keygen 1 , ssh 1 , ssh-agent 1 : better handling for FIDO keys on tokens that provide user verification UV on the device itself, including biometric keys, avoiding unnecessary PIN prompts. ssh-keygen 1 : add "ssh-keygen -Y match-principals" operation to perform matching of principals names against an allowed signers file. To be used towards a TOFU model for SSH signatures in git. ssh-add 1 , ssh-agent 1 : allow pin-required FIDO keys to be added to ssh-agent 1 . $SSH ASKPASS will be used to request the PIN at authentication time. ssh-keygen 1 : allow selection of hash at sshsig signing time either sha512 default or sha256 . ssh 1 , sshd 8 : read network data directly to the packet input buffer instead of indirectly via a small stack buffer. Provides a modest performance improvement. ssh 1 , sshd 8 : read data directly to the channel input buffer, providing a similar modest performance improvement. ssh 1 : extend the PubkeyAuthentication configuration directive to accept yes|no|unbound|host-bound to allow control over one of the protocol extensions used to implement agent-restricted keys. Bugfixes -------- sshd 8 : document that CASignatureAlgorithms, ExposeAuthInfo and PubkeyAuthOptions can be used in a Match block. PR 277. sshd 8 : fix possible string truncation when constructing paths to .rhosts/.shosts files with very long user home directory names. ssh-keysign 1 : unbreak for KEX algorithms that use SHA384/512 exchange hashes ssh 1 : don't put the TTY into raw mode when SessionType=none, avoids ^C being unable to kill such a session. bz3360 scp 1 : fix some corner-case bugs in SFTP-mode handling of ~-prefixed paths. ssh 1 : unbreak hostbased auth using RSA keys. Allow ssh 1 to select RSA keys when only RSA/SHA2 signature algorithms are configured this is the default case . Previously RSA keys were not being considered in the default case. ssh-keysign 1 : make ssh-keysign use the requested signature algorithm and not the default for the key type. Part of unbreaking hostbased auth for RSA/SHA2 keys. ssh 1 : stricter UpdateHostkey signature verification logic on the client- side. Require RSA/SHA2 signatures for RSA hostkeys except when RSA/SHA1 was explicitly negotiated during initial KEX; bz3375 ssh 1 , sshd 8 : fix signature algorithm selection logic for UpdateHostkeys on the server side. The previous code tried to prefer RSA/SHA2 for hostkey proofs of RSA keys, but missed some cases. This will use RSA/SHA2 signatures for RSA keys if the client proposed these algorithms in initial KEX. bz3375 All: convert all uses of select 2 /pselect 2 to poll 2 /ppoll 2 . This includes the mainloops in ssh 1 , ssh-agent 1 , ssh-agent 1 and sftp-server 8 , as well as the sshd 8 listen loop and all other FD read/writability checks. On platforms with missing or broken poll 2 /ppoll 2 syscalls a select 2 -based compat shim is available. ssh-keygen 1 : the "-Y find-principals" command was verifying key validity when using ca certs but not with simple key lifetimes within the allowed signers file. ssh-keygen 1 : make sshsig verify-time argument parsing optional sshd 8 : fix truncation in rhosts/shosts path construction. ssh 1 , ssh-agent 1 : avoid xmalloc 0 for PKCS 11 keyid for ECDSA keys we already did this for RSA keys . Avoids fatal errors for PKCS 11 libraries that return empty keyid, e.g. Microchip ATECC608B "cryptoauthlib"; bz 3364 ssh 1 , ssh-agent 1 : improve the testing of credentials against inserted FIDO: ask the token whether a particular key belongs to it in cases where the token supports on-token user-verification e.g. biometrics rather than just assuming that it will accept it. Will reduce spurious "Confirm user presence" notifications for key handles that relate to FIDO keys that are not currently inserted in at least some cases. bz3366 ssh 1 , sshd 8 : correct value for IPTOS DSCP LE. It needs to allow for the preceding two ECN bits. bz 3373 ssh-keygen 1 : add missing -O option to usage for the "-Y sign" option. ssh-keygen 1 : fix a NULL deref when using the find-principals function, when matching an allowed signers line that contains a namespace restriction, but no restriction specified on the command-line ssh-agent 1 : fix memleak in process extension ; oss-fuzz issue 42719 ssh 1 : suppress "Connection to xxx closed" messages when LogLevel is set to "error" or above. bz3378 ssh 1 , sshd 8 : use correct zlib flags when inflate 3 -ing compressed packet data. bz3372 scp 1 : when recursively transferring files in SFTP mode, create the destination directory if it doesn't already exist to match scp 1 in legacy RCP mode behaviour. scp 1 : many improvements in error message consistency between scp 1 in SFTP mode vs legacy RCP mode. sshd 8 : fix potential race in SIGTERM handling PR 289 ssh 1 , ssh 8 : since DSA keys are deprecated, move them to the end of the default list of public keys so that they will be tried last. PR 295 ssh-keygen 1 : allow 'ssh-keygen -Y find-principals' to match wildcard principals in allowed signers files Portability ----------- ssh 1 , sshd 8 : don't trust closefrom 2 on Linux. glibc's implementation does not work in a chroot when the kernel does not have close range 2 . It tries to read from /proc/self/fd and when that fails dies with an assertion of sorts. Instead, call close range 2 directly from our compat code and fall back if that fails. bz 3349, OS X poll 2 is broken; use compat replacement. For character- special devices like /dev/null, Darwin's poll 2 returns POLLNVAL when polled with POLLIN. Apparently this is Apple bug 3710161 - not public but a websearch will find other OSS projects rediscovering it periodically since it was first identified in 2005. Correct handling of exceptfds/POLLPRI in our select 2 -based poll 2 /ppoll 2 compat implementation. Cygwin: correct checking of mbstowcs return value. Add a basic SECURITY.md that refers people to the openssh.com website. Enable additional compiler warnings and toolchain hardening flags, including -Wbitwise-instead-of-logical, -Wmisleading-indentation, -fzero-call-used-regs and -ftrivial-auto-var-init. HP/UX. Use compat getline 3 on HP-UX 10.x, where the libc version is not reliable. Checksums: ========== - SHA1 openssh-8.9.tar.gz = 653310ba1a63959fe2df503fe7ad556445180127 - SHA256 openssh-8.9.tar.gz = mJigktP+Bk0sB7uRPuWgjcCOYZ+mIMdvRlZe66irtQA= - SHA1 openssh-8.9p1.tar.gz = 205cdf0040a238047e2c49f43460e03d76e5d650 - SHA256 openssh-8.9p1.tar.gz = /Ul2VLerFobaxnL7g9+0ukCW6LX/zazNJiOArli+xec= Please note that the SHA256 signatures are base64 encoded and not hexadecimal which is the default for most checksum tools . The PGP key used to sign the releases is available from the mirror sites: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE KEY.asc Please note that the OpenPGP key used to sign releases has been rotated for this release. The new key has been signed by the previous key to provide continuity. Reporting Bugs: =============== - Please read https://www.openssh.com/report.html Security bugs should be reported directly to openssh@openssh.com OpenSSH 8.8 was released on 2021-09-26. It is available from the mirrors listed at https://www.openssh.com/. OpenSSH is a 100% complete SSH protocol 2.0 implementation and includes sftp client and server support. Once again, we would like to thank the OpenSSH community for their continued support of the project, especially those who contributed code or patches, reported bugs, tested snapshots or donated to the project. More information on donations may be found at: https://www.openssh.com/donations.html Future deprecation notice ========================= A near-future release of OpenSSH will switch scp 1 from using the legacy scp/rcp protocol to using SFTP by default. Legacy scp/rcp performs wildcard expansion of remote filenames e.g. "scp host: ." through the remote shell. This has the side effect of requiring double quoting of shell meta-characters in file names included on scp 1 command-lines, otherwise they could be interpreted as shell commands on the remote side. This creates one area of potential incompatibility: scp 1 when using the SFTP protocol no longer requires this finicky and brittle quoting, and attempts to use it may cause transfers to fail. We consider the removal of the need for double-quoting shell characters in file names to be a benefit and do not intend to introduce bug- compatibility for legacy scp/rcp in scp 1 when using the SFTP protocol. Another area of potential incompatibility relates to the use of remote paths relative to other user's home directories, for example - "scp host:~user/file /tmp". The SFTP protocol has no native way to expand a ~user path. However, sftp-server 8 in OpenSSH 8.7 and later support a protocol extension "expand-path@openssh.com" to support this. Security ======== sshd 8 from OpenSSH 6.2 through 8.7 failed to correctly initialise supplemental groups when executing an AuthorizedKeysCommand or AuthorizedPrincipalsCommand, where a AuthorizedKeysCommandUser or AuthorizedPrincipalsCommandUser directive has been set to run the command as a different user. Instead these commands would inherit the groups that sshd 8 was started with. Depending on system configuration, inherited groups may allow AuthorizedKeysCommand/AuthorizedPrincipalsCommand helper programs to gain unintended privilege. Neither AuthorizedKeysCommand nor AuthorizedPrincipalsCommand are enabled by default in sshd config 5 . Potentially-incompatible changes ================================ This release disables RSA signatures using the SHA-1 hash algorithm by default. This change has been made as the SHA-1 hash algorithm is cryptographically broken, and it is possible to create chosen-prefix hash collisions for