CVE-2024-41092
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)
Necə düzəltmək olar
- 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əhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 5.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.8 | 5.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.
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.