Your message dated Sat, 10 Feb 2024 13:11:20 +0000 with message-id <E1rYn8a-002yaC-Hf@coccia.debian.org> and subject line Released with 12.5 has caused the Debian Bug report #1059694, regarding bookworm-pu: package filezilla/filezilla_3.63.0-1+deb12u3 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 1059694: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1059694 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: submit@bugs.debian.org
- Subject: bookworm-pu: package filezilla/filezilla_3.63.0-1+deb12u3
- From: Phil Wyett <philip.wyett@kathenas.org>
- Date: Sat, 30 Dec 2023 08:25:29 +0000
- Message-id: <08f4b98f19533cac0133b1f167bd3aa151cd2611.camel@kathenas.org>
- Reply-to: philip.wyett@kathenas.org
Package: release.debian.org Severity: normal Tags: bookworm User: release.debian.org@packages.debian.org Usertags: pu X-Debbugs-Cc: filezilla@packages.debian.org Control: affects -1 + src:filezilla [ Reason ] This will address the no-DSA CVE-2023-48795. The vulnerability has been fixed in sid and trixie. https://security-tracker.debian.org/tracker/CVE-2023-48795 [ Impact ] The impact of putty itself and by proxy also for the SFTP support in filezilla is fortunately very limited : At most an attacker could use abuse terrapin to force the use of SHA1 as negotiated during the server-sig-algs exchange: https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-terrapin.html [ Tests ] The fix has been extensively tested by upstream. I have built affected filezilla versions with and without patching and performed a variety of connection, transfer and general use tests to be sure this update will work as users expect. [ Risks ] The updating of the embedded putty within filezilla from upstream commits was very straightforward and is minimal risk. [ Checklist ] [X] *all* changes are documented in the d/changelog [X] I reviewed all changes and I approve them [X] attach debdiff against the package in (old)stable [X] the issue is verified as fixed in unstable [ Other info ] None. Regards Phil -- Playing the game for the games sake. Web: * Debian Wiki: https://wiki.debian.org/PhilWyett * Website: https://kathenas.org * Social Debian: https://pleroma.debian.social/kathenas/ * Social Instagram: https://www.instagram.com/kathenasorg/diff -Nru filezilla-3.63.0/debian/changelog filezilla-3.63.0/debian/changelog --- filezilla-3.63.0/debian/changelog 2023-08-14 11:48:50.000000000 +0100 +++ filezilla-3.63.0/debian/changelog 2023-12-22 11:35:10.000000000 +0000 @@ -1,3 +1,10 @@ +filezilla (3.63.0-1+deb12u3) bookworm; urgency=medium + + * [CVE-2023-48795] - Add patch: CVE-2023-48795.patch. + - Ref: https://security-tracker.debian.org/tracker/CVE-2023-48795 + + -- Phil Wyett <philip.wyett@kathenas.org> Fri, 22 Dec 2023 11:35:10 +0000 + filezilla (3.63.0-1+deb12u2) bookworm; urgency=medium * Add patch: 0003-crash-when-removing-filetypes-from-list.patch (Closes: #1043556) diff -Nru filezilla-3.63.0/debian/patches/CVE-2023-48795.patch filezilla-3.63.0/debian/patches/CVE-2023-48795.patch --- filezilla-3.63.0/debian/patches/CVE-2023-48795.patch 1970-01-01 01:00:00.000000000 +0100 +++ filezilla-3.63.0/debian/patches/CVE-2023-48795.patch 2023-12-22 11:35:10.000000000 +0000 @@ -0,0 +1,285 @@ +Description: Cherry pick and modify upstream fix for CVE-2023-48795. + +Picked from upstream commits: + +filezilla: https://svn.filezilla-project.org/filezilla?view=revision&revision=11047 +filezilla: https://svn.filezilla-project.org/filezilla?view=revision&revision=11048 +filezilla: https://svn.filezilla-project.org/filezilla?view=revision&revision=11049 +filezilla: https://svn.filezilla-project.org/filezilla?view=revision&revision=11051 + +Author: Phil Wyett <philip.wyett@kathenas.org> + +================================================================================ +--- a/src/putty/ssh.h.orig 2021-06-29 09:59:07.000000000 +0100 ++++ b/src/putty/ssh.h 2023-12-22 11:23:42.211363089 +0000 +@@ -1684,6 +1684,7 @@ + alloc_channel_id_general(tree, offsetof(type, localid))) + + void add_to_commasep(strbuf *buf, const char *data); ++void add_to_commasep_pl(strbuf *buf, ptrlen data); + bool get_commasep_word(ptrlen *list, ptrlen *word); + + int verify_ssh_manual_host_key(Conf *conf, char **fingerprints, ssh_key *key); +--- a/src/putty/ssh2bpp.c.orig 2021-06-29 09:59:07.000000000 +0100 ++++ b/src/putty/ssh2bpp.c 2023-12-22 09:48:54.045561126 +0000 +@@ -115,7 +115,8 @@ + BinaryPacketProtocol *bpp, + const ssh_cipheralg *cipher, const void *ckey, const void *iv, + const ssh2_macalg *mac, bool etm_mode, const void *mac_key, +- const ssh_compression_alg *compression, bool delayed_compression) ++ const ssh_compression_alg *compression, bool delayed_compression, ++ bool reset_sequence_number) + { + struct ssh2_bpp_state *s; + assert(bpp->vt == &ssh2_bpp_vtable); +@@ -155,6 +156,9 @@ + s->out.mac = NULL; + } + ++ if (reset_sequence_number) ++ s->out.sequence = 0; ++ + if (delayed_compression && !s->seen_userauth_success) { + s->out.pending_compression = compression; + s->out_comp = NULL; +@@ -179,7 +183,8 @@ + BinaryPacketProtocol *bpp, + const ssh_cipheralg *cipher, const void *ckey, const void *iv, + const ssh2_macalg *mac, bool etm_mode, const void *mac_key, +- const ssh_compression_alg *compression, bool delayed_compression) ++ const ssh_compression_alg *compression, bool delayed_compression, ++ bool reset_sequence_number) + { + struct ssh2_bpp_state *s; + assert(bpp->vt == &ssh2_bpp_vtable); +@@ -237,6 +242,9 @@ + * start consuming the input data again. */ + s->pending_newkeys = false; + ++ if (reset_sequence_number) ++ s->in.sequence = 0; ++ + /* And schedule a run of handle_input, in case there's already + * input data in the queue. */ + queue_idempotent_callback(&s->bpp.ic_in_raw); +--- a/src/putty/ssh2transport.c.orig 2021-06-29 09:59:07.000000000 +0100 ++++ b/src/putty/ssh2transport.c 2023-12-22 10:01:13.199216745 +0000 +@@ -26,6 +26,13 @@ + &ssh_hmac_sha1_buggy, &ssh_hmac_sha1_96_buggy, &ssh_hmac_md5 + }; + ++const static ptrlen ext_info_c = PTRLEN_DECL_LITERAL("ext-info-c"); ++const static ptrlen ext_info_s = PTRLEN_DECL_LITERAL("ext-info-s"); ++const static ptrlen kex_strict_c = ++ PTRLEN_DECL_LITERAL("kex-strict-c-v00@openssh.com"); ++const static ptrlen kex_strict_s = ++ PTRLEN_DECL_LITERAL("kex-strict-s-v00@openssh.com"); ++ + static ssh_compressor *ssh_comp_none_init(void) + { + return NULL; +@@ -447,6 +454,31 @@ + { + PktIn *pktin; + ++ if (!s->enabled_incoming_crypto) { ++ /* ++ * Record the fact that we've seen any non-KEXINIT packet at ++ * the head of our queue. ++ * ++ * This enables us to check later that the initial incoming ++ * KEXINIT was the very first packet, if scanning the KEXINITs ++ * turns out to enable strict-kex mode. ++ */ ++ PktIn *pktin = pq_peek(s->ppl.in_pq); ++ if (pktin && pktin->type != SSH2_MSG_KEXINIT) ++ s->seen_non_kexinit = true; ++ ++ if (s->strict_kex) { ++ /* ++ * Also, if we're already in strict-KEX mode and haven't ++ * turned on crypto yet, don't do any actual filtering. ++ * This ensures that extraneous packets _after_ the ++ * KEXINIT will go to the main coroutine, which will ++ * complain about them. ++ */ ++ return false; ++ } ++ } ++ + while (1) { + if (ssh2_common_filter_queue(&s->ppl)) + return true; +@@ -840,10 +872,14 @@ + } + } + if (i == KEXLIST_KEX && first_time) { +- if (our_hostkeys) /* we're the server */ +- add_to_commasep(list, "ext-info-s"); +- else /* we're the client */ +- add_to_commasep(list, "ext-info-c"); ++ if (our_hostkeys) { /* we're the server */ ++ add_to_commasep_pl(list, ext_info_s); ++ add_to_commasep_pl(list, kex_strict_s); ++ ++ } else { /* we're the client */ ++ add_to_commasep_pl(list, ext_info_c); ++ add_to_commasep_pl(list, kex_strict_c); ++ } + } + put_stringsb(pktout, list); + } +@@ -853,15 +889,23 @@ + put_stringz(pktout, ""); + } + ++static bool kexinit_keyword_found(ptrlen list, ptrlen keyword) ++{ ++ for (ptrlen word; get_commasep_word(&list, &word) ;) ++ if (ptrlen_eq_ptrlen(word, keyword)) ++ return true; ++ return false; ++} ++ + static bool ssh2_scan_kexinits( +- ptrlen client_kexinit, ptrlen server_kexinit, ++ ptrlen client_kexinit, ptrlen server_kexinit, bool we_are_server, + struct kexinit_algorithm kexlists[NKEXLIST][MAXKEXLIST], + const ssh_kex **kex_alg, const ssh_keyalg **hostkey_alg, + transport_direction *cs, transport_direction *sc, + bool *warn_kex, bool *warn_hk, bool *warn_cscipher, bool *warn_sccipher, + Ssh *ssh, bool *ignore_guess_cs_packet, bool *ignore_guess_sc_packet, + int *n_server_hostkeys, int server_hostkeys[MAXKEXLIST], unsigned *hkflags, +- bool *can_send_ext_info) ++ bool *can_send_ext_info, bool first_time, bool *strict_kex) + { + BinarySource client[1], server[1]; + int i; +@@ -1064,16 +1108,18 @@ + /* + * Check whether the other side advertised support for EXT_INFO. + */ +- { +- ptrlen extinfo_advert = +- (server_hostkeys ? PTRLEN_LITERAL("ext-info-c") : +- PTRLEN_LITERAL("ext-info-s")); +- ptrlen list = (server_hostkeys ? clists[KEXLIST_KEX] : +- slists[KEXLIST_KEX]); +- for (ptrlen word; get_commasep_word(&list, &word) ;) +- if (ptrlen_eq_ptrlen(word, extinfo_advert)) +- *can_send_ext_info = true; +- } ++ if (kexinit_keyword_found( ++ we_are_server ? clists[KEXLIST_KEX] : slists[KEXLIST_KEX], ++ we_are_server ? ext_info_c : ext_info_s)) ++ *can_send_ext_info = true; ++ ++ /* ++ * Check whether the other side advertised support for kex-strict. ++ */ ++ if (first_time && kexinit_keyword_found( ++ we_are_server ? clists[KEXLIST_KEX] : slists[KEXLIST_KEX], ++ we_are_server ? kex_strict_c : kex_strict_s)) ++ *strict_kex = true; + + if (server_hostkeys) { + /* +@@ -1242,14 +1288,28 @@ + + if (!ssh2_scan_kexinits( + ptrlen_from_strbuf(s->client_kexinit), +- ptrlen_from_strbuf(s->server_kexinit), ++ ptrlen_from_strbuf(s->server_kexinit), s->ssc != NULL, + s->kexlists, &s->kex_alg, &s->hostkey_alg, s->cstrans, + s->sctrans, &s->warn_kex, &s->warn_hk, &s->warn_cscipher, + &s->warn_sccipher, s->ppl.ssh, NULL, &s->ignorepkt, &nhk, hks, +- &s->hkflags, &s->can_send_ext_info)) ++ &s->hkflags, &s->can_send_ext_info, !s->got_session_id, ++ &s->strict_kex)) + return; /* false means a fatal error function was called */ + + /* ++ * If we've just turned on strict kex mode, say so, and ++ * retrospectively fault any pre-KEXINIT extraneous packets. ++ */ ++ if (!s->got_session_id && s->strict_kex) { ++ ppl_logevent("Enabling strict key exchange semantics"); ++ if (s->seen_non_kexinit) { ++ ssh_proto_error(s->ppl.ssh, "Received a packet before KEXINIT " ++ "in strict-kex mode"); ++ return; ++ } ++ } ++ ++ /* + * In addition to deciding which host key we're actually going + * to use, we should make a list of the host keys offered by + * the server which we _don't_ have cached. These will be +@@ -1438,7 +1498,9 @@ + s->ppl.bpp, + s->out.cipher, cipher_key->u, cipher_iv->u, + s->out.mac, s->out.etm_mode, mac_key->u, +- s->out.comp, s->out.comp_delayed); ++ s->out.comp, s->out.comp_delayed, ++ s->strict_kex); ++ s->enabled_outgoing_crypto = true; + + strbuf_free(cipher_key); + strbuf_free(cipher_iv); +@@ -1529,7 +1591,9 @@ + s->ppl.bpp, + s->in.cipher, cipher_key->u, cipher_iv->u, + s->in.mac, s->in.etm_mode, mac_key->u, +- s->in.comp, s->in.comp_delayed); ++ s->in.comp, s->in.comp_delayed, ++ s->strict_kex); ++ s->enabled_incoming_crypto = true; + + strbuf_free(cipher_key); + strbuf_free(cipher_iv); +--- a/src/putty/ssh2transport.h.orig 2021-06-29 09:59:07.000000000 +0100 ++++ b/src/putty/ssh2transport.h 2023-12-22 09:57:12.374747626 +0000 +@@ -186,6 +186,8 @@ + bool warned_about_no_gss_transient_hostkey; + bool got_session_id; + bool can_send_ext_info, post_newkeys_ext_info; ++ bool strict_kex, enabled_outgoing_crypto, enabled_incoming_crypto; ++ bool seen_non_kexinit; + int dlgret; + bool guessok; + bool ignorepkt; +--- a/src/putty/sshbpp.h.orig 2021-06-29 09:59:07.000000000 +0100 ++++ b/src/putty/sshbpp.h 2023-12-22 09:53:53.327065403 +0000 +@@ -138,12 +138,14 @@ + BinaryPacketProtocol *bpp, + const ssh_cipheralg *cipher, const void *ckey, const void *iv, + const ssh2_macalg *mac, bool etm_mode, const void *mac_key, +- const ssh_compression_alg *compression, bool delayed_compression); ++ const ssh_compression_alg *compression, bool delayed_compression, ++ bool reset_sequence_number); + void ssh2_bpp_new_incoming_crypto( + BinaryPacketProtocol *bpp, + const ssh_cipheralg *cipher, const void *ckey, const void *iv, + const ssh2_macalg *mac, bool etm_mode, const void *mac_key, +- const ssh_compression_alg *compression, bool delayed_compression); ++ const ssh_compression_alg *compression, bool delayed_compression, ++ bool reset_sequence_number); + + /* + * A query method specific to the interface between ssh2transport and +--- a/src/putty/sshcommon.c.orig 2021-06-29 09:59:07.000000000 +0100 ++++ b/src/putty/sshcommon.c 2023-12-22 11:20:35.839502891 +0000 +@@ -606,6 +606,13 @@ + * lists of protocol identifiers in SSH-2. + */ + ++void add_to_commasep_pl(strbuf *buf, ptrlen data) ++{ ++ if (buf->len > 0) ++ put_byte(buf, ','); ++ put_datapl(buf, data); ++} ++ + void add_to_commasep(strbuf *buf, const char *data) + { + if (buf->len > 0) diff -Nru filezilla-3.63.0/debian/patches/series filezilla-3.63.0/debian/patches/series --- filezilla-3.63.0/debian/patches/series 2023-08-14 11:47:29.000000000 +0100 +++ filezilla-3.63.0/debian/patches/series 2023-12-22 11:35:10.000000000 +0000 @@ -2,3 +2,4 @@ # 11_use-decimal-si-by-default.patch 0002-Add-patch-to-not-build-fzshellext.patch 0003-crash-when-removing-filetypes-from-list.patch +CVE-2023-48795.patchAttachment: signature.asc
Description: This is a digitally signed message part
--- End Message ---
--- Begin Message ---
- To: 1059694-done@bugs.debian.org
- Subject: Released with 12.5
- From: Jonathan Wiltshire <jmw@coccia.debian.org>
- Date: Sat, 10 Feb 2024 13:11:20 +0000
- Message-id: <E1rYn8a-002yaC-Hf@coccia.debian.org>
Version: 12.5 The upload requested in this bug has been released as part of 12.5.
--- End Message ---