CVE-2025-39749
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: rcu: ->defer_qs_iw_pending alanı veri yarışmasına karşı korundu CONFIG_IRQ_WORK=y ile derlenen çekirdeklerde, rcu_read_unlock() kesmelerin devre dışı bırakıldığı bir kod bölgesi içinde çağrıldığında, sistemin RCU okuma tarafı kritik bölümünün gerçekte ne zaman sona erdiğini fark etmesini zorlamak için bir irq-work işleyicisi kullanan rcu_read_unlock_special() fonksiyonunu çağıracaktır. Bu sonlanma, en erken kesmeler etkinleştirilene kadar gerçekleşmeyecektir. rcutree.use_softirq=y ile başlatılanlar gibi bazı çekirdeklerde, irq-work işleyicisi koşulsuz olarak kullanılır. Per-CPU rcu_data yapısının ->defer_qs_iw_pending alanı, irq-work işleyicisi tarafından güncellenmekte ve hem rcu_read_unlock_special() tarafından okunmakta hem de güncellenmektedir. Bu durum aşağıdaki KCSAN hatasına yol açmıştır: ------------------------------------------------------------------------ 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 ------------------------------------------------------------------------ Sorun, irq-work işleyicilerinin kesmeler etkinken çalışmasıdır; bu da rcu_preempt_deferred_qs_handler() fonksiyonunun kesintiye uğrayabileceği ve bu kesme işleyicisinin rcu_read_unlock_special() fonksiyonunu çağırabilecek bir RCU okuma tarafı kritik bölümü içerebileceği anlamına gelir. RCU tarafından kullanılan katı KCSAN çalışma modunda bu durum, ->defer_qs_iw_pending alanı üzerinde bir veri yarışması oluşturur. Bu nedenle, bu commit, rcu_preempt_deferred_qs_handler() fonksiyonunun ->defer_qs_iw_pending alanını güncelleyen kısmında kesmeleri devre dışı bırakır. Bu işleyici bir hızlı yol (fast path) olmadığı için bu işlem yeterlidir.
Nasıl düzeltilir
- 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 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| 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 | — |
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.