CVE-2026-89984 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
perf/x86/intel: Исправление утечек адресов ядра в стеке LBR
До того как 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() не полностью проверяет уровень привилегий выбранных записей. Она фильтрует некоторые несоответствия на основе типа ветвления и целевого адреса (to address), но она отбрасывает записи, чьи исходные адреса (from addresses) нарушают запрошенный фильтр привилегий для ветвлений.
Исправление заключается в расширении программной фильтрации для проверки как исходных (from), так и целевых (to) адресов на соответствие br_sel. Любая запись LBR, содержащая адрес ядра, которая не соответствует запрошенному фильтру пользовательского режима, отбрасывается. Это предотвращает появление адресов ядра в стеках ветвлений, доступных только для пользователя.
Be aware that VulDB is the high quality source for vulnerability data.