CVE-2024-58088

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: bpf: cgroup depolaması serbest bırakılırken oluşan deadlock hatası düzeltildi bc235cdb423a ("bpf: Prevent deadlock from recursive bpf_task_storage_[get|delete]") numaralı commit, bpf_task_storage yardımcılarına bağlanan fentry/fexit programları için ilk kez deadlock önleme mekanizmasını getirmiştir. Bu commit, v6 versiyonunda harita serbest bırakma yolundaki mantığı da uygulamıştır. Daha sonra, bpf_task_storage ile aynı sorunla karşılaşan bpf_cgrp_storage özelliği c4bcfb38a95e ("bpf: Implement cgroup storage available to non-cgroup-attached bpf progs") ile tanıtılmıştır; burada meşguliyet sayacı yerine bpf_local_storage_map_free() fonksiyonuna NULL geçilmiş ve bu durum deadlock oluşmasına yol açan bir açık yaratmıştır: <TASK> (local_storage->lock ediniliyor) _raw_spin_lock_irqsave+0x3d/0x50 bpf_local_storage_update+0xd1/0x460 bpf_cgrp_storage_get+0x109/0x130 bpf_prog_a4d4a370ba857314_cgrp_ptr+0x139/0x170 ? __bpf_prog_enter_recur+0x16/0x80 bpf_trampoline_6442485186+0x43/0xa4 cgroup_storage_ptr+0x9/0x20 (local_storage->lock tutuluyor) bpf_selem_unlink_storage_nolock.constprop.0+0x135/0x160 bpf_selem_unlink_storage+0x6f/0x110 bpf_local_storage_map_free+0xa2/0x110 bpf_map_free_deferred+0x5b/0x90 process_one_work+0x17c/0x390 worker_thread+0x251/0x360 kthread+0xd2/0x100 ret_from_fork+0x34/0x50 ret_from_fork_asm+0x1a/0x30 </TASK> Programlar: - A: SEC("fentry/cgroup_storage_ptr") - cgid (BPF_MAP_TYPE_HASH) Mevcut görevin ait olduğu cgroup kimliğini, cgroup adresini harita anahtarı olarak kullanarak bu hash haritasına kaydeder. - cgrpa (BPF_MAP_TYPE_CGRP_STORAGE) Eğer mevcut görev bir kworker ise, karşılık gelen cgroup kimliğini almak için yukarıdaki hash haritasında @owner fonksiyon parametresini anahtar olarak arar ve ardından bpf_cgroup_from_id() aracılığıyla cgroup'a güvenilir bir işaretçi alır. Bu güvenilir işaretçi daha sonra deadlock sorununu tetiklemek için bpf_cgrp_storage_get() fonksiyonuna geçirilebilir. - B: SEC("tp_btf/sys_enter") - cgrpb (BPF_MAP_TYPE_CGRP_STORAGE) Bu programın tek amacı, mümkün olduğunca çok kullanıcı alanı görevi için bpf_cgrp_storage_get() çağırarak Program A'nın hash haritasını doldurmaktır. Yeniden üretme adımları: - A'yı çalıştırın; - while (true) { B'yi çalıştırın; B'yi yok edin; } Depolama/smap kilitlemesinden önce uygun şekilde artırılabilmesi için meşguliyet sayacının serbest bırakma prosedürüne geçirilmesiyle bu sorun düzeltilmiştir.

ÖnemOrta
CVSS5.5
İstismar olasılığı8. yüzdelik%0,2
ÜrünLinux Kernel
Yayın12 Mar 2025
İlk görülme12 Mar 2025
Zayıflık türüCWE-667CWE-667

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.6.80, 6.12.17, 6.13.5 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.2 ≤ v < 6.6.80, 6.7 ≤ v < 6.12.17, 6.13 ≤ v < 6.13.5, 6.146.6.80, 6.12.17, 6.13.5

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.

Intelligence 360 paketinde

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.

CVE-2024-58088 · Linux Kernel · Dark Radar