CVE-2026-19569
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
dynamic_object_create() w kernel/userspace/userspace.c obliczyła alokację zapasową dla dynamicznie alokowanego obiektu jądra jako obj_size_get(otype) + size, a dla elementów stosu wątku jako STACK_ELEMENT_DATA_SIZE(size) (zaokrąglenie plus stały narzut), bez sprawdzania któregokolwiek wyrażenia pod kątem zawijania bez znaku. Rozmiar bliski SIZE_MAX powoduje, że obliczone całkowite zawijanie ma bardzo małą wartość, więc przekazywany fragment sterty ma kilka bajtów, podczas gdy deskryptor obiektu jest nadal oznaczony pełnym żądanym typem i zarejestrowany w tabeli obiektów jądra.
Argument rozmiaru osiąga tę arytmetykę bezpośrednio z trybu użytkownika. k_object_alloc_size() jest zadeklarowana jako __syscall w include/zephyr/sys/kobject.h, jej weryfikator z_vrfy_k_object_alloc_size() w kernel/userspace/userspace_handler.c jest czystym przejściem, a z_object_alloc() sprawdza tylko typ typu — nic nie ogranicza rozmiaru. Gałąź elementów stosu jest dodatkowo dostępna poprzez wywołanie systemowe k_thread_stack_alloc() poprzez kernel/dynamic.c. Ponieważ późniejsza walidacja obiektu jądra sprawdza tylko typ obiektu i stan inicjalizacji, niewymiarowy uchwyt przekazuje K_SYSCALL_OBJ_INIT()/K_SYSCALL_OBJ_NEVER_INIT(), a pasujące init syscall (na przykład k_mutex_init(), k_sem_init() lub k_thread_create()) następnie zapisuje cały obiekt w obciętej alokacji.
Nieuprzywilejowany wątek trybu użytkownika może zatem wyzwolić zapis poza granicami w trybie nadzorcy do sterty puli zasobów jądra o rozmiarze i zawartości, którą zasadniczo kontroluje, uszkadzając metadane fragmentu sys_heap i sąsiednie obiekty jądra. W CONFIG_GEN_PRIV_STACKS gałąź stosu wątków dodatkowo przechowuje dziki wskaźnik będący pod wpływem atakującego jako uprzywilejowaną bazę stosu wątku użytkownika. Praktycznym rezultatem jest ucieczka z piaskownicy CONFIG_USERSPACE — wykonanie kodu na poziomie jądra lub przy minimalnym uszkodzeniu pamięci jądra i kompromisie systemu.
Eksploatacja wymaga CONFIG_USERSPACE wraz z CONFIG_DYNAMIC_OBJECTS (również wybranych przez CONFIG_DYNAMIC_THREAD w przestrzeni użytkownika) i wątku wywołującego z przypisaną pulą zasobów. Poprawka odrzuca oba przepełnione obliczenia i zwalnia częściowo zbudowany deskryptor.
>_ Słabości (CWE)
>_ 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