Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openssh for openSUSE:Factory checked
in at 2026-10-14 18:34:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openssh (Old)
and /work/SRC/openSUSE:Factory/.openssh.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openssh"
Wed Oct 14 18:34:05 2026 rev:211 rq:1384551 version:10.6p1
Changes:
--------
--- /work/SRC/openSUSE:Factory/openssh/openssh-askpass-gnome.changes
2026-07-26 11:29:45.417347828 +0200
+++
/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh-askpass-gnome.changes
2026-10-14 18:34:20.865911336 +0200
@@ -1,0 +2,7 @@
+Thu Oct 8 17:05:43 UTC 2026 - Antonio Larrosa <[email protected]>
+
+- Update to openssh 10.6p1:
+ * No changes for askpass, see main package changelog for
+ details.
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/openssh/openssh.changes 2026-10-02
23:03:15.397073962 +0200
+++ /work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes
2026-10-14 18:34:20.921913707 +0200
@@ -1,0 +2,269 @@
+Thu Oct 8 17:05:43 UTC 2026 - Antonio Larrosa <[email protected]>
+
+- Update to openssh 10.6p1:
+ = Future deprecation notice
+ * scp(1): begin deprecating the -R flag, which is used to
+ perform a remote-to-remote copy by executing scp on a remote
+ host. This option is a fragile optimisation that is difficult
+ to use because it requires credentials on the remote host. It
+ also creates security risks if the shell quoting rules on the
+ remote system where the copy is performed differ from the
+ client's expectations.
+ From OpenSSH 10.6, this option will continue to work but will
+ cause a deprecation warning to be emitted to standard error. In
+ a future release, the option will be ignored and will leave in
+ place the default remote-to-remote copy behaviour (copy via the
+ host running scp).
+ * sshd(8): support for platforms that do not allow file
+ descriptor passing and that also require root privilege for PTY
+ allocation will be removed in a future release. Affected
+ platforms are known to include SCO OpenServer 5 and QNX 6 but
+ may include other similarly old operating systems. This
+ deprecation can be avoided if the user community for these
+ platforms is able to assist us in building alternatives, such
+ as avoiding the need for root in PTY allocation.
+
+ = Potentially-incompatible changes
+ * ssh(1), sshd(8): compression will be less effective as a result
+ of the change noted below in the "Security" section
+ * ssh(1): destination usernames entered on the commandline are
+ now more strictly checked and will refuse usernames that
+ include backslash and dollar symbols. Usernames that are
+ specified by the "User" directive in configuration files are
+ not subject to these restrictions. The motivation for this
+ change is mentioned below in the "Security" section.
+ * sshd(8): on platforms that do not support file descriptor
+ passing and that require root for PTY allocation, the
+ GatewayPorts and StreamLocalForwarding options are forcibly
+ disabled. The motivation for this change is discussed below in
+ the "Security" section.
+
+ = Security
+ * sftp(1): more strictly validate paths returned from the server
+ to avoid some cases where a server could return paths that
+ could manipulate a recursive copy operation into writing
+ outside its target directory. Report and patch from Junghoon
+ Cho.
+ * sshd(8): when GSSAPIAuthentication is in use, only store GSSAPI
+ credentials when authentication has succeeded. Avoids a
+ situation where credentials from a failed GSSAPIAuthentication
+ attempt may persist and be made inappropriately available if
+ another authentication subsequently succeeds. Issue report and
+ patch from Moritz Theile.
+ * sshd(8): reset GSSAPIAuthentication before authentication,
+ avoiding state from one authentication attempt being confused
+ with that of a later attempt. Report and feedback from Moritz
+ Theile.
+ * sshd(8), ssh(1): disable LZ77 dictionary coder to mitigate the
+ side-channel leaks described in "Crossing the Streams: SSH
+ Plaintext Recovery via a Common Compression Context in
+ Multiplexed Channels" by Fabian Bäumer and Marcus Brinkmann,
+ preprint https://arxiv.org/abs/2609.07709 (2026)
+ A chosen-plaintext attack method exists which makes use of
+ dictionary-based compression to recover secrets from one
+ channel by interacting with the SSH session's shared
+ compression dictionary through another channel.
+ Attacker-controlled input can recognizably reflect into the
+ total length of transmitted ciphertexts by virtue of LZ77
+ replacing repeated strings with back-references into the SSH
+ session's encoder search buffer, which is shared across all
+ channels. For this reason, the documentation already
+ recommended against enabling compression for connections that
+ share trusted and untrusted traffic.
+ This change will reduce the effectiveness of the Compression
+ option. Users are encouraged to use application-level
+ compression over the SSH protocol where possible, as this will
+ typically be more effective and will be completely immune to
+ this type of attack.
+ * ssh(1): disallow '$' and '\' characters in usernames entered on
+ the command-line to avoid usernames from untrusted sources
+ yielding injection in shell context via ProxyCommand, Match
+ exec, etc. Usernames specified via the configuration files are
+ not subject this this control. Reported by SecBuddyF KeenLab
+ Tencent (CodeBuddy Security)
+ 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.
+ * ssh-keygen(1): correct handling of Daylight Saving Time when
+ converting dates. Previous handling could cause errors of
+ up to +/- 1 hour (unless you are in the Antarctica/Troll
+ timezone, where the error could be +/- 2 hours). These errors
+ could result in creation of certificates with incorrect expiry
+ times. bz4004; from Khush Patel
+ * sshd(8), ssh(1): ensure that compressed payloads don't inflate
+ past the maximum supported packet length. Reported by Oleh
+ Konko.
+ * sshd(8): fully honor the authorized_keys "restrict" keyword,
+ which was not being properly applied to tunnel forwarding
+ (PermitTunnel, disabled by default). This is a separate problem
+ to the one fixed in openssh-10.5.
+ * sshd(8): correctly handle some options that accept "none". Some
+ options, including AuthorizedPrincipalsFile, were documented as
+ accepting "none" as a way to disable them; however, when
+ overridden by an sshd_config(5) Match keyword, this argument
+ was being incorrectly interpreted as a literal file.
+ With Chris Rohlf in collaboration with Claude and Anthropic
+ Research
+ * sshd(8): On OS X SDK >= 27, sandboxing is no longer supported
+ as the API we depended upon has been removed and no obvious
+ alternative provided.
+ * sshd(8): on platforms that do not support file descriptor
+ passing and that require root for PTY allocation, the
+ post-authentication sshd-session process retains root
+ privilege, whereas on other platforms this process runs with
+ the privilege of the logged-in user. When sshd-session was run
+ with elevated privilege, it could perform certain actions as
+ root and circumvent controls that would normally have applied
+ to the user, such as making unix domain socket connections or
+ binding (via -R forwarding) to low-numbered TCP ports.
+ For this reason, this release disables the GatewayPorts and
+ StreamLocalForwarding options and support for these (few)
+ platforms will be removed in future if no alternatives to
+ requiring privilege in the post-authentication process are
+ found. Affected platforms include QNX 6, SCO OpenServer 5 and
+ builds that were made with the --disable-fd-passing configure
+ option.
+ This problem was reported separately by sn0x-sharma and by
+ Dark River.
+
+ = New features
+ * All: enable hybrid post-quantum ssh-mldsa44-ed25519 signature
+ algorithm. Note that this no longer uses the "@openssh.com"
+ vendor extension suffix that the previous experimental
+ implementation used. Keys generated with the previous
+ experimental support must be regenerated and/or removed.
+ * sshd(8): Add the WarnWeakCrypto option to sshd_config(5). This
+ option was previously available for the client only. This
+ option is enabled by default and will log when the client uses
+ a key agreement scheme that is not post-quantum safe.
+ * ssh-keygen(1), ssh-add(1): preserve user-verification (PIN or
+ biometric) requirement for resident keys loaded from a FIDO
+ token, by checking the credential's credProtect policy.
+ GHPR701 from Savely Krasovsky
+ * ssh(1): include local and remote version strings in the ~I
+ connection information display.
+ * ssh-add(1): add a -P flag to skip PIN entry for FIDO and
+ PKCS#11 tokens that do not require it.
+ * sftp(1): add '-p' flag for mkdir/lmkdir to create directories
+ as required. This flag has similar ergonomics to mkdir(1), and
+ previously-existing directories do not cause an error.
+ * ssh-keygen(1): add a "hexdump" key export mode that dumps the
+ SSH wire-formatted key blob in hex format. Useful when writing
+ documentation, tests, etc. E.g.
+ `ssh-keygen -em hexdump -f /key`
+ * ssh(1), sshd(8): ChannelTimeout now accepts timeouts with
+ fractional seconds.
+ * sshd(8): allow specification of the location of $SSH_AUTH_SOCK
+ used for agent forwarding using a new AgentSocketPath option.
+ This supports both using a user-specific path, such as the
+ default of a subdirectory of $HOME ("user:.ssh/agent"), and
+ the previous approach of allowing agent forwarding sockets to
+ be located in a shared directory (e.g. "shared:/tmp"). Sockets
+ created in shared directories will be created inside a
+ subdirectory with a randomised name. bz3860
+ * ssh-agent(1): allow specification of agent socket directories
+ using a -A flag. It accepts "user:" and "shared:" directory
+ styles similar to the sshd AgentSocketPath option.
+ * sshd(8): account for public key authentication "key ok" tests
+ separately to auth attempts. Add a
+ `PubkeyOptions max-pk-ok:nnnn` option to allow a number of
+ PK_OK tests (asking whether the server might accept a given
+ public key) that do not count against MaxAuthTries, defaulting
+ to 6 attempts. After these attempts are exhausted, further
+ attempts count as failed authentications against MaxAuthTries.
+ Practically, this allows more keys on disk or held in ssh-agent
+ to be checked for use before the server disconnects.
+ * ssh(1), sshd(8): extend the existing TCPKeepAlive option to
+ also support setting keepalives on sockets created for
+ forwarding connections. Previously this option controlled
+ keepalives on the connection socket only. TCPKeepAlive "yes" or
+ "transport" enables keepalives on the connection socket.
+ "TCPKeepAlive all" additionally enables them for forwarding
+ sockets. bz3921
+
+ = Bugfixes
+ * sshd(8), ssh(1): fix configuration matching on more Turkic
+ languages which have disjoint dotted and dotless i/I
+ characters, specifically Azerbaijani and Crimean Tatar. bz3991
+ * ssh(1), sshd(8): don't attempt to set TCP_NODELAY on
+ non-IP/IPv6 sockets. Eliminates some noise in debug logs.
+ * ssh(1): fix case for ssh -G option output; bz4005
+ * ssh(1), sshd(8): Fix ChannelTimeout specificity; previously a
+ more specific channel type (e.g. "session:shell") could clobber
+ a user-specified ChannelTimeout if it was less specific (e.g.
+ "session"). Also, in some cases, the debug messages were
+ printing 0 instead of the effective timeout. bz3994
+ * sftp(1): avoid NULL dereference crash in some circumstances
+ when a server fails a stat/lstat operation. GHPR707
+ * sshd(8): close a race condition where a SIGTERM/SIGQUIT would
+ be ignored if it was received by the server while it was
+ processing a SIGHUP restart request. bz3981
+ * sshd(8), ssh(1): check key and CA signature types during key
+ parsing against allowlists (PubkeyAcceptedAlgorithms, etc) as
+ early as possible. This reduces the attack surface presented by
+ disabled algorithms. Suggested by and with extensive feedback
+ from Chris Rohlf in collaboration with Claude and Anthropic
+ Research.
+ * All: switch the fallback implementation of the ed25519
+ signature algorithm used when libcrypto is disabled from
+ SUPERCOP ed25519 to libsodium. The libsodium implementation
+ includes a number of strictness checks over the original
+ reference implementation we have used to this point and a more
+ ergonomic API.
+ * ssh-add(1), ssh(1), ssh-keygen(1): fix spin on password entry
+ when the program attempting to read a password was started in a
+ background process group, with no TTY and with certain signals
+ ignored. bz3995
+ * scp(1): disallow nul byte in received scp -O filename. This was
+ not reachable in normal operation. Reported by Chua Wei Xun.
+ * ssh-keygen(1), ssh(1), sshd(8): implement a maximum number of
+ KDF rounds that will be accepted when writing an OpenSSH-format
+ private key or when loading one. This limit is set quite high
+ (1M), but ensures that a service that is passed a bad key with
+ a ridiculously high number of rounds will eventually complete
+ parsing it.
+ * ssh-keygen(1): bump the default number of KDF rounds from 24 to
+ 32 (this is a linear increase, not like bcrypt(3) which is
+ exponential).
+ * ssh(1): make StreamLocalBindMask properly respect Host/Match
+ blocks and make it first-match-wins as documented. bz4013
+ * sshd(8): make StreamLocalBindMask properly first-match-wins.
+
+ = Portability
+ * All: remove the NetBSD BROKEN_READ_COMPARISON workaround. This
+ appears to be no longer required and caused pre-auth CPU
+ spinning.
+ * sshd(8): don't link sshd against libselinux when SELinux
+ support is enabled (note: this library is still linked for the
+ sshd-auth and sshd-session helper binaries).
+ * sshd(8): allow madvise(..., MADV_DONTNEED_LOCKED) in the
+ seccomp sandbox; needed by GrapheneOS' hardened allocator.
+ bz4001
+ * sshd(8): restrict mremap(2) flags accepted by the seccomp
+ sandbox. Only MREMAP_MAYMOVE is now accepted as other flags
+ may have some utility in attack chains. Reported by: Mohammad
+ Hossein Abedini.
+ * sshd(8): allow PAMServiceName in Match (regressed in 10.4).
+ During the refactor of server option parsing, the ability to
+ set PAMServiceName in Match blocks was accidentally disabled.
+ * sshd(8): the --disable-fd-passing configure option has been
+ removed.
+
+- Rebase patches:
+ * openssh-6.6p1-privsep-selinux.patch
+ * openssh-7.7p1-fips.patch
+ * openssh-7.7p1-gssapi-new-unique.patch
+ * openssh-7.7p1-pam_check_locks.patch
+ * openssh-7.8p1-role-mls.patch
+ * openssh-8.0p1-gssapi-keyex.patch
+ * openssh-8.1p1-ed25519-use-openssl-rng.patch
+ * openssh-9.6p1-crypto-policies-man.patch
+ * openssh-askpass-gnome.spec
+ * openssh-mitigate-lingering-secrets.patch
+
+- Drop patches already merged upstream:
+ * openssh-10.5p1-sync-readpassphrase.patch
+ * openssh-10.5p1-propagate-restrict-keyword.patch
+
+-------------------------------------------------------------------
Old:
----
openssh-10.5p1-propagate-restrict-keyword.patch
openssh-10.5p1-sync-readpassphrase.patch
openssh-10.5p1.tar.gz
openssh-10.5p1.tar.gz.asc
New:
----
openssh-10.6p1.tar.gz
openssh-10.6p1.tar.gz.asc
----------(Old B)----------
Old:/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes- *
openssh-10.5p1-sync-readpassphrase.patch
/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes: *
openssh-10.5p1-propagate-restrict-keyword.patch
/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes-
Old:/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes-- Drop
patches already merged upstream:
/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes: *
openssh-10.5p1-sync-readpassphrase.patch
/work/SRC/openSUSE:Factory/.openssh.new.3698736/openssh.changes- *
openssh-10.5p1-propagate-restrict-keyword.patch
----------(Old E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openssh-askpass-gnome.spec ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.127091774 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:25.129091858 +0200
@@ -18,8 +18,8 @@
%define _name openssh
Name: openssh-askpass-gnome
-Version: 10.5p1
-%define wrongly_named_version 10.5p1
+Version: 10.6p1
+%define wrongly_named_version 10.6p1
Release: 0
Summary: A GNOME-Based Passphrase Dialog for OpenSSH
License: BSD-2-Clause
++++++ openssh.spec ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.166093425 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:25.168093510 +0200
@@ -58,7 +58,7 @@
%define _fillupdir %{_localstatedir}/adm/fillup-templates
%endif
Name: openssh
-Version: 10.5p1
+Version: 10.6p1
Release: 0
Summary: Secure Shell Client and Server (Remote Login Program)
License: BSD-2-Clause AND MIT
@@ -176,10 +176,6 @@
Patch107: openssh-send-extra-term-env.patch
# PATCH-FIX-SUSE openssh-7.7p1-gssapi-new-unique.patch bsc#1258166
[email protected] -- SSSD non-file ccache: krb5 new_unique
Patch108: openssh-7.7p1-gssapi-new-unique.patch
-# PATCH-FIX-UPSTREAM openssh-10.5p1-sync-readpassphrase.patch mindrot#3995
[email protected] -- Sync readpassphrase(3) with OpenBSD libc: preserve SIG_IGN
so ssh-add no longer spins without a controlling tty
-Patch109: openssh-10.5p1-sync-readpassphrase.patch
-# PATCH-FIX-UPSTREAM openssh-10.5p1-propagate-restrict-keyword.patch
bsc#1275079 -- Propagate the authorized_keys "restrict" flag
-Patch110: openssh-10.5p1-propagate-restrict-keyword.patch
# 200..300 -- Patches submitted to upstream
# 1000..2000 -- Conditional patches
%if %{with crypto_policies}
++++++ openssh-10.5p1.tar.gz -> openssh-10.6p1.tar.gz ++++++
++++ 18433 lines of diff (skipped)
++++++ openssh-6.6p1-privsep-selinux.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.823121247 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:25.827121416 +0200
@@ -114,17 +114,17 @@
/* Demote the child */
if (privsep_chroot) {
/* Change our root directory */
-Index: openssh-9.3p2/sshd-session.c
+Index: openssh-10.6p1/defines.h
===================================================================
---- openssh-9.3p2.orig/sshd-session.c
-+++ openssh-9.3p2/sshd-session.c
+--- openssh-10.6p1.orig/defines.h
++++ openssh-10.6p1/defines.h
@@ -490,7 +490,7 @@ privsep_postauth(struct ssh *ssh, Authct
- * fd passing, as AFAIK PTY allocation on this platform doesn't require
- * special privileges to begin with.
- */
+ * fd passing, as AFAIK PTY allocation on this platform doesn't require
+ * special privileges to begin with.
+ */
-#if defined(DISABLE_FD_PASSING) && !defined(HAVE_CYGWIN)
+#if defined(DISABLE_FD_PASSING) && !defined(HAVE_CYGWIN) &&
!defined(WITH_SELINUX)
- skip_privdrop = 1;
+ # define SKIP_PRIVDROP 1
#endif
++++++ openssh-7.7p1-fips.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.896124338 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:25.902124592 +0200
@@ -849,8 +849,8 @@
--- openssh-10.3p1.orig/readconf.h
+++ openssh-10.3p1/readconf.h
@@ -235,6 +235,7 @@ typedef struct {
- #define SSH_KEYSTROKE_CHAFF_MIN_MS 1024
- #define SSH_KEYSTROKE_CHAFF_RNG_MS 2048
+ #define SSH_KEEPALIVES_TRANSPORT 1
+ #define SSH_KEEPALIVES_ALL 2
+void filter_fips_algorithms(Options *o);
const char *kex_default_pk_alg(void);
@@ -987,7 +987,7 @@
int first = 0;
struct stat st;
@@ -1025,6 +1040,12 @@ do_gen_all_hostkeys(struct passwd *pw)
- char comment[1024], *prv_tmp, *pub_tmp, *prv_file, *pub_file;
+ char comment[KEY_COMMENT_MAX], *prv_tmp, *pub_tmp, *prv_file, *pub_file;
int i, type, fd, r;
+ if (fips_mode()) {
++++++ openssh-7.7p1-gssapi-new-unique.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.924125524 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:25.928125693 +0200
@@ -458,7 +458,7 @@
===================================================================
--- openssh-10.3p1.orig/gss-serv.c
+++ openssh-10.3p1/gss-serv.c
-@@ -415,18 +415,20 @@ ssh_gssapi_cleanup_creds(void)
+@@ -415,23 +415,25 @@ ssh_gssapi_cleanup_creds(void)
}
/* As user */
@@ -466,6 +466,12 @@
+int
ssh_gssapi_storecreds(void)
{
+ if (!gssapi_client.userok) {
+ debug_f("GSSAPI client was not authorized, doing nothing");
+- return;
++ return 0;
+ }
+
if (options.gss_deleg_creds == 0) {
debug_f("delegate credential is disabled, doing nothing");
- return;
@@ -579,8 +585,8 @@
-void ssh_gssapi_storecreds(void);
+int ssh_gssapi_storecreds(void);
const char *ssh_gssapi_displayname(void);
+ void ssh_gssapi_cleanup_global_client();
- char *ssh_gssapi_server_mechanisms(void);
Index: openssh-10.3p1/sshd-session.c
===================================================================
--- openssh-10.3p1.orig/sshd-session.c
++++++ openssh-7.7p1-pam_check_locks.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.951126667 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:25.955126836 +0200
@@ -26,8 +26,8 @@
#ifdef USE_PAM
#define SSHD_CONFIG_ENTRIES_PAM \
SSHCONF_INTFLAG(use_pam, UsePAM, SSHCFG_GLOBAL, 0, SSHCFG_COPY_NONE) \
--SSHCONF_STRING(pam_service_name, PAMServiceName, SSHCFG_ALL, SSHCFG_COPY_NONE)
-+SSHCONF_STRING(pam_service_name, PAMServiceName, SSHCFG_ALL,
SSHCFG_COPY_NONE) \
+-SSHCONF_STRING(pam_service_name, PAMServiceName, SSHCFG_ALL,
SSHCFG_COPY_MATCH)
++SSHCONF_STRING(pam_service_name, PAMServiceName, SSHCFG_ALL,
SSHCFG_COPY_MATCH) \
+SSHCONF_INTFLAG(use_pam_check_locks, UsePAMChecklocks, SSHCFG_GLOBAL, 0,
SSHCFG_COPY_NONE)
#else
#define SSHD_CONFIG_ENTRIES_PAM \
++++++ openssh-7.8p1-role-mls.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:25.998128657 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:26.005128954 +0200
@@ -356,10 +356,10 @@
.c.o:
$(CC) $(CFLAGS_NOPIE) $(PICFLAG) $(CPPFLAGS) -c $<
-Index: openssh-10.3p1/openbsd-compat/port-linux.c
+Index: openssh-10.3p1/openbsd-compat/port-linux-selinux.c
===================================================================
---- openssh-10.3p1.orig/openbsd-compat/port-linux.c
-+++ openssh-10.3p1/openbsd-compat/port-linux.c
+--- openssh-10.3p1.orig/openbsd-compat/port-linux-selinux.c
++++ openssh-10.3p1/openbsd-compat/port-linux-selinux.c
@@ -109,37 +109,6 @@ ssh_selinux_getctxbyname(char *pwname)
return sc;
}
++++++ openssh-8.0p1-gssapi-keyex.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:26.025129800 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:26.029129970 +0200
@@ -860,7 +860,7 @@
--- openssh-10.3p1.orig/gss-serv.c
+++ openssh-10.3p1/gss-serv.c
@@ -1,7 +1,7 @@
- /* $OpenBSD: gss-serv.c,v 1.37 2026/02/11 16:57:38 dtucker Exp $ */
+ /* $OpenBSD: gss-serv.c,v 1.39 2026/09/16 00:37:52 djm Exp $ */
/*
- * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -881,7 +881,7 @@
static ssh_gssapi_client gssapi_client =
- { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER,
-- GSS_C_NO_CREDENTIAL, NULL, {NULL, NULL, NULL, NULL}};
+- GSS_C_NO_CREDENTIAL, NULL, {NULL, NULL, NULL, NULL}, 0};
+ { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER, GSS_C_NO_CREDENTIAL,
+ GSS_C_NO_NAME, NULL, {NULL, NULL, NULL, NULL, NULL}, 0, 0};
@@ -980,8 +980,8 @@
+ return GSS_S_COMPLETE;
+ }
+ client->userok = 0;
client->mech = NULL;
-
@@ -294,6 +361,13 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_g
if (client->mech == NULL)
return GSS_S_FAILURE;
@@ -1031,15 +1031,13 @@
}
}
-@@ -363,19 +448,23 @@ ssh_gssapi_do_child(char ***envp, u_int
+@@ -363,16 +448,20 @@ ssh_gssapi_do_child(char ***envp, u_int
/* Privileged */
int
-ssh_gssapi_userok(char *user)
+ssh_gssapi_userok(char *user, struct passwd *pw, int kex)
{
- OM_uint32 lmin;
-
+ (void) kex; /* used in privilege separation */
+
if (gssapi_client.exportedname.length == 0 ||
@@ -1048,16 +1046,13 @@
return 0;
}
if (gssapi_client.mech && gssapi_client.mech->userok)
-- if ((*gssapi_client.mech->userok)(&gssapi_client, user))
-+ if ((*gssapi_client.mech->userok)(&gssapi_client, user)) {
+ if ((*gssapi_client.mech->userok)(&gssapi_client, user)) {
+ gssapi_client.userok = 1;
+ gssapi_client.used = 1;
+ gssapi_client.store.owner = pw;
return 1;
-- else {
-+ } else {
+ } else {
/* Destroy delegated credentials if userok fails */
- gss_release_buffer(&lmin, &gssapi_client.displayname);
- gss_release_buffer(&lmin, &gssapi_client.exportedname);
@@ -389,14 +478,85 @@ ssh_gssapi_userok(char *user)
return (0);
}
@@ -1333,7 +1328,7 @@
};
@@ -170,6 +179,12 @@ struct kex {
- u_int flags;
+ u_int non_pq_kex_warned;
int hash_alg;
int ec_nid;
+#ifdef GSSAPI
@@ -2625,8 +2620,8 @@
+ if (!options.gss_authentication && !options.gss_keyex)
+ fatal_f("GSSAPI not enabled");
- if ((r = sshbuf_get_string(m, &p, &len)) != 0)
- fatal_fr(r, "parse");
+ ssh_gssapi_cleanup_global_client();
+
@@ -2022,8 +2057,8 @@ mm_answer_gss_accept_ctx(struct ssh *ssh
OM_uint32 flags = 0; /* GSI needs this */
int r;
@@ -3197,13 +3192,14 @@
void *data;
} ssh_gssapi_ccache;
-@@ -72,8 +96,11 @@ typedef struct {
+@@ -72,9 +96,12 @@ typedef struct {
gss_buffer_desc displayname;
gss_buffer_desc exportedname;
gss_cred_id_t creds;
+ gss_name_t name;
struct ssh_gssapi_mech_struct *mech;
ssh_gssapi_ccache store;
+ int userok;
+ int used;
+ int updated;
} ssh_gssapi_client;
@@ -3238,7 +3234,7 @@
OM_uint32 ssh_gssapi_import_name(Gssctxt *, const char *);
OM_uint32 ssh_gssapi_init_ctx(Gssctxt *, int,
-@@ -122,17 +152,33 @@ void ssh_gssapi_delete_ctx(Gssctxt **);
+@@ -122,18 +152,34 @@ void ssh_gssapi_delete_ctx(Gssctxt **);
OM_uint32 ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t);
void ssh_gssapi_buildmic(struct sshbuf *, const char *,
const char *, const char *, const struct sshbuf *);
@@ -3264,6 +3260,7 @@
void ssh_gssapi_cleanup_creds(void);
void ssh_gssapi_storecreds(void);
const char *ssh_gssapi_displayname(void);
+ void ssh_gssapi_cleanup_global_client();
+char *ssh_gssapi_server_mechanisms(void);
+int ssh_gssapi_oid_table_ok(void);
@@ -3279,14 +3276,14 @@
--- openssh-10.3p1.orig/ssh.1
+++ openssh-10.3p1/ssh.1
@@ -640,6 +646,8 @@ flag),
- (supported message integrity codes),
- .Ar kex
- (key exchange algorithms),
-+.Ar kex-gss
-+(GSSAPI key exchange algorithms),
- .Ar key
- (key types),
- .Ar key-ca-sign
+ supported message integrity codes
+ .It Cm kex
+ key exchange algorithms
++.It Cm kex-gss
++GSSAPI key exchange algorithms,
+ .It Cm key
+ key types
+ .It Cm key-ca-sign
Index: openssh-10.3p1/ssh.c
===================================================================
--- openssh-10.3p1.orig/ssh.c
++++++ openssh-8.1p1-ed25519-use-openssl-rng.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:26.048130775 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:26.052130944 +0200
@@ -19,25 +19,25 @@
+
+#include "log.h"
+
- #define int8 crypto_int8
- #define uint8 crypto_uint8
- #define int16 crypto_int16
+ /* OpenSSH compatibility glue for the small libsodium API subset below. */
+ #define ACQUIRE_FENCE (void)0
+ #define COMPILER_ASSERT(x) (void)sizeof(char[(x) ? 1 : -1])
@@ -33,7 +40,15 @@ int crypto_sign_ed25519_keypair(
- unsigned char seed[32];
- int r;
+ unsigned char seed[32];
+ int ret;
+#ifdef WITH_OPENSSL
-+ /* Use FIPS approved RNG */
-+ if (RAND_bytes(seed, 32) <= 0)
-+ fatal("Couldn't obtain random bytes (error 0x%lx)",
-+ (unsigned long)ERR_get_error());
++ /* Use FIPS approved RNG */
++ if (RAND_bytes(seed, sizeof seed) <= 0)
++ fatal("Couldn't obtain random bytes (error 0x%lx)",
++ (unsigned long)ERR_get_error());
+#else
- randombytes(seed, 32);
+ arc4random_buf(seed, sizeof seed);
+#endif
+
- r = crypto_sign_ed25519_keypair_from_seed(pk, sk, seed);
- explicit_bzero(seed, sizeof(seed));
- return r;
+ ret = crypto_sign_ed25519_seed_keypair(pk, sk, seed);
+ explicit_bzero(seed, sizeof seed);
+
diff --git a/kexc25519.c b/kexc25519.c
index f13d766..2604eda 100644
--- a/kexc25519.c
++++++ openssh-9.6p1-crypto-policies-man.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:26.083132257 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:26.087132426 +0200
@@ -21,7 +21,7 @@
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed25519
-.Ed
-.Pp
If the specified list begins with a
@@ -134,14 +134,14 @@
[email protected],
[email protected],
[email protected],
[email protected],
+-ssh-mldsa44-ed25519-cert,
-ssh-ed25519,
-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
[email protected],
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed25519
-.Ed
+at the head of the built-in openssh default set.
.Pp
@@ -297,14 +297,14 @@
[email protected],
[email protected],
[email protected],
[email protected],
+-ssh-mldsa44-ed25519-cert,
-ssh-ed25519,
-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
[email protected],
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed25519
-.Ed
+built-in openssh default set.
.Pp
@@ -350,7 +350,7 @@
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed25519
-.Ed
-.Pp
If the specified list begins with a
@@ -467,14 +467,14 @@
[email protected],
[email protected],
[email protected],
[email protected],
+-ssh-mldsa44-ed25519-cert,
-ssh-ed25519,
-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
[email protected],
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed2551
-.Ed
+the head of the built-in openssh default set.
.Pp
@@ -503,14 +503,14 @@
[email protected],
[email protected],
[email protected],
[email protected],
+-ssh-mldsa44-ed25519-cert,
-ssh-ed25519,
-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
[email protected],
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed25519
-.Ed
-.Pp
The list of available signature algorithms may also be obtained using
@@ -651,14 +651,14 @@
[email protected],
[email protected],
[email protected],
[email protected],
+-ssh-mldsa44-ed25519-cert,
-ssh-ed25519,
-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
[email protected],
[email protected],
[email protected],
-rsa-sha2-512,rsa-sha2-256,
[email protected]
+-ssh-mldsa44-ed25519
-.Ed
+built-in openssh default set.
.Pp
++++++ openssh-mitigate-lingering-secrets.patch ++++++
--- /var/tmp/diff_new_pack.NELcj2/_old 2026-10-14 18:34:26.117133696 +0200
+++ /var/tmp/diff_new_pack.NELcj2/_new 2026-10-14 18:34:26.120133823 +0200
@@ -92,7 +92,7 @@
break;
case Z_STREAM_ERROR:
default:
-@@ -923,8 +926,10 @@ uncompress_buffer(struct ssh *ssh, struc
+@@ -923,10 +926,14 @@ uncompress_buffer(struct ssh *ssh, struc
switch (status) {
case Z_OK:
if ((r = sshbuf_put(out, buf, sizeof(buf) -
@@ -101,6 +101,11 @@
+ explicit_bzero(buf, sizeof(buf));
return r;
+ }
+- if (sshbuf_len(out) >= PACKET_MAX_SIZE)
++ if (sshbuf_len(out) >= PACKET_MAX_SIZE) {
++ explicit_bzero(buf, sizeof(buf));
+ return SSH_ERR_INVALID_FORMAT;
++ }
break;
case Z_BUF_ERROR:
/*
@@ -309,14 +314,14 @@
/* Demote private to public keys for network child */
@@ -414,6 +429,8 @@ privsep_postauth(struct ssh *ssh, Authct
+ static void
+ privsep_postauth(struct ssh *ssh, Authctxt *authctxt)
{
- int skip_privdrop = 0;
-
+ clobber_stack();
+
- /*
- * Hack for systems that don't support FD passing: retain privileges
- * in the post-auth privsep process so it can allocate PTYs directly.
+ /* New socket pair */
+ monitor_reinit(pmonitor);
+
@@ -1361,6 +1378,7 @@ main(int ac, char **av)
mm_terminate();