git: 31a650820f - main - Add SA-25:05.openssh.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 21 Feb 2025 03:09:29 UTC
The branch main has been updated by gordon: URL: https://cgit.FreeBSD.org/doc/commit/?id=31a650820fb947107470d17e32c9338697cba850 commit 31a650820fb947107470d17e32c9338697cba850 Author: Gordon Tetlow <gordon@FreeBSD.org> AuthorDate: 2025-02-21 03:09:14 +0000 Commit: Gordon Tetlow <gordon@FreeBSD.org> CommitDate: 2025-02-21 03:09:14 +0000 Add SA-25:05.openssh. Approved by: so --- website/data/security/advisories.toml | 4 + .../advisories/FreeBSD-SA-25:05.openssh.asc | 180 +++++++++++++++++++++ .../static/security/patches/SA-25:05/openssh.patch | 143 ++++++++++++++++ .../security/patches/SA-25:05/openssh.patch.asc | 16 ++ 4 files changed, 343 insertions(+) diff --git a/website/data/security/advisories.toml b/website/data/security/advisories.toml index 8e676bbf20..fb54b5d5e6 100644 --- a/website/data/security/advisories.toml +++ b/website/data/security/advisories.toml @@ -1,6 +1,10 @@ # Sort advisories by year, month and day # $FreeBSD$ +[[advisories]] +name = "FreeBSD-SA-25:05.openssh" +date = "2025-02-21" + [[advisories]] name = "FreeBSD-SA-25:04.ktrace" date = "2025-01-29" diff --git a/website/static/security/advisories/FreeBSD-SA-25:05.openssh.asc b/website/static/security/advisories/FreeBSD-SA-25:05.openssh.asc new file mode 100644 index 0000000000..9410baf89b --- /dev/null +++ b/website/static/security/advisories/FreeBSD-SA-25:05.openssh.asc @@ -0,0 +1,180 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-25:05.openssh Security Advisory + The FreeBSD Project + +Topic: Multiple vulnerabilities in OpenSSH + +Category: contrib +Module: openssh +Announced: 2025-02-21 +Credits: Qualys Security Advisory team +Affects: All supported versions of FreeBSD. +Corrected: 2025-02-19 14:54:37 UTC (stable/14, 14.2-STABLE) + 2025-02-21 02:56:26 UTC (releng/14.2, 14.2-RELEASE-p2) + 2025-02-21 02:56:40 UTC (releng/14.1, 14.1-RELEASE-p8) + 2025-02-19 16:05:16 UTC (stable/13, 13.5-STABLE) + 2025-02-20 18:00:47 UTC (releng/13.5, 13.5-BETA3) + 2025-02-21 02:56:50 UTC (releng/13.4, 13.4-RELEASE-p4) +CVE Name: CVE-2025-26465, CVE-2025-26466 + +For general information regarding FreeBSD Security Advisories, +including descriptions of the fields above, security branches, and the +following sections, please visit <URL:https://security.FreeBSD.org/>. + +I. Background + +OpenSSH is an implementation of the SSH protocol suite, providing an +encrypted and authenticated transport for a variety of services, including +remote shell access. + +II. Problem Description + +* OpenSSH client host verification error (CVE-2025-26465) + +ssh(1) contains a logic error that allows an on-path attacker to impersonate +any server during certain conditions when the VerifyHostKeyDNS option is +enabled. + +* OpenSSH server denial of service (CVE-2025-26466) + +The OpenSSH client and server are both vulnerable to a memory/CPU denial of +service while handling SSH2_MSG_PING packets. + +III. Impact + +* OpenSSH client host verification error (CVE-2025-26465) + +Under specific circumstances, a machine-in-the-middle may impersonate any +server when the client has the VerifyHostKeyDNS option enabled. + +* OpenSSH server denial of service (CVE-2025-26466) + +During the processing of SSH2_MSG_PING packets, a server may be subject to a +memory/CPU denial of service. + +IV. Workaround + +* OpenSSH client host verification error (CVE-2025-26465) + +Disable the VerifyHostKeyDNS configuration directive in the ssh(1) +configuration and rely on trust-on-first-use host keys or SSH certificate based +host keys. See ssh_config(5). + +* OpenSSH server denial of service (CVE-2025-26466) + +No workaround is available, but this condition may be mitigated in the server +by using the LoginGraceTime and MaxStartups server configuration directives. +See sshd_config(5). + +V. Solution + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date and +restart sshd(8). + +Perform one of the following: + +1) To update your vulnerable system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the amd64 or arm64 platforms, +or the i386 platform on FreeBSD 13, can be updated via the freebsd-update(8) +utility: + +# freebsd-update fetch +# freebsd-update install +# ## freebsd-update will automatically restart sshd. + +Note: The binary update provided by freebsd-update is slightly different than +the patch in the source tree. Specifically, the commented out VersionAddendum +in the ssh_config(5) and sshd_config(5) files and corresponding manpages is +not included to prevent an unnecessary interactive merge operation. Since +this was only to update a comment, it was deemed preferred to have this +slight divergence to improve the end-user experience. The underlying source +code is otherwise the same. + +2) To update your vulnerable system via a source code patch: + +The following patches have been verified to apply to the applicable +FreeBSD release branches. + +a) Download the relevant patch from the location below, and verify the +detached PGP signature using your PGP utility. + +# fetch https://security.FreeBSD.org/patches/SA-25:05/openssh.patch +# fetch https://security.FreeBSD.org/patches/SA-25:05/openssh.patch.asc +# gpg --verify openssh.patch.asc + +Note: The patch listed here is the patch used by the freebsd-update build and +is lacking the changes for the VersionAddendum comments in the configuration +files and manpages. + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile the operating system using buildworld and installworld as +described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>. + +Restart the applicable daemons, or reboot the system. + +VI. Correction details + +This issue is corrected as of the corresponding Git commit hash in the +following stable and release branches: + +Branch/path Hash Revision +- ------------------------------------------------------------------------- +stable/14/ 24ce323f020f stable/14-n270447 +releng/14.2/ 4b8a2f716588 releng/14.2-n269517 +releng/14.1/ fe49460873e0 releng/14.1-n267740 +stable/13/ 2fc62d0bd4f7 stable/13-n259174 +releng/13.5/ 78b4f775184c releng/13.5-n259148 +releng/13.4/ 14c733f25493 releng/13.4-n258278 +- ------------------------------------------------------------------------- + +Run the following command to see which files were modified by a +particular commit: + +# git show --stat <commit hash> + +Or visit the following URL, replacing NNNNNN with the hash: + +<URL:https://cgit.freebsd.org/src/commit/?id=NNNNNN> + +To determine the commit count in a working tree (for comparison against +nNNNNNN in the table above), run: + +# git rev-list --count --first-parent HEAD + +VII. References + +<URL:https://www.qualys.com/2025/02/18/openssh-mitm-dos.txt> + +<URL:https://www.openssh.com/releasenotes.html#9.9p2> + +<URL:https://www.cve.org/CVERecord?id=CVE-2025-26465> + +<URL:https://www.cve.org/CVERecord?id=CVE-2025-26466> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-25:05.openssh.asc> +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCgAdFiEEthUnfoEIffdcgYM7bljekB8AGu8FAme37REACgkQbljekB8A +Gu/++hAAuhFt0VHitGW+zyAv6m6AXTT/l9O+77jqacIGtut1MkXUfqkdDrXLUo+Y +2OT2zXyGqygiHFB5n0+Ww4wFBUxWIFXFlIArTNp1CuYvwbxTJEi9A4X7X9TfseB0 +F96RN2RA2cIjbDfADr/mcnyBLzA1JMSC35VKOFM3k3Qv4X+vmk6B6n32I7iRA2UO +EUW4wO1N9y2u2rFujadevukK1nfktb7GStC7lVoesPAteCj4hzU8tp316NgAhqT1 +p046lqqgeDfyMC+YxSJDhoelEnT+5kUSFX7f193wJpUTPkdN1z+8fpmQdQXndvlR +skzjgICdy2ApkSadCDnNAWQYAhRwo7xPX3SwbLx6RRA8LpVWJb6pj8ThLxsVBSEE +UiUqkWjFRiHaE+CiZpZptAfEbCcLCwpxqgtrZRkZcu5KuzI0I/wCvYWpRuSqBE2/ +QBGP7+bLCRKtHCb8LsYoOpmZO9fkbEIKURA4ym+WQWubxjG2d7L5rzNggKe/KoUj +F9SK6c3220dGGEaqTbjPt9D9NkC9H4XH32HsRwFkjxg6//PrASsVc9n+E14baNGk +3Xfqk1uBiJSTwMk1a6r1pRR1O3YOO6g4CYkptJdW94ju2R6ni8yFe+Zbx5KZIYvu +Cn5JCAb0u5xCr4brDqk7EvvAh245w+CiO5BaM5HmoWDncGxD5oU= +=wbm/ +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/SA-25:05/openssh.patch b/website/static/security/patches/SA-25:05/openssh.patch new file mode 100644 index 0000000000..4d49fe53ef --- /dev/null +++ b/website/static/security/patches/SA-25:05/openssh.patch @@ -0,0 +1,143 @@ +--- crypto/openssh/krl.c.orig ++++ crypto/openssh/krl.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: krl.c,v 1.59 2023/07/17 05:22:30 djm Exp $ */ ++/* $OpenBSD: krl.c,v 1.60 2025/02/18 08:02:48 djm Exp $ */ + /* + * Copyright (c) 2012 Damien Miller <djm@mindrot.org> + * +@@ -674,6 +674,7 @@ + break; + case KRL_SECTION_CERT_SERIAL_BITMAP: + if (rs->lo - bitmap_start > INT_MAX) { ++ r = SSH_ERR_INVALID_FORMAT; + error_f("insane bitmap gap"); + goto out; + } +@@ -1059,6 +1060,7 @@ + } + + if ((krl = ssh_krl_init()) == NULL) { ++ r = SSH_ERR_ALLOC_FAIL; + error_f("alloc failed"); + goto out; + } +--- crypto/openssh/ssh-agent.c.orig ++++ crypto/openssh/ssh-agent.c +@@ -1226,6 +1226,7 @@ + "restrict-destination-v00@openssh.com") == 0) { + if (*dcsp != NULL) { + error_f("%s already set", ext_name); ++ r = SSH_ERR_INVALID_FORMAT; + goto out; + } + if ((r = sshbuf_froms(m, &b)) != 0) { +@@ -1235,6 +1236,7 @@ + while (sshbuf_len(b) != 0) { + if (*ndcsp >= AGENT_MAX_DEST_CONSTRAINTS) { + error_f("too many %s constraints", ext_name); ++ r = SSH_ERR_INVALID_FORMAT; + goto out; + } + *dcsp = xrecallocarray(*dcsp, *ndcsp, *ndcsp + 1, +@@ -1252,6 +1254,7 @@ + } + if (*certs != NULL) { + error_f("%s already set", ext_name); ++ r = SSH_ERR_INVALID_FORMAT; + goto out; + } + if ((r = sshbuf_get_u8(m, &v)) != 0 || +@@ -1263,6 +1266,7 @@ + while (sshbuf_len(b) != 0) { + if (*ncerts >= AGENT_MAX_EXT_CERTS) { + error_f("too many %s constraints", ext_name); ++ r = SSH_ERR_INVALID_FORMAT; + goto out; + } + *certs = xrecallocarray(*certs, *ncerts, *ncerts + 1, +@@ -1759,6 +1763,7 @@ + /* record new key/sid */ + if (e->nsession_ids >= AGENT_MAX_SESSION_IDS) { + error_f("too many session IDs recorded"); ++ r = -1; + goto out; + } + e->session_ids = xrecallocarray(e->session_ids, e->nsession_ids, +--- crypto/openssh/ssh-sk-client.c.orig ++++ crypto/openssh/ssh-sk-client.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: ssh-sk-client.c,v 1.12 2022/01/14 03:34:00 djm Exp $ */ ++/* $OpenBSD: ssh-sk-client.c,v 1.13 2025/02/18 08:02:48 djm Exp $ */ + /* + * Copyright (c) 2019 Google LLC + * +@@ -439,6 +439,7 @@ + } + if ((srk = calloc(1, sizeof(*srk))) == NULL) { + error_f("calloc failed"); ++ r = SSH_ERR_ALLOC_FAIL; + goto out; + } + srk->key = key; +@@ -450,6 +451,7 @@ + if ((tmp = recallocarray(srks, nsrks, nsrks + 1, + sizeof(*srks))) == NULL) { + error_f("recallocarray keys failed"); ++ r = SSH_ERR_ALLOC_FAIL; + goto out; + } + debug_f("srks[%zu]: %s %s uidlen %zu", nsrks, +--- crypto/openssh/sshconnect2.c.orig ++++ crypto/openssh/sshconnect2.c +@@ -101,7 +101,7 @@ + options.required_rsa_size)) != 0) + fatal_r(r, "Bad server host key"); + if (verify_host_key(xxx_host, xxx_hostaddr, hostkey, +- xxx_conn_info) == -1) ++ xxx_conn_info) != 0) + fatal("Host key verification failed."); + return 0; + } +@@ -700,6 +700,7 @@ + + if ((pktype = sshkey_type_from_name(pkalg)) == KEY_UNSPEC) { + debug_f("server sent unknown pkalg %s", pkalg); ++ r = SSH_ERR_INVALID_FORMAT; + goto done; + } + if ((r = sshkey_from_blob(pkblob, blen, &key)) != 0) { +@@ -710,6 +711,7 @@ + error("input_userauth_pk_ok: type mismatch " + "for decoded key (received %d, expected %d)", + key->type, pktype); ++ r = SSH_ERR_INVALID_FORMAT; + goto done; + } + +@@ -729,6 +731,7 @@ + SSH_FP_DEFAULT); + error_f("server replied with unknown key: %s %s", + sshkey_type(key), fp == NULL ? "<ERROR>" : fp); ++ r = SSH_ERR_INVALID_FORMAT; + goto done; + } + ident = format_identity(id); +--- crypto/openssh/sshsig.c.orig ++++ crypto/openssh/sshsig.c +@@ -874,6 +874,7 @@ + } + if ((principals = sshbuf_dup_string(nprincipals)) == NULL) { + error_f("buffer error"); ++ r = SSH_ERR_ALLOC_FAIL; + goto out; + } + /* success */ +--- crypto/openssh/version.h.orig ++++ crypto/openssh/version.h +@@ -5,4 +5,4 @@ + #define SSH_PORTABLE "p1" + #define SSH_RELEASE SSH_VERSION SSH_PORTABLE + +-#define SSH_VERSION_FREEBSD "FreeBSD-20240806" ++#define SSH_VERSION_FREEBSD "FreeBSD-20250219" diff --git a/website/static/security/patches/SA-25:05/openssh.patch.asc b/website/static/security/patches/SA-25:05/openssh.patch.asc new file mode 100644 index 0000000000..9aa682debb --- /dev/null +++ b/website/static/security/patches/SA-25:05/openssh.patch.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEthUnfoEIffdcgYM7bljekB8AGu8FAme37RsACgkQbljekB8A +Gu+RqQ/7BbQmr0mfrOW8uVnS0pPLrcsi4LAFZkHP6G0K/3aLDPqTVrzwHgkhG946 +zQNWRgRSqhc76e11DFmYmp7qjhxB+EZNURd8SXVgvKBesOhDLkkFt2BT+UGehuhf +Zehpqqhtnn8LcG3yy+mN6bS7kdUs+Wgo58fRPCEntD34sBjchuNJBXyiinLEKpn/ +Ce8La4AVhBhsdgtoySWkYQsVBkMhK0vX9nFp0yNKItiZX1NzOkCitF87LEEUZ0ks +8zFVHe+MU5yBAtqazeww1RGo60zjwTjvYAAvQKolEjc371RwYb1N1q36BuEgrLeK +iVXvE2GKYGeMNk8JW5bvnZoeQnPKKFAn6fIY5upUxznAmL6lH7nHYeM7H5VuAdTY +uo9NMdPOroBrPLHuVIFG+smtdPhwskw20TKogszeSSx+ivjKy3TBaroxF5/rtSEb +Cu+rojnKI6Bv79/oa26lmq2fp5RXCKlvU2AFsIwBqowfo+NUWi7QjW4ca/Gy+wZL +qR+5DkgVSzKxAHZs/DlMPELMhXEqJ67WhOyQmpT3Uu9xclmDUR9NoMNnrAx7urUS +WAdczlN17HdARtaS/6czSsq1Ey3zl0xeetF+XgMmcJeG4NrqV1fBxz37rn4P44+T +LA12vG3W2ZqPVgOYTGDvYJa6l15AwX5JSsVqbSZ7Rq1vh5KmdUk= +=FUbX +-----END PGP SIGNATURE-----