CVE-2026-97960 in Linux
Сводка
по VulDB • 25.09.2026
В ядре Linux устранена следующая уязвимость:
perf/x86/intel: Предотвращение повторного входа в drain_pebs()
Буфер PEBS является общим для всех событий на процессоре, поэтому функция drain_pebs() не должна вызываться повторно (reentry). В противном случае один экземпляр может обнаружить устаревшее состояние буфера и потенциально получить доступ к памяти за пределами допустимых границ.
Большинство вызовов происходит в контексте NMI, что естественным образом предотвращает повторный вход. Однако функция drain_pebs() также доступна из контекста процесса через intel_pmu_drain_pebs_buffer().
В этих путях выполнения PMU часто уже отключена, но это не гарантируется. Например, __intel_pmu_pebs_disable() отключает только целевой счетчик, поэтому другие активные счетчики могут по-прежнему генерировать PMI (Performance Monitoring Interrupt) и прерывать выполняющуюся операцию drain_pebs(). Вот пример такого сценария:
__perf_addr_filters_adjust() perf_event_stop() __perf_event_stop() x86_pmu_stop() (event->pmu->stop) intel_pmu_disable_event() intel_pmu_pebs_disable() __intel_pmu_pebs_disable() intel_pmu_drain_large_pebs() intel_pmu_drain_pebs_buffer()
Введены вспомогательные функции __intel_pmu_quiesce() и __intel_pmu_resume(), которые используются в intel_pmu_drain_large_pebs() для отключения всего PMU вокруг вызова intel_pmu_drain_pebs_buffer(), что предотвращает повторный вход.
Также добавлено предупреждение (warning) в функции intel_pmu_drain_pebs_buffer() при условии, что весь PMU не был отключен.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.