CVE-2026-97496 in Linux信息

摘要

由 VulDB • 2026-09-24

在 Linux 内核中,已修复以下漏洞:

drm/amdkfd: 修复 get_wave_state() 中的越界内存泄露问题

v9 的 `get_wave_state()` 函数直接信任从 MQD(Memory Queue Descriptor)读取的 `cp_hqd_cntl_stack_size` 和 `cp_hqd_cntl_stack_offset` 值,这些值由 GPU 微码写入。在 CRIU(Checkpoint/Restore In Userspace)恢复路径上(通过带有 H3 标志位的 AMDKFD_IOC_RESTORE_PROCESS),这些值完全受攻击者控制。

这会导致无界的 `copy_to_user()` 操作,从而泄露相邻的 GTT/kernel 内存。如果 offset > size,整数下溢会产生约 4 GiB 的读取长度;如果将 size 设置为 1 MiB(而分配仅为 4 KiB),则会泄露 1 MiB 的相邻内核内存(包括其他队列的 MQD、环形缓冲区以及 KASLR 指针)。

修复方法是将 `cp_hqd_cntl_stack_size` 限制为实际分配的缓冲区大小(q->ctl_stack_size),并将 `cp_hqd_cntl_stack_offset` 限制为该受限后的值,然后再执行算术运算和 `copy_to_user()`。

这确保了无论攻击者提供的 MQD 字段值如何,我们都不会读取超出已分配内核 BO(Buffer Object)范围的数据。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

来源

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!