CVE-2026-19569
Təsvir
kernel/userspace/userspace.c faylındakı dynamic_object_create() funksiyası dinamik şəkildə ayrılmış nüvə obyekti üçün alt ayrılmanı obj_size_get(otype) + size olaraq, thread stek elementləri üçün isə STACK_ELEMENT_DATA_SIZE(size) (yuvarlaqlaşdırılmış dəyər və sabit xərclər) kimi hesablayırdı və hər iki ifadəni işarəsizlemə dövrü (unsigned wrap-around) üçün yoxlamırdı. SIZE_MAX dəyərinə yaxın bir ölçü (size), hesablanmış cəmin çox kiçik bir dəyərə çevrilməsinə səbəb olur, beləliklə, təqdim edilən heap hissəsi cəmi bir neçə bayt olsa da, obyekt deskriptoru hələ də tam sorğu edilən tip ilə etiketlənir və nüvə obyekt cədvəlində qeydiyyata alınır. Ölçü arqumenti istifadəçi rejimindən (user mode) birbaşa həmin riyazi əməliyyata çatır. include/zephyr/sys/kobject.h faylında k_object_alloc_size() __syscall olaraq elan edilmişdir, onun kernel/userspace/userspace_handler.c faylındakı verifikatoru z_vrfy_k_object_alloc_size() sadə ötürmə funksiyasıdır və z_object_alloc() yalnız otype-nin diapazonunu yoxlayır — size üçün heç bir məhdudiyyət tətbiq edilmir. Stek elementi budağına əlavə olaraq kernel/dynamic.c vasitəsilə k_thread_stack_alloc() sistem çağırışı ilə daxil olmaq mümkündür. Sonrakı nüvə obyekti validasiya yoxlamaları yalnız obyektin tipini və ilkinləşdirmə vəziyyətini yoxladığı üçün, kifayət qədər kiçik olan handle K_SYSCALL_OBJ_INIT()/K_SYSCALL_OBJ_NEVER_INIT() yoxlamalarından keçir və müvafiq init sistem çağırışı (məsələn, k_mutex_init(), k_sem_init() və ya k_thread_create()) daha sonra kəsilmiş ayrılma üzərinə tam obyekti yazır. Buna görə də, imtiyazsız istifadəçi rejimi thread-i, ölçüsünü və məzmununu əhəmiyyətli dərəcədə idarə edə bildiyi, supervisor-mode rejimində nüvə resurs hovuzu heap-inə sərhədlərdən kənar yazı (out-of-bounds write) əməliyyatını tetikləyə bilər ki, bu da sys_heap chunk metadata-nı və bitişik nüvə obyektlərini korlayır. CONFIG_GEN_PRIV_STACKS aktiv olduqda, thread-stek budağı əlavə olaraq hücum edən şəxs tərəfindən təsir edilən təsadüfi göstəricini (wild pointer) istifadəçi thread-inin imtiyazlı stek bazası kimi saxlayır. Praktiki nəticə CONFIG_USERSPACE qumcuvasından (sandbox) çıxışdır — nüvə səviyyəsində kodun icrası və ya ən azı nüvə yaddaşının korlanması və sistemin kompromisə uğramasıdır. İstismar üçün CONFIG_USERSPACE ilə birlikdə CONFIG_DYNAMIC_OBJECTS (istifadəçi rejimi altında CONFIG_DYNAMIC_THREAD tərəfindən də seçilir) və təyin edilmiş resurs hovuzuna malik çağıran thread tələb olunur. Düzəliş həm daşan hesablamaları rədd edir, həm də qismən qurulmuş deskriptoru azad edir.
Necə düzəltmək olar
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| zephyrproject zephyr | 3.5.0 ≤ v ≤ 4.4.2 | — |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.