CVE-2026-98550: tipc: reject invalid and unexpected GRP_ACK_MSG to prevent bc_ackers underflow

Published Oct 18, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

tipc: reject invalid and unexpected GRPACKMSG to prevent bcackers underflow

Commit 48a5fe38772b ("tipc: fix bcackers underflow on duplicate GRPACKMSG") rejected duplicate/stale ACKs in tipcgroupprotorcv() by returning early when lesseq(acked, m->bcacked).

However, that check remains incomplete in two ways:

1. When grp->bcackers is zero (e.g. on a quiet group, when replicast ACKs were not requested, or after all expected members have already acknowledged), an unexpected GRPACKMSG with acked > m->bcacked passes lesseq() and unconditionally decrements grp->bcackers. Because bcackers is a u16, this wraps to 65535, causing tipcgroupbccong() to permanently report congestion and blocking all future group broadcasts on the socket.

2. During an active broadcast round (grp->bcackers > 0), the sender transmits packet S and advances grp->bcsndnxt to S + 1. Receivers increment their expected counter to S + 1 upon consuming packet S, so the only valid ACK value for the current round is strictly acked == grp->bcsndnxt.

However, tipcgroupupdatebcmembers() initializes each member's m->bcacked to prev = grp->bcsndnxt - 1 (S - 1 before increment). This leaves a 2-sequence gap (S - 1 to S + 1) in sequence space. An incoming ACK is therefore neither rejected as duplicate nor prevented from decrementing grp->bcackers if an unexpected or stale value (such as S) is received. A member sending acked = S followed by acked = S + 1 could decrement grp->bcackers twice in the same round, prematurely clearing bcackers or underflowing it.

Fix this by: - Dropping GRPACKMSG immediately if grp->bcackers is zero. - Requiring acked == grp->bcsndnxt and rejecting duplicates where m->bcacked == acked. Because replicast broadcast rounds are strictly sequential, only grp->bcsndnxt can be acknowledged, and each member can acknowledge at most once per round.

Note that a related pre-existing issue in tipcgroupdeletemember() (where grp->bcackers decrementing to zero upon member departure does not restore grp->open or trigger a socket wakeup) will be addressed in a separate patch.

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    In TIPC group ACK handling, drop GRP_ACK_MSG immediately when grp->bc_ackers is zero; during an active broadcast round, accept only ACKs where acked == grp->bc_snd_nxt and return early for stale or duplicate ACKs where acked <= m->bc_acked.

Event History

Oct 18, 2026
CVE Published
via MITRE·03:18 PM
Data Sourced
via MITRE·03:18 PM
Description
Data Sourced
via NVD·04:17 PM
Description

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203