CVE-2026-12366
Təsvir
Zephyr-in kernel/userspace/userspace.c faylındakı dinamik nüvə obyekti tullantı yolu unref_check(), obyekt tipinə uyğun təmizləmə prosesini icra etdikdən sonra istinad sayı sıfıra çatdıqda obyektin yaddaş sahəsini (k_free(dyn->data)) azad edir. Təmizləmə switch bloku yalnız K_OBJ_MSGQ və K_OBJ_STACK hallarını idarə edirdi; K_OBJ_TIMER halı mövcud deyildi. Dinamik şəkildə ayrılmış, başladılmış və aktivləşdirilmiş k_timer öz daxili struct _timeout dnode elementini qlobal vaxtaşımı növbəsində (_timeout_q) bağlı saxlayır, buna görə də vaxtaşımını ləğv etmədən taymer yaddaşının azad edilməsi həmin növbədə asılı qalan (dangling) düyün buraxır. Taymer növbəti dəfə başa çatdıqda, vaxtaşımı mexanizmi _timeout_q siyahısını gəzir və azad edilmiş düyün üzərində z_timer_expiration_handler() funksiyasını çağıraraq, kernel/ISR kontekstində azad edilmiş (və yenidən istifadə edilə bilən) nüvə yığınındakı (kernel heap) ünvanlara müraciət edir və ora məlumat yazır. Bu, SMP-dən asılı olmayan deterministik bir use-after-free boşluğudur: növbəyə alınmış düyün azad edilmə zamanı sadəcə heç vaxt silinmir. CONFIG_USERSPACE + CONFIG_DYNAMIC_OBJECTS konfiqurasiyası altında bu tullantı prosesi imtiyazsız istifadəçi axınından əlçatandır: belə bir taymer üzərində sonuncu icazəni saxlayan axın k_object_release() sistem çağırışı vasitəsilə (və ya k_thread_perms_all_clear() vasitəsilə çıxış edərək) həmin icazəni buraxır və k_timer_start() sistem çağırışı ilə taymeri özü aktivləşdirə bilir. Azad etmə və vaxtaşımı idarəedicisi nüvə imtiyazları səviyyəsində işləyərkən, icraçı istifadəçi axını olduğu üçün bu xəta, imtiyazların yüksəldilməsi üçün istifadə edilə bilən sandbox-escape yaddaş korlanması primitividir. Düzəliş k_timer_cleanup() funksiyasını əlavə edir (vaxtaşımını ləğv edir və hər hansı davam edən idarəedicinin tamamlanmasını gözləyir) və azad etməzdən əvvəl onu K_OBJ_TIMER üçün çağırır.
Necə düzəltmək olar
- zephyrproject zephyr4.5.0 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| zephyrproject zephyr | 1.12.0 ≤ v < 4.5.0 | 4.5.0 |
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.