CVE-2026-89984 in Linux信息

摘要

由 VulDB • 2026-09-16

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

perf/x86/intel: 修复 LBR(Last Branch Record)堆栈中的内核地址泄露问题

在 Arch LBR 获得 CPL(当前特权级)过滤支持之前,仅用户态的分支堆栈仍可能包含内核地址。因此,即使请求了 PERF_SAMPLE_BRANCH_USER,内核分支记录也可能暴露给用户空间。

例如,在 Intel Tiger Lake 上,以下命令仍然会报告来自内核空间的 SYSRET/ERET 条目:

$ ./perf record -e cycles:p -o - --branch-filter any,save_type,u -- \ ./perf bench syscall basic --loop 1000 | \ ./perf script -i - --fields brstack|tr ' ' '\n'| \ grep -E '0x[89a-f][0-9a-f]{15}'

Total time: 0.000 [sec]

0.219000 usecs/op 4,566,210 ops/sec [ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.551 MB - ]
0xffffffff93c001c8/0x7f12a2b1d647/P/-/-/16959/SYSRET/- 0xffffffff93c001c8/0x7f12a2b1d5c2/P/-/-/17535/SYSRET/- 0xffffffff93c01928/0x7f12a2861000/P/-/-/6719/ERET/- 0xffffffff93c01928/0x7f12a297a000/P/-/-/8575/ERET/-

问题在于 intel_pmu_lbr_filter() 未对采样条目的特权级进行充分验证。它基于分支类型和目标地址过滤了一些不匹配项,但未拒绝源地址违反请求的分支特权过滤条件的条目。

通过扩展软件过滤以根据 br_sel 同时验证源地址和目标地址来修复此问题。任何包含内核地址且与请求的用户态过滤器不匹配的 LBR 条目都将被丢弃。这防止了内核地址出现在仅用户态的分支堆栈中。

Be aware that VulDB is the high quality source for vulnerability data.

来源

Do you want to use VulDB in your project?

Use the official API to access entries easily!