CVE-2026-46008
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: mm/damon/core: damos_walk() və kdamond_fn() arasındakı çıxış yarışının (race condition) düzəldilməsi kdamond_fn() əsas dövrü başa çatdıqda, funksiya qalan damos_walk() sorğularını ləğv edir və API çağıranların və API funksiyalarının kontekstin dayandırıldığını görə bilməsi üçün damon_ctx->kdamond dəyişənini sıfırlayır. damos_walk() əvvəlcə çağıranın sorğusunu növbəyə əlavə edir. Bundan sonra o, damon_ctx-in kdamond-unun hələ də işləyib-işləmədiyini yoxlayır (damon_ctx->kdamond təyin edilmişdir). Yalnız kdamond işləyirsə, damos_walk() yeni əlavə edilmiş sorğunun kdamond tərəfindən emal edilməsini gözləməyə başlayır. Lakin damos_walk() sorğularının qeydiyyatı və damon_ctx->kdamond-un sıfırlanması fərqli mutex-lər ilə qorunur. Buna görə də, damos_walk() damon_ctx->kdamond-un sıfırlanması ilə yarışa girə bilər və bu, ölü kilidlənmələrə (deadlocks) səbəb ola bilər. Məsələn, fərz edək ki, kdamond damow_walk() sorğularının ləğv edilməsini uğurla tamamladı. Dərhal sonra həmin kontekst üçün damos_walk() çağırılır. O, yeni sorğunu qeydiyyata alır və damon_ctx->kdamond-un sıfırlanması hələ tamamlanmadığı üçün kontekstin hələ də işlədiyini görür. Beləliklə, damos_walk() çağıranı sorğunun emal olunmasını gözləməyə başlayır. Lakin kdamond artıq sonlandırma mərhələsində olduğu üçün yeni sorğunu heç vaxt emal etmir. Nəticədə, damos_walk() çağırıcı axını (thread) sonsuz müddət gözləyir. Bu problem, damon_ctx-ə walk_control_obsolete adlı yeni sahənin əlavə edilməsi ilə həll edilmişdir. Bu sahə, damos_walk() sorğu qeydiyyatını qoruyan damon_ctx->walk_control_lock ilə qorunur. Onu damon_start() geri dönməzdən əvvəl kdamond_fn()-də ilkinləşdirin (sıfırlayın) və qalan damos_walk() sorğularının ləğvi icra edilməzdən dərhal əvvəl təyin edin. damos_walk() kilid altında obsolete sahəsini oxuyur və yeni sorğunun əlavə edilməsindən qaçır. Bu dəyişiklikdən sonra yalnız emal ediləcəyi və ya ləğv ediləcəyi zəmanət verilən sorğular qeydiyyata alınır. Buna görə də, qeydiyyatdan sonrakı DAMON kontekstinin sonlandırılması yoxlamasına artıq ehtiyac qalmadı və o, silindi. Problem sashiko [1] tərəfindən aşkar edilmişdir.
Necə düzəltmək olar
- linux linux_kernel7.0.4 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 6.14 ≤ v < 7.0.4 | 7.0.4 |
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.