CVE-2024-50275

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: arm64/sve: SVE tuzakları işlenirken güncelliğini yitirmiş CPU durumu göz ardı edilir SVE tuzaklarını işleme mantığı, kaydedilmiş FPSIMD/SVE durumunu yanlış şekilde manipüle etmektedir ve öncelikli yürütme (preemption) ile oluşan bir yarış durumu (race condition), canlı CPU durumu güncelliğini yitirmiş olsa bile (örneğin SVE tuzakları etkinleştirildiğinde), bir görevin TIF_SVE bayrağının ayarlı ve TIF_FOREIGN_FPSTATE bayrağının temiz olmasına neden olabilir. Bunun, TIF_SVE ayarlı olduğu halde SVE tuzaklarının beklenmediği do_sve_acc() fonksiyonundan gelen uyarılarla sonuçlandığı gözlemlenmiştir: | if (test_and_set_thread_flag(TIF_SVE)) | WARN_ON(1); /* SVE erişimi tuzak oluşturmamalıydı */ Bu türdeki uyarılar aralıklarla raporlanmıştır, örneğin: https://lore.kernel.org/linux-arm-kernel/CA+G9fYtEGe_DhY2Ms7+L7NKsLYUomGsgqpdBj+QwDLeSg=JhGg@mail.gmail.com/ https://lore.kernel.org/linux-arm-kernel/[email protected]/ Yarış durumu, SVE tuzak yöneticisi kaydedilmiş FPSIMD/SVE durumunu manipüle etmeden önce ve sonra, aynı CPU üzerinde başlayıp biterek öncelikli yürütmeye maruz kaldığında meydana gelebilir, örneğin: | void do_sve_acc(unsigned long esr, struct pt_regs *regs) | { | // CPU 0 üzerinde tuzak oluştu; TIF_SVE temiz, SVE tuzakları etkin | // task->fpsimd_cpu değeri 0. | // per_cpu_ptr(&fpsimd_last_state, 0) değeridir task. | | ... | | // Öncelikli yürütme gerçekleşti; CPU 0'dan CPU 1'e göç edildi. | // TIF_FOREIGN_FPSTATE ayarlandı. | | get_cpu_fpsimd_context(); | | if (test_and_set_thread_flag(TIF_SVE)) | WARN_ON(1); /* SVE erişimi tuzak oluşturmamalıydı */ | | sve_init_regs() { | if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) { | ... | } else { | fpsimd_to_sve(current); | current->thread.fp_type = FP_STATE_SVE; | } | } | | put_cpu_fpsimd_context(); | | // Öncelikli yürütme gerçekleşti; CPU 1'den CPU 0'a göç edildi. | // task->fpsimd_cpu hala 0 | // Eğer per_cpu_ptr(&fpsimd_last_state, 0) hala task ise: | // - Güncelliğini yitirmiş donanım durumu yeniden kullanılır (SVE tuzakları etkinken) | // - TIF_FOREIGN_FPSTATE temizlenir | // - Kullanıcı alanına dönüşte donanım durumu geri yükleme işlemi atlanır | } Durumun canlı olmadığı ve TIF_FOREIGN_FPSTATE'in ayarlı olduğu durum, kaydedilen CPU durumundan ayrılmak için fpsimd_flush_task_state() çağrılarak düzeltilmiştir. Bu işlem, sonraki bir bağlam değişiminin (context switch) güncelliğini yitirmiş CPU durumunu yeniden kullanmamasını sağlar ve bunun yerine TIF_FOREIGN_FPSTATE bayrağını ayarlayarak yeni durumun kullanıcı alanına dönmeden önce bellekten yeniden yüklenmesini zorunlu kılar.

ÖnemYüksek
CVSS7.3
İstismar olasılığı—
ÜrünLinux Kernel
Yayın19 Kas 2024
İlk görülme19 Kas 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.6.61, 6.11.8 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.13 ≤ v < 6.6.61, 6.7 ≤ v < 6.11.8, 6.126.6.61, 6.11.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.

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.