CVE-2026-90099
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net/sched: przydział filtrów klasyfikatora kont do memcg
Alokacje w ścieżkach klasyfikatora tc *_change() (obiekty filtrujące,
liczniki na procesor i dane pomocnicze na filtr) używają zwykłego GFP_KERNEL bez
__GFP_ACCOUNT, umożliwiając nieuprzywilejowanym użytkownikom przypinanie pamięci jądra na zewnątrz
ładowanie memcg. Współużytkowana tablica akcji tcf_exts_init_ex() w
cls_api.c również nie został naładowany; ta łatka zamyka to wraz z
pozostałe przydziały obiektów filtrujących/percpu/aux na klasyfikator
nieuwzględnione.
Dodaj GFP_KERNEL_ACCOUNT do:
- współdzielona tablica akcji tcf_exts_init_ex() (cls_api.c), wspólna dla wszystkich
filtr każdego klasyfikatora (32 wskaźniki, 256 bajtów);
- obiekt filtra, licznik na procesor i przydziały pomocnicze na filtr
cls_basic, cls_bpf, cls_cgroup, cls_flow, cls_flower, cls_fw,
cls_matchall, cls_route i cls_u32;
- alokacja węzła węzła u32_init_knode() (cls_u32.c), która
przydziela tę samą strukturę tc_u_knode + sel.keys przy każdej zamianie pliku an
istniejący węzeł i został pominięty podczas konwersji polegającej tylko na utworzeniu ścieżki.
Napraw także ścieżkę błędu cls_basic: basic_change() wstawia fnew do pliku
IDR przed przydzieleniem licznika na procesor. Jeśli alloc_percpu() zakończy się niepowodzeniem
błędna ścieżka kfree'd fnew bez idr_remove, pozostawiając zwisający wskaźnik
w IDR. W przypadku GFP_KERNEL_ACCOUNT alokacja na procesor staje się niemożliwa
na żądanie (memcg w memory.max), dzięki czemu atakujący może osiągnąć martwą ścieżkę
i trwałe spalenie uchwytu. Dodaj idr_remove na percpu
ścieżka awarii, zgodna ze wzorcem ścieżki awarii basic_set_parms.
Uwaga: [email protected] udostępnił dokument dotyczący basic_cls, ale było to łatwe
rozszerzyć na inne klasyfikatory.
Warunki odtworzenia błędu:
- CONFIG_NET_SCHED, CONFIG_NET_CLS_* (używany klasyfikator),
CONFIG_NET_CLS_ACT, CONFIG_MEMCG, CONFIG_USER_NS, CONFIG_NET_NS.
- Nieuprzywilejowany użytkownik w nowej przestrzeni nazw użytkownik+sieć (unshare -Urn),
lub zrootuj za pomocą CAP_NET_ADMIN.
- Utwórz dużą liczbę filtrów tc (np. filtr tc dodaj dev lo
ingress... <classifier> ...) podczas oglądania grupy cgroup ograniczonej do memcg:
płyta systemowa rośnie znacznie szybciej niż pamięć.bieżąca, przypinająca jądro
ładowanie pamięci zewnętrznej memcg.
>_ 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