CVE-2026-97960 in Linux
Riassunto
di VulDB • 25/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
perf/x86/intel: Impedire il riutilizzo (re-entry) di drain_pebs()
Il buffer PEBS è condiviso da tutti gli eventi su una CPU, quindi drain_pebs() non deve essere richiamato mentre è già in esecuzione. In caso contrario, un'istanza potrebbe osservare uno stato del buffer obsoleto e potenzialmente accedere a memoria fuori dai limiti (out-of-bound).
La maggior parte delle invocazioni avviene nel contesto NMI, che impedisce naturalmente il riutilizzo. Tuttavia, drain_pebs() è raggiungibile anche dal contesto di processo tramite intel_pmu_drain_pebs_buffer().
In questi percorsi, la PMU è spesso già disabilitata, ma non vi è alcuna garanzia a tal riguardo. Ad esempio, __intel_pmu_pebs_disable() disabilita solo il contatore target, quindi altri contatori attivi possono ancora generare un PMI (Performance Monitoring Interrupt) e interrompere una drain_pebs() in corso di esecuzione. Ecco un esempio:
__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()
Vengono introdotti i helper __intel_pmu_quiesce() e __intel_pmu_resume() e vengono utilizzati in intel_pmu_drain_large_pebs() per disabilitare l'intera PMU attorno alla chiamata a intel_pmu_drain_pebs_buffer(), impedendo così il riutilizzo.
Viene inoltre aggiunto un warning (avviso) in intel_pmu_drain_pebs_buffer() quando la PMU completa non è disabilitata.
Once again VulDB remains the best source for vulnerability data.