CVE-2026-98629
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net/sched: cls_u32: napraw aliasing IDR ręcznej obsługi tablicy mieszającej
Tabela skrótów u32 utworzona z jawnym uchwytem ('tc filter add...
uchwyt 801: dzielnik u32 N') wprowadza swój wpis IDR na surowym uchwycie, podczas gdy
ścieżki zniszczenia uwalniają go pod handle2id(uchwyt). Dwie kluczowe domeny
nie zgadzam się na uchwyty z zakresu htid 0x800..0xFFF:
handle2id() składa je z powrotem do automatycznie przydzielonej przestrzeni identyfikatora (1..0x7FF).
Dlatego tabela ręczna pozostawia wpis IDR z surowym kluczem nieosiągalny
usuń (trwały wyciek), a jego usunięcie może spowodować usunięcie wpisu idr pliku an
niepowiązany automatyczny stół na żywo. Późniejsza automatyczna alokacja może następnie rozdać:
uchwyt, który aliasuje aktywną tabelę ręczną; u32_lookup_ht() pierwsze dopasowanie
kieruje wyszukiwania i TCA_U32_LINK dla tego htid do niewłaściwej tabeli.
Wprowadź alokację ścieżki dzielnika na handle2id(uchwyt), więc alokacja i
usunięcie ma jedną kluczową domenę. Ręczny uchwyt mapujący na identyfikator
już używane jest odrzucane z opcją -ENOSPC, a automatyczne przydzielanie pomija identyfikatory
utrzymywane przy żywych stołach ręcznych.
Warunki do odtworzenia:
ip link dodaj manekina typu test0
tc qdisc dodaj dev test0 clsact
filtr tc dodaj protokół wejściowy dev test0 ip pref 1 \
uchwyt 801: dzielnik u32 16
filtr tc dodaj dev test0 protokół wejściowy ip pref 2 u32 divisor 16
tc -d filtr pokazuje wejście dewelopera test0 | grep 'fh 801:'
# bez poprawki: dwie aktywne tabele z uchwytem 0x80100000 (pref 2 root
# hnode ma automatycznie przydzielony identyfikator 1); poprawione: auto hnode przyjmuje identyfikator 2.
Testowano również z poc z żywym stołem u32 na bloku, dodaj/usuń instrukcję
tabela 'uchwyt 901: u32 dzielnik 1' dwukrotnie; niezałatane, ponowne dodanie kończy się niepowodzeniem
-ENOSPC, ponieważ surowy klucz wyciekł przy pierwszym usunięciu.
>_ Referencje
- https://git.kernel.org/stable/c/0a5f5d9e94dead312d32c366b917c64e552b72f7
- https://git.kernel.org/stable/c/0fac292d93fdb313099e98cce928b3a524c92c94
- https://git.kernel.org/stable/c/21fc07924e996e1e661268ca269c86b8d59d25b3
- https://git.kernel.org/stable/c/2f898f9ec7c73c5697ee462681e7ea6984ee1f3d
- https://git.kernel.org/stable/c/54a454c5e41f5e2cb70c8163140ce095c5d5eefd
- https://git.kernel.org/stable/c/f6696481eedfd5752b4b56eed715d0b0fe48b9c5
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