🔍 CVE-2026-97960

0.0
CVSS Score
UNKNOWN
2026-09-25
2026-10-21 13:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 x86 Intel PEBS 버퍼 처리 과정에서 drain_pebs() 함수가 재진입될 수 있는 취약점이 발견되었습니다. 이로 인해 프로세스 컨텍스트에서 PMU가 완전히 비활성화되지 않을 경우, stale 버퍼 상태를 참조하여 메모리 경계를 벗어난 접근(Out-of-bound access)이 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터의 성능을 측정하는 도구가 데이터를 정리하는 도중에 갑자기 다시 실행되면서, 잘못된 메모리 영역을 건드릴 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: perf/x86/intel: Prevent drain_pebs() reentry The PEBS buffer is shared by all events on a CPU, so drain_pebs() must not be reentered. If so, one instance may observe stale buffer state and potentially access out-of-bound memory. Most invocations happen in NMI context, which naturally prevents reentry. However, drain_pebs() is also reachable from process context via intel_pmu_drain_pebs_buffer(). In those paths, the PMU is often already disabled, but not guaranteed. For example, __intel_pmu_pebs_disable() only disables the target counter, so other active counters can still raise a PMI and interrupt an in-flight drain_pebs(). Here is an example, __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() Introduce __intel_pmu_quiesce() and __intel_pmu_resume() helpers and use them in intel_pmu_drain_large_pebs() to disable the full PMU around the intel_pmu_drain_pebs_buffer() call, preventing reentry. Also add a warning in intel_pmu_drain_pebs_buffer() when the full PMU is not disabled.

📍 영향받는 시스템

Intel CPU를 사용하는 Linux 커널 (패치 적용 전 버전)

⚔️ 공격 벡터

특정 프로세스 컨텍스트에서 PMU(Performance Monitoring Unit)를 조작하여 drain_pebs()의 재진입을 유도하는 방식

🛡️ 대응 방법

커널 업데이트를 통해 __intel_pmu_quiesce() 및 __intel_pmu_resume() 헬퍼 함수가 적용된 최신 커널로 업데이트하십시오.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel