CVE-2024-41092

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: drm/i915/gt: fence registrlərinin ləğvi ilə potensial UAF-ın düzəldilməsi CI ADL-P və oxşar maşınlarda igt@i915_selftest@live@hangcheck tərəfindən tetiklənən aşağıdakı problemi arabir-arabir bildirirdi: <6> [414.049203] i915: Running intel_hangcheck_live_selftests/igt_reset_evict_fence ... <6> [414.068804] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled <6> [414.068812] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled <3> [414.070354] Unable to pin Y-tiled fence; err:-4 <3> [414.071282] i915_vma_revoke_fence:301 GEM_BUG_ON(!i915_active_is_idle(&fence->active)) ... <4>[ 609.603992] ------------[ cut here ]------------ <2>[ 609.603995] kernel BUG at drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c:301! <4>[ 609.604003] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI <4>[ 609.604006] CPU: 0 PID: 268 Comm: kworker/u64:3 Tainted: G U W 6.9.0-CI_DRM_14785-g1ba62f8cea9c+ #1 <4>[ 609.604008] Hardware name: Intel Corporation Alder Lake Client Platform/AlderLake-P DDR4 RVP, BIOS RPLPFWI1.R00.4035.A00.2301200723 01/20/2023 <4>[ 609.604010] Workqueue: i915 __i915_gem_free_work [i915] <4>[ 609.604149] RIP: 0010:i915_vma_revoke_fence+0x187/0x1f0 [i915] ... <4>[ 609.604271] Call Trace: <4>[ 609.604273] <TASK> ... <4>[ 609.604716] __i915_vma_evict+0x2e9/0x550 [i915] <4>[ 609.604852] __i915_vma_unbind+0x7c/0x160 [i915] <4>[ 609.604977] force_unbind+0x24/0xa0 [i915] <4>[ 609.605098] i915_vma_destroy+0x2f/0xa0 [i915] <4>[ 609.605210] __i915_gem_object_pages_fini+0x51/0x2f0 [i915] <4>[ 609.605330] __i915_gem_free_objects.isra.0+0x6a/0xc0 [i915] <4>[ 609.605440] process_scheduled_works+0x351/0x690 ... Keçmişdə CI tərəfindən digər IGT testlərindən oxşar nasazlıqlar bildirilmiş, digər platformalarda müşahidə edilmişdi. 63baf4f3d587 commit-indən ("drm/i915/gt: Only wait for GPU activity before unbinding a GGTT fence") əvvəl i915_vma_revoke_fence() fence_update() vasitəsilə vma->active-in boş olmasını gözləyirdi. Həmin commit vma->fence->active-i təqdim etdi ki, fence_update() vma->active əvəzinə yalnız ona seçici şəkildə gözləyə bilsin, çünki yalnız fence registrlərinin boş olması tələb olunurdu. Lakin sonra başqa bir commit 0d86ee35097a ("drm/i915/gt: Make fence revocation unequivocal") i915_vma_revoke_fence()-də fence_update() çağırışını yalnız fence_write() ilə əvəz etdi və həmçinin qarşısına GEM_BUG_ON(!i915_active_is_idle(&fence->active)) əlavə etdi. Bundan sonra vma->fence->active-in boş olmasını ilk növbədə onu gözləmədən necə gözləyə biləcəyimizə dair heç bir əsaslandırma verilmədi. Problem, bir tərəfdən fence registrlərinin ləğvi ilə digər tərəfdən onlardan istifadə edən sorğunun tamamlanması zamanı çağırılan siqnal callback-lərinin ardıcıl icrası arasında yaranan yarış vəziyyəti nəticəsində yarana bilər; bu callback-lər hələ də həmin fence registrlərinin ləğvi ilə paralel emal olunur. Bunu i915_vma_revoke_fence()-də vma->fence->active-in boş olmasını gözləməklə düzəldin. (cherry picked from commit 24bb052d3dd499c5956abad5f7d8e4fd07da7fb1)

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc29 iyl 2024
İlk görülmə29 iyl 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.10.221, 5.15.162, 6.1.97, 6.6.37, 6.9.8 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.8 ≤ v < 5.10.221, 5.11 ≤ v < 5.15.162, 5.16 ≤ v < 6.1.97, 6.2 ≤ v < 6.6.37, 6.7 ≤ v < 6.9.85.10.221, 5.15.162, 6.1.97, 6.6.37, 6.9.8

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.