CVE-2023-52707

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: sched/psi: ep_remove_wait_queue() funksiyasında use-after-free xətasının düzəldilməsi Əgər trigger qeydiyyatdan keçmiş və cgroup daxilindəki təzyiq faylında (pressure file) sorğu göndərən (polling) bir thread olduğu halda root olmayan cgroup silinərsə, polling waitqueue aşağıdakı yolla azad edilir: do_rmdir cgroup_rmdir kernfs_drain_open_files cgroup_file_release cgroup_pressure_release psi_trigger_destroy Lakin, polling thread hələ də təzyiq faylına istinada malikdir və fayl bağlanarkən və ya çıxış zamanı azad edilmiş waitqueue-ya müraciət edəcəkdir: fput ep_eventpoll_release ep_free ep_remove_wait_queue remove_wait_queue Bu, aşağıda göstərildiyi kimi use-after-free ilə nəticələnir. Buradakı əsas problem cgroup_file_release()-in (və nəticədə waitqueue-nun ömrünün) faylın real ömrü ilə bağlı olmamasıdır. Burada wake_up_pollfree()-dən istifadə etmək ideal olmaya bilər, lakin waitqueue-nun ömrü faylın ömrünə bağlı olmadığı üçün bu, 42288cb44c4b ("wait: add wake_up_pollfree()") commit-indəki şərhə uyğundur və digər xüsusi hal kimi nəzərdən keçirilə bilər. Bu, cgroup_file_release()-i hansısa şəkildə fput()-a bağlamaqla düzəldilə bilsə də, bu, cgroups və ya daha yüksək səviyyədə geniş refaktorinq tələb edərdi ki, bu da yalnız oxşar halların sayı artdıqda əsaslandırıla bilər. BUG: KASAN: use-after-free in _raw_spin_lock_irqsave+0x60/0xc0 Write of size 4 at addr ffff88810e625328 by task a.out/4404 CPU: 19 PID: 4404 Comm: a.out Not tainted 6.2.0-rc6 #38 Hardware name: Amazon EC2 c5a.8xlarge/, BIOS 1.0 10/16/2017 Call Trace: <TASK> dump_stack_lvl+0x73/0xa0 print_report+0x16c/0x4e0 kasan_report+0xc3/0xf0 kasan_check_range+0x2d2/0x310 _raw_spin_lock_irqsave+0x60/0xc0 remove_wait_queue+0x1a/0xa0 ep_free+0x12c/0x170 ep_eventpoll_release+0x26/0x30 __fput+0x202/0x400 task_work_run+0x11d/0x170 do_exit+0x495/0x1130 do_group_exit+0x100/0x100 get_signal+0xd67/0xde0 arch_do_signal_or_restart+0x2a/0x2b0 exit_to_user_mode_prepare+0x94/0x100 syscall_exit_to_user_mode+0x20/0x40 do_syscall_64+0x52/0x90 entry_SYSCALL_64_after_hwframe+0x63/0xcd </TASK> Allocated by task 4404: kasan_set_track+0x3d/0x60 __kasan_kmalloc+0x85/0x90 psi_trigger_create+0x113/0x3e0 pressure_write+0x146/0x2e0 cgroup_file_write+0x11c/0x250 kernfs_fop_write_iter+0x186/0x220 vfs_write+0x3d8/0x5c0 ksys_write+0x90/0x110 do_syscall_64+0x43/0x90 entry_SYSCALL_64_after_hwframe+0x63/0xcd Freed by task 4407: kasan_set_track+0x3d/0x60 kasan_save_free_info+0x27/0x40 ____kasan_slab_free+0x11d/0x170 slab_free_freelist_hook+0x87/0x150 __kmem_cache_free+0xcb/0x180 psi_trigger_destroy+0x2e8/0x310 cgroup_file_release+0x4f/0xb0 kernfs_drain_open_files+0x165/0x1f0 kernfs_drain+0x162/0x1a0 __kernfs_remove+0x1fb/0x310 kernfs_remove_by_name_ns+0x95/0xe0 cgroup_addrm_files+0x67f/0x700 cgroup_destroy_locked+0x283/0x3c0 cgroup_rmdir+0x29/0x100 kernfs_iop_rmdir+0xd1/0x140 vfs_rmdir+0xfe/0x240 do_rmdir+0x13d/0x280 __x64_sys_rmdir+0x2c/0x30 do_syscall_64+0x43/0x90 entry_SYSCALL_64_after_hwframe+0x63/0xcd

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc21 may 2024
İlk görülmə21 may 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.4.232, 5.10.169, 5.15.95, 6.1.13 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.2 ≤ v < 5.4.232, 5.5 ≤ v < 5.10.169, 5.11 ≤ v < 5.15.95, 5.16 ≤ v < 6.1.13, 6.25.4.232, 5.10.169, 5.15.95, 6.1.13

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.

CVE-2023-52707 · Linux Kernel · Dark Radar