CVE-2024-35873

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: riscv: rt_sigreturn() fonksiyonundaki vektör durumu geri yükleme işlemi düzeltildi RISC-V Vektör spesifikasyonu, "Ek D: Vektör Durumu için Çağırma Sözleşmesi" [1] bölümünde "Bir sistem çağrısının yürütülmesi, tüm çağırıcı tarafından kaydedilen vektör kayıtçılarının (v0-v31, vl, vtype) ve vstart'ın belirsiz hale gelmesine neden olur." şeklinde belirtmektedir. RISC-V çekirdeğinde bu durum "vstate'in atılması" olarak adlandırılır. rt_sigreturn() sistem çağrısı aracılığıyla bir sinyal işleyiciden dönerken de vektör atma işlemi gerçekleştirilir. Ancak, vektör durumunun sigcontext üzerinden geri yüklenmesi gerektiğinden ve dolayısıyla vektör atma işleminin önemsenmemesi gerektiğinden bu bir sorun teşkil etmez. "Canlı durum" (live state), çalışan bağlamdaki gerçek vektör kayıtçısıdır ve "vstate" ise görevin vektör durumudur. Kirli (dirty) bir canlı durum, vstate ile canlı durumun senkronize olmadığı anlamına gelir. Vektörize edilmiş user_from_copy() tanıtıldığında, canlı durumun atılmasıyla ilgili olarak geri yükleme koduna bir hata sızmıştır. Hatanın gerçekleştiği bir örnek: 1. Bir kullanıcı alanı uygulaması vektör kodu yürütüyor. 2. Uygulama bir sinyal alır ve sinyal işleyiciye girilir. 3. Uygulama, rt_sigreturn() sistem çağrısını kullanarak sinyal işleyiciden döner. 4. rt_sigreturn() girişinde canlı vektör durumu atılır ve canlı durum, mevcut vstate ile senkronize edilmesi gerektiğini belirten "kirli" olarak işaretlenir. 5. rt_sigreturn(), Vektör kayıtçıkları hariç vstate'i sigcontext'ten geri yükler. 6. rt_sigreturn(), Vektör kayıtçıklarını sigcontext'ten geri yükler ve burada vektörize edilmiş user_from_copy() kullanılır. Atma işleminden kaynaklanan kirli canlı durum vstate'e kaydedilerek vstate'in bozulmasına neden olur. 7. rt_sigreturn() uygulamaya döner ve uygulama bozulan vstate nedeniyle çöker. Vektörize edilmiş user_from_copy()'nin, CONFIG_RISCV_ISA_V_UCOPY_THRESHOLD değerine bağlı olarak çağrıldığına dikkat edilmelidir. Varsayılan değer 768'dir; bu da bu hatanın tetiklenmesi için vlen'in 128b'den büyük olması gerektiği anlamına gelir. Çözüm, vstate geri yüklemesini gerçekleştirmeden önce canlı durumu kirli olmayan/temiz (non-dirty/clean) olarak işaretlemektir.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın19 May 2024
İlk görülme19 May 2024

Nasıl düzeltilir

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

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.8 ≤ v < 6.8.5, 6.96.8.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-35873 · Linux Kernel · Dark Radar