CVE-2026-45949

Orta

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: hwrng: core - yarış şəraitini (race condition) düzəltmək üçün RCU və work_struct istifadəsi Hazırda hwrng_fill, hwrng_fillfn() axını (thread) çıxana qədər təmizlənmir. hwrng_unregister() funksiyası hwrng_fill dəyərini rng_mutex kilidindən kənarda oxuduğu üçün, eyni vaxtda çağırılan hwrng_unregister() eyni tapşırıq üzərində yenidən kthread_stop() funksiyasını çağıra bilər. Əlavə olaraq, əgər hwrng_unregister() funksiyası hwrng_register()-dən dərhal sonra çağırılarsa, dayandırılmış axın heç vaxt icra olunmamış ola bilər. Beləliklə, hwrng_unregister() geri döndükdən sonra belə hwrng_fill çirkli qalır. Bu halda, növbəti hwrng_register() çağırışları yeni axınların başladılmasına uğursuzluq gətirəcək və hwrng_unregister() azad edilmiş eyni tapşırıq üzərində kthread_stop() funksiyasını çağıracaq. Hər iki halda use-after-free baş verir: refcount_t: addition on 0; use-after-free. WARNING: ... at lib/refcount.c:25 refcount_warn_saturate+0xec/0x1c0 Call Trace: kthread_stop+0x181/0x360 hwrng_unregister+0x288/0x380 virtrng_remove+0xe3/0x200 Bu yamaq, qlobal hwrng_fill göstəricisini rng_mutex kilidi daxilində qoruyaraq yarış şəraitini düzəldir, beləliklə hwrng_fillfn() axını yalnız bir dəfə dayandırılır və kthread_run() ilə kthread_stop() çağırışları kilid saxlanıldığı halda ardıcıl şəkildə yerinə yetirilir. Kilid saxlanıldığı halda dayandırılarkən hwrng_fillfn()-də ölü kilidləmənin (deadlock) qarşısını almaq üçün current_rng-ni RCU-ya çeviririk ki, get_current_rng() kilidi saxlamadan current_rng-ni oxuya bilsin. put_rng()-dən kilidi çıxarmaq üçün biz aktual təmizləmə prosesini work_struct vasitəsilə təxirə salırıq. get_current_rng() artıq ERR_PTR dəyərləri qaytarmadığı üçün onu çağıranlarda IS_ERR() yoxlamaları silinib. hwrng_fill rng_mutex kilidi ilə qorunduğuna görə, hwrng_fillfn() artıq özü hwrng_fill-i təmizləyə bilməz. Buna görə də, əgər hwrng_fillfn() current_rng atıldıqdan dərhal sonra geri dönərsə, daha sonra azad edilmiş task_struct üzərində kthread_stop() çağırılardı. Bunu düzəltmək üçün hwrng_fillfn() indi tapşırığı dayandırılana qədər aktiv saxlamaq məqsədilə schedule() funksiyasını çağırır. kthread_stop() çağırışı həmçinin hwrng_unregister()-dən drop_current_rng()-ə köçürülmüşdür; bu, current_rng NULL olduğu bütün mümkün yollarda kthread_stop()-un çağırılmasını təmin edir ki, axın sonsuza qədər gözləməsin.

CiddilikOrta
CVSS4.7
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc27 may 2026
İlk görülmə27 may 2026

Necə düzəltmək olar

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel3.17 ≤ v < 6.12.75, 6.13 ≤ v < 6.18.14, 6.19 ≤ v < 6.19.46.12.75, 6.18.14, 6.19.4
microsoft azl3_kernel_6.6.150.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.157.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.139.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.141.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.143.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.144.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.145.2-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.152.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.159.1-1Aralıq göstərilməyib—

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-45949 · Linux Kernel · Dark Radar