CVE-2024-53052

Orta

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: io_uring/rw: O_DIRECT yazma əməliyyatının başladılması üçün çatışmayan NOWAIT yoxlamasının düzəldilməsi io_uring yazma əməliyyatını başlatdıqda, həmin yazma prosesi davam edərkən hər hansı dondurmanın (freeze) baş verməməsi üçün super blok rwsem-ni artırmaq məqsədilə kiocb_start_write() funksiyasını çağırır. Dondurma tərəfi həmin rwsem-ni yazma üçün götürür, bununla da yeni yazıların qarşısını alır və mövcud yazıların tamamlanmasını gözləyir. Lakin io_uring şərtsiz olaraq kiocb_start_write()-dan istifadə edir ki, bu da kimsə hazırda mount nöqtəsini dondurmağa çalışdıqda bloklanır. Bu, deadloqa səbəb olur: dondurma prosesi əvvəlki yazıların tamamlanmasını gözləyir, lakin əvvəlki yazılar tamamlana bilmir, çünki onları tamamlamalı olan tapşırıq yeni yazmanı başlatmaq üçün gözləyərək bloklanmış vəziyyətdədir. Nəticədə, yeni yazmanın başladılmasının bloklandığı asılılığı göstərən aşağıdakı ilişmiş iz (stuck trace) yaranır: task:fio state:D stack:0 pid:886 tgid:886 ppid:876 Call trace: __switch_to+0x1d8/0x348 __schedule+0x8e8/0x2248 schedule+0x110/0x3f0 percpu_rwsem_wait+0x1e8/0x3f8 __percpu_down_read+0xe8/0x500 io_write+0xbb8/0xff8 io_issue_sqe+0x10c/0x1020 io_submit_sqes+0x614/0x2110 __arm64_sys_io_uring_enter+0x524/0x1038 invoke_syscall+0x74/0x268 el0_svc_common.constprop.0+0x160/0x238 do_el0_svc+0x44/0x60 el0_svc+0x44/0xb0 el0t_64_sync_handler+0x118/0x128 el0t_64_sync+0x168/0x170 INFO: task fsfreeze:7364 blocked for more than 15 seconds. Not tainted 6.12.0-rc5-00063-g76aaf945701c #7963 burada dondurma cəhdi rwsem-ni götürməyə çalışarkən ilişib qalır: task:fsfreeze state:D stack:0 pid:7364 tgid:7364 ppid:995 Call trace: __switch_to+0x1d8/0x348 __schedule+0x8e8/0x2248 schedule+0x110/0x3f0 percpu_down_write+0x2b0/0x680 freeze_super+0x248/0x8a8 do_vfs_ioctl+0x149c/0x1b18 __arm64_sys_ioctl+0xd0/0x1a0 invoke_syscall+0x74/0x268 el0_svc_common.constprop.0+0x160/0x238 do_el0_svc+0x44/0x60 el0_svc+0x44/0xb0 el0t_64_sync_handler+0x118/0x128 el0t_64_sync+0x168/0x170 Bu problem, io_uring tərəfinin IOCB_NOWAIT-ə riayət etməsi və yalnız o təyin edilmədikdə super blok rwsem-nin bloklayan tutulmasına cəhd etməsi ilə həll edilir. IOCB_NOWAIT-in həmişə təyin edildiyi normal hallarda, bu -EAGAIN qaytaracaq və io_uring nüvəsi yazmanın bloklayan cəhdini icra edəcək. Bu isə öz növbəsində tamamlamaların işə düşməsini təmin edərək irəliləyişi təmin edəcək. Dondurma prosesi ilk növbədə CAP_SYS_ADMIN tələb etdiyi üçün, bu, adi istifadəçi tərəfindən tetiklene biləcək bir şey deyil.

CiddilikOrta
CVSS4.4
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc19 noy 2024
İlk görülmə19 noy 2024
Zəiflik növüCWE-667CWE-667

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.10.230, 5.15.172, 6.1.116, 6.6.60, 6.11.7 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernelv < 5.10.230, 5.11 ≤ v < 5.15.172, 5.16 ≤ v < 6.1.116, 6.2 ≤ v < 6.6.60, 6.7 ≤ v < 6.11.7, 6.125.10.230, 5.15.172, 6.1.116, 6.6.60, 6.11.7

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.