CVE-2026-12366
Açıklama
Zephyr'ın dinamik çekirdek nesnesi imha yolu unref_check() in kernel/userspace/userspace.c, başvuru sayısı sıfıra ulaştığında, nesne türüne özgü bir temizleme çalıştırdıktan sonra nesnenin depolama alanını (k_free(dyn->data)) serbest bırakır. Temizleme switch'i yalnızca K_OBJ_MSGQ ve K_OBJ_STACK durumlarını ele alıyordu; K_OBJ_TIMER durumu yoktu. Dinamik olarak ayrılan, başlatılan ve etkinleştirilen bir k_timer, gömülü struct _timeout dnode'unu global zaman aşımı kuyruğunda (_timeout_q) bağlı tutar; bu nedenle zaman aşımını iptal etmeden zamanlayıcı depolama alanını serbest bırakmak, o kuyrukta sarkan bir düğüm bırakır. Zamanlayıcı bir sonraki kez sona erdiğinde, zaman aşımı mekanizması _timeout_q'yu dolaşır ve serbest bırakılan düğüm üzerinde z_timer_expiration_handler() işlevini çağırır; çekirdek/ISR bağlamında serbest bırakılmış (ve yeniden kullanılabilir) çekirdek yığınını başvurur ve üzerine yazar. Bu, SMP'ye bağlı olmayan deterministik bir serbest bırakıldıktan sonra kullanım hatasıdır: kuyruktaki düğüm serbest bırakma anında hiçbir zaman bağlantıdan çıkarılmaz. İmha, CONFIG_USERSPACE + CONFIG_DYNAMIC_OBJECTS altında ayrıcalıksız bir kullanıcı iş parçacığından erişilebilir: böyle bir zamanlayıcı üzerinde son izni elinde tutan bir iş parçacığı, onu k_object_release() sistem çağrısı aracılığıyla bırakır (veya k_thread_perms_all_clear() üzerinden çıkarak) ve zamanlayıcıyı k_timer_start() sistem çağrısı aracılığıyla kendisi etkinleştirebilir. Serbest bırakma ve sona erme işleyicisi, aktör bir kullanıcı iş parçacığıyken çekirdek ayrıcalığında çalışır; dolayısıyla hata, yetki yükseltme için kullanılabilen bir sandbox kaçışı bellek bozma ilkeliğidir. Düzeltme, k_timer_cleanup() işlevini (zaman aşımını iptal et ve devam eden herhangi bir işleyiciyi bekle) ekler ve serbest bırakmadan önce K_OBJ_TIMER için bunu çağırır.
Nasıl düzeltilir
- zephyrproject zephyr4.5.0 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| zephyrproject zephyr | 1.12.0 ≤ v < 4.5.0 | 4.5.0 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.