CVE-2024-31076

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: genirq/cpuhotplug, x86/vector: CPU çevrim dışı kalırken vektör sızıntısını önleme IRQD_MOVE_PCNTXT eksikliği, procfs üzerinden yapılan kesme yakınlığı (interrupt affinity) yeniden yapılandırmasının anında etkili olmasını engeller. Bunun yerine değişiklik, kesmenin orijinal CPU üzerinde tetiklendiği bir sonraki örneğe kadar ertelenir. Kesme orijinal CPU üzerinde bir sonraki kez tetiklendiğinde, yeni yakınlık __irq_move_irq() içerisinde uygulanır. Yeni CPU'dan bir vektör tahsis edilir ancak orijinal CPU üzerindeki eski vektör kalmaya devam eder ve hemen geri alınmaz. Bunun yerine, apicd->move_in_progress işaretlenir ve geri alma işlemi, kesmenin yeni CPU üzerinde bir sonraki tetiklenmesine kadar geciktirilir. Kesmenin yeni CPU üzerinde sonraki tetiklenmesiyle birlikte, irq_complete_move(), eğer hala çevrim içi ise eski CPU'nun vector_cleanup listesine bir görev ekler. Ardından, eski CPU üzerindeki zamanlayıcı vector_cleanup listesini tarayarak eski vektörleri geri alır. Ancak, kesme yeni CPU üzerinde tekrar tetiklenmeden önce eski CPU'nun devre dışı kaldığı nadir bir senaryo ortaya çıkmaktadır. Bu durumda, kesme şu anda devre dışı kalan CPU ile yakın olmadığı ve irq_needs_fixup() false döndürdüğü için, eski apicd->prev_vector değerini geri almak amacıyla devre dışı kalan CPU üzerinde irq_force_complete_move() çağrılmaz. Daha sonra yeni CPU üzerinde __vector_schedule_cleanup() çağrılsa bile, bu fonksiyon apicd->prev_vector değerini geri almaz; bunun yerine sadece hem apicd->move_in_progress hem de apicd->prev_vector değerlerini 0 olarak sıfırlar. Sonuç olarak, vektör vector_matrix içinde geri alınmadan kalır ve bu durum bir CPU vektör sızıntısına yol açar. Bu sorunu gidermek için, kesme şu anda veya daha önce devre dışı kalan CPU ile yakınsa, apicd->prev_vector değerini geri almak adına irq_force_complete_move() çağrısı irq_needs_fixup() çağrısından öncesine taşınmıştır. Ek olarak, teorik olarak apicd->prev_cpu'nun çevrim dışı bir CPU'yu işaret ettiği bir durumda apicd->move_in_progress görülmemesi gerekse de, bir uyarı mesajının ardından __vector_schedule_cleanup() içerisinde de vektörün geri alınması sağlanmıştır.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın21 Haz 2024
İlk görülme21 Haz 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel4.19.316, 5.4.278, 5.10.219, 5.15.161, 6.1.93, 6.6.33, 6.9.4 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel4.13 ≤ v < 4.19.316, 4.20 ≤ v < 5.4.278, 5.5 ≤ v < 5.10.219, 5.11 ≤ v < 5.15.161, 5.16 ≤ v < 6.1.93, 6.2 ≤ v < 6.6.33, 6.7 ≤ v < 6.9.44.19.316, 5.4.278, 5.10.219, 5.15.161, 6.1.93, 6.6.33, 6.9.4

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