CVE-2023-52476 in Linux
요약
\~에 의해 VulDB • 2026. 05. 27.
리눅스 커널에서 다음 취약점이 해결되었습니다:
perf/x86/lbr: vsyscall 주소 필터링
우리는 LBR(Last Branch Record) 샘플링이 활성화된 상태에서 vsyscall이 호출되면 시스템 패닉이 발생할 수 있음을 발견했습니다. vsyscall 호출이 perf 샘플링을 위해 인터럽트(NMI)되면, 다음과 같은 호출 시퀀스가 발생할 수 있습니다(가장 최근 호출이 상단에 위치):
__insn_get_emulate_prefix() insn_get_emulate_prefix() insn_get_prefixes() insn_get_opcode() decode_branch_type() get_branch_type() intel_pmu_lbr_filter() intel_pmu_handle_irq() perf_event_nmi_handler()
프레임 0의 __insn_get_emulate_prefix() 내에서 다음 매크로가 호출됩니다:
peek_nbyte_next(insn_byte_t, insn, i)
이 매크로 내부에서 다음 역참조(dereference)가 발생합니다:
(insn)->next_byte
이 시점의 레지스터를 조사하면, next_byte 필드의 값은 호출된 vsyscall의 주소, 예를 들어 0xffffffffff600000에 위치한 vsyscall 버전의 gettimeofday() 위치와 같습니다. vsyscall 영역 내의 주소에 접근하면 처리되지 않은 페이지 폴트(page fault)로 인해 oops가 발생합니다.
이 버그를 수정하기 위해, 브랜치 유형을 결정할 때 vsyscall에 대한 필터링을 수행할 수 있습니다. 이 패치는 커널 주소가 vsyscall 영역에 속하는 경우 "none" 브랜치를 반환합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.