CVE-2021-47350

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: powerpc/mm: Kernel exec hatasındaki kilitlenme düzeltildi powerpc kernel, kernel kaynaklı exec hatalarını yönetmeye hazır değildir. Özellikle, kullanıcıdan gelen trap bilgisini içeren current->thread.regs->trap değerinin okunmasına dayalı kontrol nedeniyle, kernel tarafından bir exec hatası alındığında is_exec_fault() fonksiyonu 'false' döndürecektir. Örneğin, bir LKDTM EXEC_USERSPACE testi tetiklendiğinde, current->thread.regs->trap değeri SYSCALL trap (0xc00) olarak ayarlanır ve kernel tarafından alınan hata, set_access_flags_filter() tarafından bir exec hatası olarak görülmez. d7df2443cd5f ("powerpc/mm: Fix spurious segfaults on radix with autonuma") commit'i bu durumu netleştirmiş ve uygun şekilde işlemiştir. Ancak daha sonra d3ca587404b3 ("powerpc/mm: Fix reporting of kernel execute faults") commit'i bu işlemeyi kaldırarak error_code tabanlı bir test getirmiştir. Sorun da buradadır; çünkü 603 üzerinde, TLB instruction miss handler ISI'ye dönerken SRR1'in tüm üst bitleri temizlenir. cbd7e6ca0210 ("powerpc/fault: Avoid heavy search_exception_tables() verification") commit'ine kadar, kernel tarafında bir kullanıcı alanı adresinde meydana gelen exec hatası, istisna tablolarında o adrese ait giriş olmaması sayesinde dolaylı olarak yakalanıyordu. Fakat bu commit'ten sonra kernel, yanlış kullanıcı erişimlerini yakalamak için temel olarak KUAP'a veya çekirdek mm işlemelerine güvenmektedir. Burada erişim yanlış olmadığı için mm bunu işler. PAGE_EXEC ayarlı olmadığı için bu küçük bir hatadır (minor fault); set_access_flags_filter() fonksiyonunun PAGE_EXEC değerini ayarlaması gerekir. Ancak başlangıçta açıklandığı üzere is_exec_fault() false döndürdüğü için set_access_flags_filter() PAGE_EXEC bayrağını ayarlamadan çıkar, bu da sonsuz bir minor exec hatasına yol açar. Kernel bu tür exec hatalarını yönetmeye hazır olmadığından yapılması gereken, d3ca587404b3 commit'inden önce olduğu gibi, kernel tarafından alınan her türlü exec hatası için bad_kernel_fault() fonksiyonunu çalıştırmaktır.

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

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.4.133, 5.10.51, 5.12.18, 5.13.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel4.14 ≤ v < 5.4.133, 5.5 ≤ v < 5.10.51, 5.11 ≤ v < 5.12.18, 5.13 ≤ v < 5.13.35.4.133, 5.10.51, 5.12.18, 5.13.3

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.