CVE-2026-10667
Təsvir
Zephyr-in dinamik nüvə obyektlərinin izlənilməsi mexanizmi (kernel/userspace/userspace.c, əvvəllər kernel/userspace.c) dinamik şəkildə ayrılmış nüvə obyektlərinin ikiqat bağlı siyahısını (obj_list) saxlayır. k_object_wordlist_foreach() funksiyasında bu siyahı üzrə iterasiya lists_lock altında SAFE iteratoru (növbəti düyünü keşləyən) vasitəsilə həyata keçirilirdi, lakin siyahıdan silinmə və düyünlərin azad edilməsi fərqli, bir-birindən ayrı spinlock-lar altında yerinə yetirilirdi: k_object_free() funksiyasında objfree_lock və unref_check() funksiyasında obj_lock. SMP sistemində, bir CPU lists_lock altında obj_list üzrə iterasiya apardığı zaman, digər CPU iteratorun növbəti göstərici kimi keşlədiyi dyn_obj düyününü ayırıb k_free() edə bilərdi ki, bu da iteratorun azad edilmiş nüvə yaddaşına müraciət etməsinə səbəb olurdu (use-after-free / asılı siyahı keçidi). Yarış vəziyyətinə (race condition) səbəb olan bütün əməliyyatlara imtiyazsız istifadəçi rejimi axınları sistem çağırışları vasitəsilə daxil ola bilir: k_object_alloc/k_object_alloc_size və k_object_release funksiyaları unref_check() (obj_lock altında) vasitəsilə silinməni idarə edir, k_thread_abort və axının yaradılması isə k_thread_perms_all_clear()/k_thread_perms_inherit() (lists_lock altında) vasitəsilə iterasiyanı idarə edir. Beləliklə, CONFIG_SMP + CONFIG_USERSPACE konfiqurasiyalı qurumda aşağı imtiyazlı istifadəçi axını istifadəçi sahəsi təhlükəsizlik sərhədini aşaraq nüvənin obyekt izləmə strukturlarını korlaya bilər ki, bu da nüvə yaddaşının korlanmasına (potensial imtiyazların yüksəldilməsi) və ya nüvənin çökməsinə (xidmətdən imtina) səbəb olar. Düzəliş objfree_lock-u ləğv edir və hər bir obj_list dəyişikliyini lists_lock altında ardıcıl hala gətirir, bura k_object_free() funksiyasında tapma+silmə prosesi və k_thread_perms_clear() funksiyasında unref_check() ətrafında kilidin saxlanılması daxildir. Bu problem CONFIG_SMP+CONFIG_USERSPACE+CONFIG_DYNAMIC_OBJECTS konfiqurasiyalarına təsir edir; qüsur 2019-cu ildəki spinlock tətbiqinə (commit 8a3d57b6cc6, ilk dəfə v1.14.0 versiyasında buraxılıb) aid edilir və v4.4.0 versiyasına qədər mövcud olub.
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 | 1.14.0 ≤ v ≤ 4.4.1 | — |
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.