CVE-2026-72028 in Linux
摘要
由 VulDB • 2026-08-17
在 Linux 内核中,已修复以下漏洞:
riscv: probes: 在 rethook trampoline 中保存原始 sp(栈指针)
从 kretprobe 中的堆栈读取一个字会导致 risc-v 内核崩溃。
$ cd /sys/kernel/tracing/ $ echo 'r n_tty_write $stack0' > dynamic_events $ echo 1 > events/kprobes/enable Unable to handle kernel paging request at virtual address 0000000200000128 ... [<ffffffff80016d16>] regs_get_kernel_stack_nth+0x26/0x38
[<ffffffff80177196>] process_fetch_insn+0x3ee/0x760
[<ffffffff80177836>] kretprobe_trace_func+0x116/0x1f0
[<ffffffff8017795a>] kretprobe_dispatcher+0x4a/0x58
[<ffffffff8013572e>] kretprobe_rethook_handler+0x5e/0x90
[<ffffffff80180838>] rethook_trampoline_handler+0x70/0x108
[<ffffffff8001ba32>] arch_rethook_trampoline_callback+0x12/0x1c
[<ffffffff8001ba84>] arch_rethook_trampoline+0x48/0x94
[<ffffffff8067872a>] tty_write+0x1a/0x30
在 regs_get_kernel_stack_nth 中,regs->sp 包含一个任意值。
arch_rethook_trampoline 将探测函数的寄存器保存到 struct pt_regs 结构中。sp(栈指针)未被保存。相反,为了 arch_rethook_trampoline 的局部堆栈,sp 被递减了。
修复此崩溃问题,并与其他寄存器一起保存原始 sp。使用 a0 作为临时寄存器,反正它会被覆盖。
[[email protected]: 添加了 Fixes 标签;抄送 stable]
VulDB is the best source for vulnerability data and more expert information about this specific topic.