{"id":41022,"date":"2026-10-19T00:31:51","date_gmt":"2026-10-18T16:31:51","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98550"},"modified":"2026-10-19T00:31:51","modified_gmt":"2026-10-18T16:31:51","slug":"cve-2026-98550","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98550","title":{"rendered":"CVE-2026-98550 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntipc: reject invalid"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tipc: reject invalid and unexpected GRP_ACK_MSG to prevent bc_ackers underflow<\/p>\n<p>Commit 48a5fe38772b (&#8220;tipc: fix bc_ackers underflow on duplicate<br \/>\nGRP_ACK_MSG&#8221;) rejected duplicate\/stale ACKs in tipc_group_proto_rcv()<br \/>\nby returning early when less_eq(acked, m-&gt;bc_acked).<\/p>\n<p>However, that check remains incomplete in two ways:<\/p>\n<p>1. When grp-&gt;bc_ackers is zero (e.g. on a quiet group, when replicast<br \/>\n   ACKs were not requested, or after all expected members have already<br \/>\n   acknowledged), an unexpected GRP_ACK_MSG with acked &gt; m-&gt;bc_acked<br \/>\n   passes less_eq() and unconditionally decrements grp-&gt;bc_ackers.<br \/>\n   Because bc_ackers is a u16, this wraps to 65535, causing<br \/>\n   tipc_group_bc_cong() to permanently report congestion and blocking<br \/>\n   all future group broadcasts on the socket.<\/p>\n<p>2. During an active broadcast round (grp-&gt;bc_ackers &gt; 0), the sender<br \/>\n   transmits packet S and advances grp-&gt;bc_snd_nxt to S + 1. Receivers<br \/>\n   increment their expected counter to S + 1 upon consuming packet S,<br \/>\n   so the only valid ACK value for the current round is strictly<br \/>\n   acked == grp-&gt;bc_snd_nxt.<\/p>\n<p>   However, tipc_group_update_bc_members() initializes each member&#8217;s<br \/>\n   m-&gt;bc_acked to prev = grp-&gt;bc_snd_nxt &#8211; 1 (S &#8211; 1 before increment).<br \/>\n   This leaves a 2-sequence gap (S &#8211; 1 to S + 1) in sequence space.<br \/>\n   An incoming ACK is therefore neither rejected as duplicate nor<br \/>\n   prevented from decrementing grp-&gt;bc_ackers if an unexpected or stale<br \/>\n   value (such as S) is received. A member sending acked = S followed<br \/>\n   by acked = S + 1 could decrement grp-&gt;bc_ackers twice in the same<br \/>\n   round, prematurely clearing bc_ackers or underflowing it.<\/p>\n<p>Fix this by:<br \/>\n&#8211; Dropping GRP_ACK_MSG immediately if grp-&gt;bc_ackers is zero.<br \/>\n&#8211; Requiring acked == grp-&gt;bc_snd_nxt and rejecting duplicates where<br \/>\n  m-&gt;bc_acked == acked. Because replicast broadcast rounds are strictly<br \/>\n  sequential, only grp-&gt;bc_snd_nxt can be acknowledged, and each member<br \/>\n  can acknowledge at most once per round.<\/p>\n<p>Note that a related pre-existing issue in tipc_group_delete_member()<br \/>\n(where grp-&gt;bc_ackers decrementing to zero upon member departure does<br \/>\nnot restore *grp-&gt;open or trigger a socket wakeup) will be addressed<br \/>\nin a separate patch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tipc: reject invalid and unexpected GRP_ACK_MSG to prevent bc_ackers underflow<\/p>\n<p>Commit 48a5fe38772b (&#8220;tipc: fix bc_ackers underflow<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41022","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}