Package: release.debian.org Severity: normal Tags: bookworm User: release.debian....@packages.debian.org Usertags: pu X-Debbugs-Cc: secur...@debian.org, Balint Reczey <bal...@balintreczey.hu>
* New upstream release. - CVE-2024-0208: GVCP dissector crash - CVE-2024-0209: IEEE 1609.2 dissector crash - CVE-2024-2955: T.38 dissector crash (Closes: #1068111) - CVE-2024-4853: Editcap byte chopping crash - CVE-2024-4854: MONGO dissector infinite loop - CVE-2024-4855: Editcap use-after-free - CVE-2024-8250: NTLMSSP dissector crash (Closes: #1080298) - CVE-2024-8645: SPRT dissector crash * CVE-2024-0211: DOCSIS dissector crash * Closes: #1059925 This updates bookworm to the final 4.0 release, and adds the first additional CVE fix. The attached debdiff contains only the changes to debian/
diff -Nru wireshark-4.0.11/debian/changelog wireshark-4.0.17/debian/changelog --- wireshark-4.0.11/debian/changelog 2023-11-17 14:38:45.000000000 +0200 +++ wireshark-4.0.17/debian/changelog 2024-09-30 10:55:30.000000000 +0300 @@ -1,3 +1,20 @@ +wireshark (4.0.17-0+deb12u1) bookworm; urgency=medium + + * Non-maintainer upload. + * New upstream release. + - CVE-2024-0208: GVCP dissector crash + - CVE-2024-0209: IEEE 1609.2 dissector crash + - CVE-2024-2955: T.38 dissector crash (Closes: #1068111) + - CVE-2024-4853: Editcap byte chopping crash + - CVE-2024-4854: MONGO dissector infinite loop + - CVE-2024-4855: Editcap use-after-free + - CVE-2024-8250: NTLMSSP dissector crash (Closes: #1080298) + - CVE-2024-8645: SPRT dissector crash + * CVE-2024-0211: DOCSIS dissector crash + * Closes: #1059925 + + -- Adrian Bunk <b...@debian.org> Mon, 30 Sep 2024 10:55:30 +0300 + wireshark (4.0.11-1~deb12u1) bookworm-security; urgency=medium * New upstream version diff -Nru wireshark-4.0.11/debian/libwireshark16.symbols wireshark-4.0.17/debian/libwireshark16.symbols --- wireshark-4.0.11/debian/libwireshark16.symbols 2023-11-17 14:38:45.000000000 +0200 +++ wireshark-4.0.17/debian/libwireshark16.symbols 2024-09-30 10:55:30.000000000 +0300 @@ -273,6 +273,7 @@ decode_zcl_time_in_100ms@Base 2.5.2 decode_zcl_time_in_minutes@Base 2.5.2 decode_zcl_time_in_seconds@Base 2.5.2 + decrement_dissection_depth@Base 4.0.17-0+deb12u1~ delete_itu_tcap_subdissector@Base 1.9.1 deregister_depend_dissector@Base 2.1.0 destroy_print_stream@Base 1.12.0~rc1 @@ -969,6 +970,7 @@ ieee80211_supported_rates_vals_ext@Base 1.99.1 ieee802a_add_oui@Base 1.9.1 in_cksum@Base 1.9.1 + increment_dissection_depth@Base 4.0.17-0+deb12u1~ init_srt_table@Base 1.99.8 init_srt_table_row@Base 1.99.8 ip_checksum@Base 1.99.0 diff -Nru wireshark-4.0.11/debian/libwiretap13.symbols wireshark-4.0.17/debian/libwiretap13.symbols --- wireshark-4.0.11/debian/libwiretap13.symbols 2023-11-17 14:38:45.000000000 +0200 +++ wireshark-4.0.17/debian/libwiretap13.symbols 2024-09-30 10:55:30.000000000 +0300 @@ -20,6 +20,7 @@ open_routines@Base 1.12.0~rc1 pcapng_process_options@Base 3.5.0 pcapng_process_bytes_option@Base 3.5.0 + pcapng_process_int64_option@Base 4.0.17-0+deb12u1~ pcapng_process_string_option@Base 3.5.0 pcapng_process_timestamp_option@Base 3.5.0 pcapng_process_uint8_option@Base 3.5.0 @@ -33,6 +34,9 @@ wtap_block_add_bytes_option@Base 3.5.0 wtap_block_add_bytes_option_borrow@Base 3.5.0 wtap_block_add_if_filter_option@Base 3.5.0 + wtap_block_add_int32_option@Base 4.0.17-0+deb12u1~ + wtap_block_add_int64_option@Base 4.0.17-0+deb12u1~ + wtap_block_add_int8_option@Base 4.0.17-0+deb12u1~ wtap_block_add_ipv4_option@Base 2.1.2 wtap_block_add_ipv6_option@Base 2.1.2 wtap_block_add_nflx_custom_option@Base 3.5.0 @@ -43,12 +47,17 @@ wtap_block_add_uint64_option@Base 2.1.2 wtap_block_add_uint8_option@Base 2.1.2 wtap_block_array_free@Base 2.1.2 + wtap_block_array_ref@Base 4.0.17-0+deb12u1~ + wtap_block_array_unref@Base 4.0.17-0+deb12u1~ wtap_block_copy@Base 2.1.2 wtap_block_count_option@Base 3.5.0 wtap_block_create@Base 2.1.2 wtap_block_foreach_option@Base 2.1.2 wtap_block_get_bytes_option_value@Base 3.5.0 wtap_block_get_if_filter_option_value@Base 3.5.0 + wtap_block_get_int32_option_value@Base 4.0.17-0+deb12u1~ + wtap_block_get_int64_option_value@Base 4.0.17-0+deb12u1~ + wtap_block_get_int8_option_value@Base 4.0.17-0+deb12u1~ wtap_block_get_ipv4_option_value@Base 2.1.2 wtap_block_get_ipv6_option_value@Base 2.1.2 wtap_block_get_mandatory_data@Base 2.1.2 @@ -67,6 +76,9 @@ wtap_block_remove_option@Base 2.2.0 wtap_block_set_bytes_option_value@Base 3.5.0 wtap_block_set_if_filter_option_value@Base 3.5.0 + wtap_block_set_int32_option_value@Base 4.0.17-0+deb12u1~ + wtap_block_set_int64_option_value@Base 4.0.17-0+deb12u1~ + wtap_block_set_int8_option_value@Base 4.0.17-0+deb12u1~ wtap_block_set_ipv4_option_value@Base 2.1.2 wtap_block_set_ipv6_option_value@Base 2.1.2 wtap_block_set_nth_bytes_option_value@Base 3.5.0 diff -Nru wireshark-4.0.11/debian/patches/0001-DOCSIS-Extended-EH-Elements-are-not-recursive.patch wireshark-4.0.17/debian/patches/0001-DOCSIS-Extended-EH-Elements-are-not-recursive.patch --- wireshark-4.0.11/debian/patches/0001-DOCSIS-Extended-EH-Elements-are-not-recursive.patch 1970-01-01 02:00:00.000000000 +0200 +++ wireshark-4.0.17/debian/patches/0001-DOCSIS-Extended-EH-Elements-are-not-recursive.patch 2024-09-30 10:55:30.000000000 +0300 @@ -0,0 +1,237 @@ +From fba14cbf9893338a9d068e59e169b564eb7efd51 Mon Sep 17 00:00:00 2001 +From: John Thacker <johnthac...@gmail.com> +Date: Mon, 1 Jan 2024 09:06:25 -0500 +Subject: DOCSIS: Extended EH Elements are not recursive + +Extended EH Elements, which are still not defined as of DOCSIS 4.0 +and must be ignored (CM-SP-MULPIv4.0-I08-231211), are not recursive +but instead have a full byte each for type and length instead of +a nibble, allowing specifying more than 15 extended header types or +extended header types with length longer than 15. + +Increment the position for the first type/length byte to make the +logic more straightforward. + +Part of #19557 + +(backported from commit 77b0583568836554bd51ee8fde54ba5a3d000c0e) +--- + epan/dissectors/packet-docsis.c | 105 ++++++++++++++++++-------------- + 1 file changed, 59 insertions(+), 46 deletions(-) + +diff --git a/epan/dissectors/packet-docsis.c b/epan/dissectors/packet-docsis.c +index 4d886db03a..a91704ab5e 100644 +--- a/epan/dissectors/packet-docsis.c ++++ b/epan/dissectors/packet-docsis.c +@@ -108,6 +108,8 @@ static int hf_docsis_len = -1; + static int hf_docsis_eh_type = -1; + static int hf_docsis_eh_len = -1; + static int hf_docsis_eh_val = -1; ++static int hf_docsis_ehx_type = -1; ++static int hf_docsis_ehx_len = -1; + static int hf_docsis_frag_rsvd = -1; + static int hf_docsis_frag_first = -1; + static int hf_docsis_frag_last = -1; +@@ -312,7 +314,7 @@ dissect_ehdr (tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, gboolean * + } + + eh_length_item = proto_tree_add_item (ehdr_tree, hf_docsis_eh_len, tvb, pos, 1, ENC_BIG_ENDIAN); +- ++ pos++; + + switch ((type >> 4) & 0x0F) + { +@@ -320,8 +322,8 @@ dissect_ehdr (tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, gboolean * + /* Request: Minislots Requested */ + if (len == 3) + { +- proto_tree_add_item(ehdr_tree, hf_docsis_mini_slots, tvb, pos + 1, 1, ENC_NA); +- proto_tree_add_item(ehdr_tree, hf_docsis_sid, tvb, pos + 2, 2, ENC_BIG_ENDIAN); ++ proto_tree_add_item(ehdr_tree, hf_docsis_mini_slots, tvb, pos, 1, ENC_NA); ++ proto_tree_add_item(ehdr_tree, hf_docsis_sid, tvb, pos + 1, 2, ENC_BIG_ENDIAN); + } + else + { +@@ -333,7 +335,7 @@ dissect_ehdr (tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, gboolean * + /* Deprecated in DOCSIS 3.1 */ + if (len == 2) + { +- proto_tree_add_item(ehdr_tree, hf_docsis_sid, tvb, pos + 1, 2, ENC_BIG_ENDIAN); ++ proto_tree_add_item(ehdr_tree, hf_docsis_sid, tvb, pos, 2, ENC_BIG_ENDIAN); + } + else + { +@@ -343,110 +345,111 @@ dissect_ehdr (tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, gboolean * + break; + case EH_BP_UP: + /* Upstream Privacy EH Element or Upstream Privacy with fragmentation */ +- proto_tree_add_item (ehdr_tree, hf_docsis_key_seq, tvb, pos + 1, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_key_seq, tvb, pos, 1, + ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ver, tvb, pos + 1, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ver, tvb, pos, 1, + ENC_BIG_ENDIAN); +- proto_tree_add_item_ret_boolean (ehdr_tree, hf_docsis_bpi_en, tvb, pos + 2, 1, ++ proto_tree_add_item_ret_boolean (ehdr_tree, hf_docsis_bpi_en, tvb, pos + 1, 1, + ENC_BIG_ENDIAN, is_encrypted); +- proto_tree_add_item (ehdr_tree, hf_docsis_toggle_bit, tvb, pos + 2, ++ proto_tree_add_item (ehdr_tree, hf_docsis_toggle_bit, tvb, pos + 1, + 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_sid, tvb, pos + 2, 2, ++ proto_tree_add_item (ehdr_tree, hf_docsis_sid, tvb, pos + 1, 2, + ENC_BIG_ENDIAN); +- frag_sid = tvb_get_guint8 (tvb, pos+2) & 0xCFFF; +- proto_tree_add_item (ehdr_tree, hf_docsis_mini_slots, tvb, pos + 4, ++ frag_sid = tvb_get_guint8 (tvb, pos+1) & 0xCFFF; ++ proto_tree_add_item (ehdr_tree, hf_docsis_mini_slots, tvb, pos + 3, + 1, ENC_BIG_ENDIAN); + if (pinfo->fragmented) + { +- proto_tree_add_item (ehdr_tree, hf_docsis_frag_rsvd, tvb, pos+5, ++ proto_tree_add_item (ehdr_tree, hf_docsis_frag_rsvd, tvb, pos+4, + 1, ENC_BIG_ENDIAN); +- frag_flags = tvb_get_guint8 (tvb, pos+5) & 0x30; +- proto_tree_add_item (ehdr_tree, hf_docsis_frag_first, tvb, pos+5, ++ frag_flags = tvb_get_guint8 (tvb, pos+4) & 0x30; ++ proto_tree_add_item (ehdr_tree, hf_docsis_frag_first, tvb, pos+4, + 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_frag_last, tvb, pos+5, ++ proto_tree_add_item (ehdr_tree, hf_docsis_frag_last, tvb, pos+4, + 1, ENC_BIG_ENDIAN); +- frag_seq = tvb_get_guint8 (tvb, pos+5) & 0x0F; +- proto_tree_add_item (ehdr_tree, hf_docsis_frag_seq, tvb, pos+5, ++ frag_seq = tvb_get_guint8 (tvb, pos+4) & 0x0F; ++ proto_tree_add_item (ehdr_tree, hf_docsis_frag_seq, tvb, pos+4, + 1, ENC_BIG_ENDIAN); + } + break; + case EH_BP_DOWN: + /* Downstream Privacy EH Element */ +- proto_tree_add_item (ehdr_tree, hf_docsis_key_seq, tvb, pos + 1, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_key_seq, tvb, pos, 1, + ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ver, tvb, pos + 1, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ver, tvb, pos, 1, + ENC_BIG_ENDIAN); +- proto_tree_add_item_ret_boolean (ehdr_tree, hf_docsis_bpi_en, tvb, pos + 2, 1, ++ proto_tree_add_item_ret_boolean (ehdr_tree, hf_docsis_bpi_en, tvb, pos + 1, 1, + ENC_BIG_ENDIAN, is_encrypted); +- proto_tree_add_item (ehdr_tree, hf_docsis_toggle_bit, tvb, pos + 2, ++ proto_tree_add_item (ehdr_tree, hf_docsis_toggle_bit, tvb, pos + 1, + 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_said, tvb, pos + 2, 2, ++ proto_tree_add_item (ehdr_tree, hf_docsis_said, tvb, pos + 1, 2, + ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_reserved, tvb, pos + 4, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_reserved, tvb, pos + 3, 1, + ENC_BIG_ENDIAN); + break; + case EH_SFLOW_HDR_DOWN: + /* Deprecated in DOCSIS 3.1, was Downstream Service Flow EH Element in earlier revisions */ + case EH_SFLOW_HDR_UP: + /* Deprecated in DOCSIS 3.1, was Upstream Service Flow EH Element in earlier revisions */ +- proto_tree_add_item(ehdr_tree, hf_docsis_ehdr_phsi, tvb, pos+1, 1, ENC_BIG_ENDIAN); ++ proto_tree_add_item(ehdr_tree, hf_docsis_ehdr_phsi, tvb, pos, 1, ENC_BIG_ENDIAN); + + if (len == 2) + { +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_qind, tvb, pos+2, 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_grants, tvb, pos+2, 1, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_qind, tvb, pos+1, 1, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_grants, tvb, pos+1, 1, ENC_BIG_ENDIAN); + } + break; + case EH_BP_UP2: + /* Upstream Privacy EH Element, version 2, with no piggyback request */ +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_key_seq, tvb, pos + 1, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_key_seq, tvb, pos, 1, + ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_ver, tvb, pos + 1, 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_ver, tvb, pos, 1, + ENC_BIG_ENDIAN); +- proto_tree_add_item_ret_boolean (ehdr_tree, hf_docsis_ehdr_bpup2_bpi_en, tvb, pos + 2, 1, ++ proto_tree_add_item_ret_boolean (ehdr_tree, hf_docsis_ehdr_bpup2_bpi_en, tvb, pos + 1, 1, + ENC_BIG_ENDIAN, is_encrypted); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_toggle_bit, tvb, pos + 2, ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_toggle_bit, tvb, pos + 1, + 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_sid, tvb, pos + 2, 2, ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_bpup2_sid, tvb, pos + 1, 2, + ENC_BIG_ENDIAN); + break; + case EH_DS_SERVICE: + /* Downstream Service EH Element */ +- proto_tree_add_item(ehdr_tree, hf_docsis_ehdr_ds_traffic_pri, tvb, pos+1, 1, ENC_BIG_ENDIAN); ++ proto_tree_add_item(ehdr_tree, hf_docsis_ehdr_ds_traffic_pri, tvb, pos, 1, ENC_BIG_ENDIAN); + + if (len == 3) + { +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_dsid, tvb, pos+1, 3, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_dsid, tvb, pos, 3, ENC_BIG_ENDIAN); + } + + if (len == 5) + { +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_seq_chg_cnt, tvb, pos+1, 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_dsid, tvb, pos+1, 3, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_pkt_seq_num, tvb, pos+4, 2, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_seq_chg_cnt, tvb, pos, 1, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_dsid, tvb, pos, 3, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_ds_pkt_seq_num, tvb, pos+3, 2, ENC_BIG_ENDIAN); + } + break; + case EH_PATH_VERIFY: + /* Path Verify EH Element */ + if (len == 5) + { +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_pv_st_refpt, tvb, pos+1, 1, ENC_BIG_ENDIAN); +- proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_pv_timestamp, tvb, pos+2, 4, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_pv_st_refpt, tvb, pos, 1, ENC_BIG_ENDIAN); ++ proto_tree_add_item (ehdr_tree, hf_docsis_ehdr_pv_timestamp, tvb, pos+1, 4, ENC_BIG_ENDIAN); + } + break; + case EH_EXTENDED: +- /* Extended EH Element, one or more Sub EH fields may follow; simply recurse */ +- { +- tvbuff_t *subset = tvb_new_subset_remaining(tvb, pos); +- dissect_ehdr (subset, ehdr_tree, pinfo, is_encrypted); +- } +- break; ++ /* Extended EH Element, ignore eh_len */ ++ proto_tree_add_item(ehdr_tree, hf_docsis_ehx_type, tvb, pos, 1, ENC_NA); ++ pos++; ++ proto_tree_add_item(ehdr_tree, hf_docsis_ehx_len, tvb, pos, 1, ENC_NA); ++ len = tvb_get_guint8(tvb, pos); ++ pos++; ++ /* FALLTHROUGH */ + default: + if (len > 0) +- proto_tree_add_item (ehdr_tree, hf_docsis_eh_val, tvb, pos + 1, ++ proto_tree_add_item (ehdr_tree, hf_docsis_eh_val, tvb, pos, + len, ENC_NA); + } +- pos += len + 1; ++ pos += len; + } + + return; +@@ -953,6 +956,16 @@ proto_register_docsis (void) + FT_BYTES, BASE_NONE, NULL, 0x0, + "TLV Value", HFILL} + }, ++ {&hf_docsis_ehx_type, ++ {"Extended Type", "docsis.ehdr.ehx_type", ++ FT_UINT8, BASE_DEC, NULL, 0x0, ++ "TLV Type", HFILL} ++ }, ++ {&hf_docsis_ehx_len, ++ {"Extended Length", "docsis.ehdr.ehx_len", ++ FT_UINT8, BASE_DEC, NULL, 0x0, ++ "TLV Len", HFILL} ++ }, + {&hf_docsis_frag_rsvd, + {"Reserved", "docsis.frag_rsvd", + FT_UINT8, BASE_DEC, NULL, 0xC0, +-- +2.30.2 + diff -Nru wireshark-4.0.11/debian/patches/series wireshark-4.0.17/debian/patches/series --- wireshark-4.0.11/debian/patches/series 2023-11-17 14:38:45.000000000 +0200 +++ wireshark-4.0.17/debian/patches/series 2024-09-30 10:55:30.000000000 +0300 @@ -1,2 +1,3 @@ 09_idl2wrs.patch 0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch +0001-DOCSIS-Extended-EH-Elements-are-not-recursive.patch