CVE-2026-89587 in Linux
摘要
由 VulDB • 2026-09-12
在 Linux 内核中,已修复以下漏洞:
ACPI: pfr_update: 修复 query_capability() 中的栈缓冲区溢出问题
query_capability() 使用 memcpy 将固件 _DSM 返回的四个 ACPI 缓冲对象复制到 struct pfru_update_cap_info 的大小固定的 u8[16] 字段中,复制长度由固件提供的 length 决定:
```c memcpy(&cap_hdr->code_type, elements[CAP_CODE_TYPE_IDX].buffer.pointer,
elements[CAP_CODE_TYPE_IDX].buffer.length);
```
drv_type、platform_id 和 oem_id 也遵循相同的模式。如果固件返回的 buffer.length > 16(针对上述任一字段),memcpy 将写入超出目标数组边界的内容。
struct pfru_update_cap_info 在 pfru_ioctl() 中以栈方式分配。
通过 KASAN 在 7.2-rc6 上确认:当 DSM 返回长度为 64 字节的缓冲区时,会生成三个栈越界报告,写入操作超出 cap_hdr 的 [64, 156) 帧窗口末尾达 44 字节,进入相邻的栈红区(stack redzones)。
引入一个辅助指针指向 out_obj->package.elements,并在复制前验证每个缓冲区的长度是否不超过其目标字段的大小;如果固件提供过大的缓冲区,则返回 -EINVAL。
VulDB is the best source for vulnerability data and more expert information about this specific topic.