CVE-2026-97937 in Linuxthông tin

Tóm tắt

Bởi VulDB • 25/09/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

ftrace: fork: Khởi tạo trạng thái đồ thị hàm (function graph) trước khi gọi copy_exec_state()

Hàm dup_task_struct() sao chép task_struct của cha, bao gồm cả ret_stack. Hàm ftrace_graph_init_task() xóa sạch trạng thái đồ thị hàm đã sao chép, nhưng hiện tại nó được thực thi sau copy_exec_state().

Đối với các fork không sử dụng CLONE_VM, copy_exec_state() sẽ phân bổ một task_exec_state mới. Nếu việc phân bổ này thất bại, copy_process() sẽ chuyển đến bad_fork_free và free_task() gọi ftrace_graph_exit_task(). Vì tiến trình con vẫn giữ con trỏ ret_stack của cha, quá trình unwind (mở rộng ngăn xếp) sẽ giải phóng stack trả về đồ thị hàm đang hoạt động của cha. Sau đó, cha truy cập vào bộ nhớ đã bị giải phóng từ function_graph_enter_regs().

KASAN báo cáo:

[ 22.190920] ==================================================================
[ 22.195899] BUG: KASAN: slab-use-after-free trong function_graph_enter_regs+0xa76/0xb90
[ 22.200747] Ghi kích thước 8 tại địa chỉ ff110000054dc0a8 bởi tiến trình repro/1
[ 22.205134]
[ 22.210770] CPU: 0 UID: 0 PID: 1 Comm: repro Không bị lỗi (Not tainted) 7.2.0-07732-g9328b3b03bdc-dirty #3 PREEMPT(lazy)
[ 22.212576] Tên phần cứng: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[ 22.213750] Dấu vết cuộc gọi (Call Trace):
[ 22.215271] <TASK>
[ 22.216242] ? ftrace_stub_direct_tramp+0x10/0x10
[ 22.217774] dump_stack_lvl+0x4e/0x70
[ 22.220531] print_report+0x157/0x4b4
[ 22.223202] ? fixup_red_left+0x9/0x30
[ 22.224407] ? complete_report_info+0x83/0x110
[ 22.226679] ? function_graph_enter_regs+0xa76/0xb90
[ 22.228084] kasan_report+0xce/0x100
[ 22.230109] ? function_graph_enter_regs+0xa76/0xb90
[ 22.232860] ? stack_trace_save+0x4/0xd0
[ 22.234156] function_graph_enter_regs+0xa76/0xb90
[ 22.236090] ? kasan_save_stack+0x30/0x50
[ 22.237752] ? __pfx_function_graph_enter_regs+0x10/0x10
[ 22.238694] ? ring_buffer_lock_reserve+0x345/0xf80
[ 22.239628] ? stack_trace_save+0x4/0xd0
[ 22.242121] ? stack_trace_save+0x4/0xd0
[ 22.243588] ftrace_graph_func+0xda/0x160
[ 22.245362] ? ftrace_stub_direct_tramp+0x10/0x10
[ 22.246520] 0xffffffffa0000095
[ 22.250528] ? stack_trace_save+0x9/0xd0
[ 22.251757] ? ring_buffer_unlock_commit+0x11d/0x5c0
[ 22.253152] stack_trace_save+0x9/0xd0
[ 22.254264] kasan_save_stack+0x30/0x50
[ 22.273631] kasan_save_track+0x14/0x30
[ 22.276763] kasan_save_free_info+0x3b/0x70
[ 22.278296] __kasan_slab_free+0x43/0x70
[ 22.280157] kmem_cache_free+0xbf/0x3b0
[ 22.282963] ? ftrace_stub_direct_tramp+0x10/0x10
[ 22.284001] free_task+0xa2/0x160
[ 22.285699] ? ftrace_stub_direct_tramp+0x10/0x10
[ 22.286752] copy_process+0x2aae/0x7bc0

Khởi tạo trạng thái đồ thị hàm của tiến trình con ngay sau dup_task_struct(), trước thao tác có thể thất bại đầu tiên.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

25/09/2026

Tiết lộ

25/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you want to use VulDB in your project?

Use the official API to access entries easily!