CVE-2024-41045

Yüksek

Açıklama

Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: bpf: bpf_timer_cancel_and_free fonksiyonundaki işlem ertelendi Şu anda, önceki yamadaki durumun aynısı (birbirini iptal etmeye çalışan iki zamanlayıcı geri çağrımı), bpf_map_update_elem üzerinden veya daha kesin bir ifadeyle, zamanlayıcılar içeren harita öğelerinin serbest bırakılması yoluyla da tetiklenebilir. Bu durum aynı zamanda hrtimer_cancel fonksiyonuna dayandığından, önceki yamadaki deadlock durumuyla karşı karşıyadır. Zamanlayıcının async_cancel_and_free işleminden sonra sıraya alınması mümkün olmadığından, bu sorunu çözmek için hrtimer_try_to_cancel kullanmak yeterli olacaktır. async_cancel_and_free işlemi tamamlandıktan sonra, zamanlayıcının yeniden kurulabilmesi için önce yeniden başlatılması gerekir. Paralel olarak çalışan ve zamanlayıcıyı kurmaya çalışan geri çağrım başarısız olacak ve (kfree_rcu göz önüne alındığında) beklemeden bpf_hrtimer yapısını serbest bırakmak yeterli olacaktır; bpf_timer_cb ise HRTIMER_NORESTART döndürerek zamanlayıcının tekrar kurulmasını önleyecektir. Ancak, geri çağrımın bu fonksiyona girmeden önce zamanlayıcıyı kurduğu bir UAF senaryosu mevcuttur; böylece eğer iptal işlemi başarısız olursa (zamanlayıcı geri çağrısının bu rutini çağırması veya hedef zamanlayıcı geri çağrımının eşzamanlı çalışması nedeniyle). Böyle bir durumda, eğer zamanlayıcı süresinin dolması gelecekte çok uzak bir tarihteyse, bundan önce gerçekleşen RCU grace period süresinin dolması, kuyruğa alınmış olan struct hrtimer ile birlikte bpf_hrtimer durumunu serbest bırakacaktır. Bu nedenle, iptal işleminin async_cancel_and_free işleminden sonra gerçekleşmesi gerektiği açıktır ancak deadlock sorunları nedeniyle bu işlem satır içi (inline) olarak yapılamaz. Bu sebeple, rcu_head yanına bir work_struct ekleyerek (her ikisi farklı zaman noktalarında kullanıldığından alan paylaşabilirler), işi global workqueue'ya ertelemek için bpf_timer_cancel_and_free fonksiyonunu değiştirdik. Mevcut kod yorumları yeni durumu yansıtacak şekilde güncellenmiştir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın29 Tem 2024
İlk görülme29 Tem 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.9.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.15 ≤ v < 6.9.10, 6.106.9.10

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