CVE-2025-39749
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: rcu: ->defer_qs_iw_pending sahəsini data race-dən qoruyaq CONFIG_IRQ_WORK=y ilə qurulmuş kernellərdə, rcu_read_unlock() kodu kəsilmələrin (interrupts) deaktiv edildiyi bölgədə çağırıldıqda, o, rcu_read_unlock_special() funksiyasını çağıracaqdır. Bu funksiya sistemin RCU oxuma tərəfi kritik bölməsinin faktiki olaraq nə vaxt bitdiyini görməsi üçün irq-work handler-dən istifadə edir. Həmin sonlanma yalnız kəsilmələr yenidən aktivləşdirildikdən sonra baş verə bilər. Bəzi kernellərdə, məsələn, rcutree.use_softirq=y ilə yüklənilənlərdə, irq-work handler şərtsiz şəkildə istifadə olunur. Hər CPU üçün olan rcu_data strukturunun ->defer_qs_iw_pending sahəsi irq-work handler tərəfindən yenilənir və həmçinin rcu_read_unlock_special() tərəfindən həm oxunur, həm də yenilənir. Bu, aşağıdakı KCSAN xətasına səbəb olmuşdur: ------------------------------------------------------------------------ BUG: KCSAN: data-race in rcu_preempt_deferred_qs_handler / rcu_read_unlock_special read to 0xffff96b95f42d8d8 of 1 bytes by task 90 on cpu 8: rcu_read_unlock_special+0x175/0x260 __rcu_read_unlock+0x92/0xa0 rt_spin_unlock+0x9b/0xc0 __local_bh_enable+0x10d/0x170 __local_bh_enable_ip+0xfb/0x150 rcu_do_batch+0x595/0xc40 rcu_cpu_kthread+0x4e9/0x830 smpboot_thread_fn+0x24d/0x3b0 kthread+0x3bd/0x410 ret_from_fork+0x35/0x40 ret_from_fork_asm+0x1a/0x30 write to 0xffff96b95f42d8d8 of 1 bytes by task 88 on cpu 8: rcu_preempt_deferred_qs_handler+0x1e/0x30 irq_work_single+0xaf/0x160 run_irq_workd+0x91/0xc0 smpboot_thread_fn+0x24d/0x3b0 kthread+0x3bd/0x410 ret_from_fork+0x35/0x40 ret_from_fork_asm+0x1a/0x30 no locks held by irq_work/8/88. irq event stamp: 200272 hardirqs last enabled at (200272): [<ffffffffb0f56121>] finish_task_switch+0x131/0x320 hardirqs last disabled at (200271): [<ffffffffb25c7859>] __schedule+0x129/0xd70 softirqs last enabled at (0): [<ffffffffb0ee093f>] copy_process+0x4df/0x1cc0 softirqs last disabled at (0): [<0000000000000000>] 0x0 ------------------------------------------------------------------------ Problem ondadır ki, irq-work handler-lər kəsilmələr aktiv vəziyyətdə işləyir, bu isə o deməkdir ki, rcu_preempt_deferred_qs_handler() kəsilə bilər və həmin kəsilmə handler-i RCU oxuma tərəfi kritik bölməsini ehtiva edə bilər ki, bu da öz növbəsində rcu_read_unlock_special()-ı çağıra bilər. RCU tərəfindən istifadə edilən ciddi KCSAN əməliyyat rejimində bu, ->defer_qs_iw_pending sahəsində data race təşkil edir. Bu səbəbdən, cari commit rcu_preempt_deferred_qs_handler()-ın ->defer_qs_iw_pending sahəsini yeniləyən hissəsində kəsilmələri deaktiv edir. Bu handler sürətli yol (fast path) olmadığı üçün bu tədbir kifayətdir.
Necə düzəltmək olar
- linux linux_kernel5.4.297, 5.10.241, 5.15.190, 6.1.149, 6.6.103, 6.12.43, 6.15.11, 6.16.2 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 | 5.3 ≤ v < 5.4.297, 5.5 ≤ v < 5.10.241, 5.11 ≤ v < 5.15.190, 5.16 ≤ v < 6.1.149, 6.2 ≤ v < 6.6.103, 6.7 ≤ v < 6.12.43, 6.13 ≤ v < 6.15.11, 6.16 ≤ v < 6.16.2 | 5.4.297, 5.10.241, 5.15.190, 6.1.149, 6.6.103, 6.12.43, 6.15.11, 6.16.2 |
| debian debian_linux | 11.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.