CVE-2025-39886
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: bpf: bpf_timer_init() fonksiyonunda memcg'nin allow_spinning=false yolunu kullanmasını sağlayın Şu anda, __bpf_async_init() üzerinden bpf_map_kmalloc_node() çağrılması çeşitli kilitleme sorunlarına neden olabilmektedir; örnek olarak şu yığın izine (stil için düzenlenmiştir) bakınız: ... [10.011566] do_raw_spin_lock.cold [10.011570] try_to_wake_up (5) aynı rq_lock'un iki kez edinilmesi, [10.011575] kick_pool hardlockup'a neden oluyor [10.011579] __queue_work [10.011582] queue_work_on [10.011585] kernfs_notify [10.011589] cgroup_file_notify [10.011593] try_charge_memcg (4) memcg muhasebesi bir [10.011597] obj_cgroup_charge_pages MEMCG_MAX olayı tetikliyor [10.011599] obj_cgroup_charge_account [10.011600] __memcg_slab_post_alloc_hook [10.011603] __kmalloc_node_noprof ... [10.011611] bpf_map_kmalloc_node [10.011612] __bpf_async_init [10.011615] bpf_timer_init (3) BPF, bpf_timer_init() fonksiyonunu çağırıyor [10.011617] bpf_prog_xxxxxxxxxxxxxxxx_fcg_runnable [10.011619] bpf__sched_ext_ops_runnable [10.011620] enqueue_task_scx (2) BPF, rq_lock tutulurken çalışıyor [10.011622] enqueue_task [10.011626] ttwu_do_activate [10.011629] sched_ttwu_pending (1) rq_lock'u yakalıyor ... Yukarıdaki durum, ./tools/sched_ext/scx_flatcg.bpf.c dosyası ops.runnable() sırasında bpf_timer_init() çağıracak şekilde değiştirilerek ve bpf_timer_init() çağrısının bir MEMCG_MAX olayını tetikleme olasılığını artırmak için memcg muhasebe kodu üzerinde küçük değişiklikler yapılarak bpf-next (b338cf849ec8) sürümünde yeniden üretilmiştir. Ayrıca, cgroup_file_kn_lock veya aynı worker_pool::lock gibi kilitlerin iki kez edinilmesini içeren benzer varyasyonlarla da (hem dahili olarak hem de bpf-next üzerinde) karşılaşılmıştır. Shakeel tarafından önerildiği üzere, bu sorun __bpf_async_init() içerisinde GFP_ATOMIC yerine __GFP_HIGH kullanılarak düzeltilmiştir; böylece örneğin try_charge_memcg() bir MEMCG_MAX olayı tetiklerse, __memcg_memory_event() fonksiyonu @allow_spinning=false ile çağrılır ve orada cgroup_file_notify() çağrısından kaçınılır. Şu mm yamasına bağımlıdır "memcg: skip cgroup_file_notify if spinning is not allowed": https://lore.kernel.org/bpf/[email protected]/ v0 yaklaşımı s/bpf_map_kmalloc_node/bpf_mem_alloc/ https://lore.kernel.org/bpf/[email protected]/ v1 yaklaşımı: https://lore.kernel.org/bpf/[email protected]/
Nasıl düzeltilir
- linux linux_kernel6.6.107, 6.12.48, 6.16.8 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.15 ≤ v < 6.6.107, 6.7 ≤ v < 6.12.48, 6.13 ≤ v < 6.16.8, 6.17 | 6.6.107, 6.12.48, 6.16.8 |
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.