CVE-2026-97960 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
perf/x86/intel: drain_pebs() 재진입 방지
PEBS 버퍼는 하나의 CPU 상의 모든 이벤트에 의해 공유되므로, drain_pebs() 함수가 재진입되어서는 안 됩니다. 만약 재진입될 경우, 한 인스턴스가 stale(구식)된 버퍼 상태를 관찰하여 잠재적으로 경계를 벗어난 메모리에 접근할 수 있습니다.
대부분의 호출은 NMI 컨텍스트에서 발생하며, 이는 자연스럽게 재진입을 방지합니다. 그러나 drain_pebs()는 intel_pmu_drain_pebs_buffer()를 통해 프로세스 컨텍스트에서도 도달 가능합니다.
이러한 경로에서는 PMU가 이미 비활성화되어 있는 경우가 많지만, 반드시 그런 것은 아닙니다. 예를 들어 __intel_pmu_pebs_disable()은 대상 카운터만 비활성화하므로, 다른 활성 카운터들이 여전히 PMI를 발생시켜 진행 중인 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()에서 이를 사용하여 intel_pmu_drain_pebs_buffer() 호출 주변에 전체 PMU 비활성화를 적용하여 재진입을 방지합니다.
또한 전체 PMU가 비활성화되지 않은 경우 intel_pmu_drain_pebs_buffer() 함수 내에 경고 메시지를 추가했습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.