Odebrany

CVE-2026-98550

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

wskazówka: odrzuć nieprawidłowy i nieoczekiwany GRP_ACK_MSG, aby zapobiec niedopełnieniu bc_ackers

Zatwierdź 48a5fe38772b („wskazówka: napraw niedopełnienie bc_ackers w duplikacie
GRP_ACK_MSG”) odrzucił zduplikowane/nieaktualne potwierdzenia ACK w tipc_group_proto_rcv()
wracając wcześniej, gdy less_eq(acked, m->bc_acked).

Jednakże kontrola ta pozostaje niekompletna z dwóch powodów:

1. Gdy grp->bc_ackers ma wartość zero (np. w cichej grupie, podczas replikacji
Nie żądano potwierdzeń ACK lub wszyscy oczekiwani członkowie już to zrobili
potwierdzony), nieoczekiwany GRP_ACK_MSG z potwierdzonym > m->bc_acked
przekazuje funkcję less_eq() i bezwarunkowo zmniejsza wartość grp->bc_ackers.
Ponieważ bc_ackers to u16, zawija się do 65535, powodując
tipc_group_bc_cong(), aby trwale zgłaszać przeciążenia i blokady
wszystkie przyszłe transmisje grupowe w gnieździe.

2. Podczas aktywnej rundy rozgłoszeniowej (grp->bc_ackers > 0): nadawca
transmituje pakiet S i przekazuje grp->bc_snd_nxt do S + 1. Odbiorcy
zwiększ swój oczekiwany licznik do S + 1 po zużyciu pakietu S,
więc jedyną prawidłową wartością ACK dla bieżącej rundy jest ściśle
potwierdzony == grp->bc_snd_nxt.

Jednak tipc_group_update_bc_members() inicjuje każdego członka
m->bc_acked to prev = grp->bc_snd_nxt - 1 (S - 1 przed inkrementacją).
Pozostawia to lukę 2 sekwencji (S - 1 do S + 1) w przestrzeni sekwencji.
Przychodzące potwierdzenie nie jest zatem odrzucane jako duplikat ani nie jest odrzucane
nie można zmniejszać wartości grp->bc_ackers, jeśli jest nieoczekiwany lub nieaktualny
otrzymana zostanie wartość (taka jak S). Członek wysyłający potwierdzenie = S podążał za nim
przez acked = S + 1 może dwukrotnie zmniejszyć grp->bc_ackers w tym samym
round, przedwcześnie usuwając bc_ackers lub przepełniając go.

Napraw to poprzez:
- Natychmiastowe usunięcie GRP_ACK_MSG, jeśli grp->bc_ackers wynosi zero.
- Wymaganie acked == grp->bc_snd_nxt i odrzucanie duplikatów gdzie
m->bc_acked == potwierdzony. Ponieważ replikowane rundy transmisji są ściśle przestrzegane
sekwencyjnie, można potwierdzić tylko grp->bc_snd_nxt i każdego członka
może potwierdzić maksymalnie raz na rundę.

Zauważ, że powiązany, istniejący wcześniej problem w tipc_group_delete_member()
(gdzie grp->bc_ackers zmniejsza się do zera po odejściu członka
nie przywracaj *grp->otwórz lub wyzwalaj wybudzenie gniazda) zostanie rozwiązany
w osobnym patchu.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org