CVE-2026-12365

Orta

Təsvir

Zephyr ikinci nəsil iş növbəsində (kernel/work.c) gecikdirilə bilən iş vaxtlarının (delayable work timeouts) idarə edilməsində "use-after-free" boşluğu mövcuddur. Gecikdirilə bilən bir iş elementinin vaxtı növbədən çıxarıldıqda və onun handler funksiyası work_timeout() icra mərhələsində olduqda (iş növbəsinin spinlock-unu əldə etmək üçün bloklandıqda), eyni vaxtda baş verən ləğv etmə prosesi həmin handler-in tamamlanmasını gözləmir. unschedule_locked() funksiyasındakı düzəlişdən əvvəlki kod z_abort_timeout() funksiyasını çağırırdı ki, bu da artıq elan edilmiş (announcing) qeydlər üçün onu silmədən -EINVAL qaytarırdı; daha sonra cancel_async_locked() işi boş (idle) kimi görürdü, buna görə də k_work_cancel_delayable_sync() və k_work_flush_delayable() funksiyaları icradakı handler üzərində bloklanmadan geri dönürdü. Körnəlik (kernel) başlıq fayllarında k_work_delayable obyektini azad etməzdən əvvəl ləğv etməyin təhlükəsiz yolu kimi məhz bu API-lar sənədləşdirildiyi üçün, uğurlu sinxron ləğvdən dərhal sonra obyekti azad edən çağıran tərəf hələ də gözləməkdə olan handler ilə yarış vəziyyətinə (race condition) düşə bilər. Nəticədə work_timeout() azad edilmiş qeydi dereference edir: o, z_is_timeout_handler_canceled() vasitəsilə to->dticks dəyərini oxuyur və əgər azad edilmiş slot yenidən istifadə edilibsə (beləliklə yoxlama uğursuz olursa), wp->flags (K_WORK_DELAYED_BIT) üzərində oxu-dəyiş-yazma əməliyyatı yerinə yetirir və köhnəlmiş dw->queue göstəricisinə qarşı iş göndərir — bu, "use-after-free" oxuma və yazma əməliyyatıdır. k_work API yalnız nüvə rejimidir (__syscall giriş nöqtəsi yoxdur), buna görə də bu, istifadəçi sahəsində imtiyazların yüksəldilməsi deyil, nüvə daxili konkurentlik defektidir. Bunun tetiklenməsi üçün SMP build və vaxtı elan olunduğu dar zaman pəncərəsində gecikdirilə bilən iş elementini planlaşdıran və sonra azad edən (və ya yenidən planlaşdıran) alt sistem tələb olunur; belə bir sökülmənin tayminqinə təsir edə bilən hücumçu (məsələn, alt sistem taymerlərini idarə edən bağlantı dövriyyəsi vasitəsilə) ehtimal olunan, lakin probablistik bir yola malikdir. Təsir nüvə yaddaşının korlanması və ya sistemin çökməsidir (xidmətdən imtina). Düzəliş, unschedule_locked() funksiyasının, hər hansı icradakı handler tamamlanana qədər iş spinlock-unu buraxaraq və yenidən əldə edərək z_try_abort_timeout()-un -EAGAIN qaytarması ilə gözləməsini təmin edir və work_timeout()-u atomik K_WORK_DELAYED_BIT mülkiyyətinə keçirir. Bu, həm "free-then-handler" use-after-free boşluğunu, həm də bununla bağlı erkən işə düşmə yarışını aradan qaldırır.

CiddilikOrta
CVSS5.8
İstismar ehtimalı—
MəhsulZephyr
Dərc14 avq 2026
İlk görülmə14 avq 2026

Necə düzəltmək olar

Yeniləyin
  • zephyrproject zephyr4.5.0 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
zephyrproject zephyr2.6.0 ≤ v < 4.5.04.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.

Intelligence 360 paketində

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.

CVE-2026-12365 · Zephyr · Dark Radar