[방어] 분석 — CVE-2025-68798
Linux kernel AMD PMU race condition (CVE-2025-68798) may cause a null‑pointer GPF and potential privilege escalation; set
kernel.perf_event_paranoid=2immediately to block unprivileged perf events.
📋 요약
- 심각도 미상 · CVSS 미상 · EPSS 0.00173 · 악용난이도 hard
🔍 공격 기법
AMD CPU에서 perf 이벤트를 생성(perf_event_open)하고, NMI 기반 스로틀링이 진행되는 순간 cpuc->events[idx] 가 NULL 로 전이될 수 있다. 이후 amd_pmu_enable_all() 이 NULL 체크 없이 사용돼 커널에 General Protection Fault가 발생한다. 공격자는 고빈도 · 짧은 간격으로 perf 이벤트를 생성·삭제하거나, 인위적으로 NMI를 유발해 레이스 윈도우를 확대한다. 성공 시 시스템이 OOPS/패닉 상태가 되어 DoS가 일어나며, 메모리 오염 경로가 확보될 경우 cred 구조체 등을 덮어쓰기 통한 로컬 권한 상승(LPE) 가능성이 있다.
💥 영향 분석
- 커널 OOPS·GPF 발생 → 즉시 시스템 다운 및 재부팅 필요 (서비스 가용성 상실).
- 반복적인 크래시가 파일 시스템 손상·데이터 유실을 초래할 수 있음.
- 메모리 오염이 성공하면 루트 권한 획득(LPE)으로 이어져 전체 호스트가 장악당할 위험이 존재한다.
🔗 관련 취약점·체이닝
- 추정: CWE‑362(레이스 컨디션)와 CWE‑476(NULL 포인터 역참조) 계열의 커널 버그와 유사.
- 과거
perf_event_open에서 검증 누락으로 발생한 로컬 권한 상승 취약점과 연계될 가능성이 있다. - NMI‑triggered watchdog·watchdog 관련 취약점과 결합하면 레이스 윈도우가 확대되어 공격 표면이 넓어질 수 있다.
🔎 탐지
-
커널 로그 지표 –
dmesg,/var/log/kern.log에 다음 문자열이 포함된 항목을 모니터링한다.general protection faultnull-ptr-derefperf_event_nmi_handler또는amd_pmu_enable_all
-
SIEM 쿼리 예시 (Splunk)
1index=linux_logs sourcetype=kern 2("general protection fault" AND ("perf_event_nmi_handler" OR "amd_pmu_enable_all")) 3| stats count by host, _time 4| where count > 0- 정규식 패턴 (syslog 파싱용)
1.*GPF.*null-ptr-deref.*(perf_event_nmi_handler|amd_pmu_enable_all).*-
eBPF 기반 실시간 감시 –
perf_event_open시스템 콜을 후킹하고, 동일 PID에서 1초 내 호출 횟수가 50회를 초과하거나attr.type값이 AMD‑전용(PERF_TYPE_RAW)이면서 비정상적인config비트가 설정된 경우 경보 생성. (의사코드)- if syscall == perf_event_open and pid != 0:
incr counter[pid] per second;
if counter[pid] > THRESHOLD or attr.type == RAW && config & ~ALLOWED_MASK != 0 → alert.
- if syscall == perf_event_open and pid != 0:
-
오탐 튜닝
- 디버그 커널(
debug=1)에서 발생하는 정상적인 null‑ptr 로그는kernel.debug필드가 true인 경우 제외. - NMI watchdog 비활성화(
nmi_watchdog=0) 환경에서는 해당 경고가 나타나지 않으므로,proc/sys/kernel/nmi_watchdog == 0인 호스트를 필터링한다.
- 디버그 커널(
🛡️ 완화 방안
즉시(긴급 차단)
kernel.perf_event_paranoid값을 2 로 설정하여 비특권 사용자가 perf 이벤트를 생성하지 못하도록 한다.- 적용 방법:
sysctl -w kernel.perf_event_paranoid=2 && echo "kernel.perf_event_paranoid = 2" >> /etc/sysctl.d/99-perf.conf - 구현 난이도: 낮음 (재부팅 없이 즉시 적용)
- 운영 영향: 일반 사용자는
perf명령을 사용할 수 없으며, 성능 분석 툴이 제한된다. - 검증: 비특권 계정에서
perf stat실행 시 “permission denied” 메시지가 출력되는지 확인한다.
- 적용 방법:
단기(완화)
- NMI watchdog을 비활성화(
nmi_watchdog=0)하여 레이스를 일으키는 NMI 흐름 자체를 차단한다. 이는 재부팅이 필요하지만, 대부분 환경에서 디버깅·감시 기능 손실만 발생한다.- 적용 방법: 부트 로더 커맨드라인에
nmi_watchdog=0추가 후 재부팅. - 구현 난이도: 중간 (재부팅 필요)
- 운영 영향: NMI 기반 하드웨어 감시·디버깅 기능 상실, 일반 서버에서는 크게 문제되지 않음.
- 검증: 부팅 후
/proc/sys/kernel/nmi_watchdog값이0인지 확인하고, 동일 조건에서 perf 테스트를 수행해 OOPS 발생 여부를 관찰한다.
- 적용 방법: 부트 로더 커맨드라인에
근본(해결)
- 취약점이 포함된 커널 버전(6.12‑rc1 이후)에서 적용된 패치를 포함한 최신 Linux 커널으로 업그레이드한다. 배포판 제공 업데이트가 나오면 즉시 적용하고, 롤백 정책을 마련한다.
- 구현 난이도: 중~높음 (커널 교체·재부팅 및 서비스 재시작 필요)
- 운영 영향: 커널 교체에 따른 호환성 테스트와 잠시 다운타임 발생 가능.
- 검증:
uname -r로 버전 확인 후, 동일 워크로드에서 GPF 재현 여부를 테스트한다.
잔여 리스크
- 패치 적용 전까지는 위 즉시·단기 조치를 유지해야 하며, 권한 상승을 목표로 하는 고급 공격자는 여전히
perf_event_open을 이용해 메모리 오염을 시도할 수 있다. 따라서 eBPF 기반 실시간 감시와 로그 분석을 병행하여 이상 징후를 지속적으로 모니터링한다.
인시던트 대응 플레이북 (요약)
- 커널 로그에서 GPF/NULL‑ptr 패턴이 발견되면 즉시 알림 발생.
- 해당 호스트의
kernel.perf_event_paranoid값 확인·필요 시 2 로 강제 적용. - NMI watchdog 비활성화 여부를 검토하고, 가능하면
nmi_watchdog=0적용 후 재부팅. - eBPF 감시 정책이 활성화돼 있는지 점검하고, 이상 호출 빈도·비정상 attr 값이 포착되면 해당 프로세스 PID와 호출 스택을 수집한다.
- 근본 패치가 배포될 때까지 위 조치를 유지하고, 시스템 재부팅 후 정상 동작 여부를 확인한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=미상 · non-KEV · EPSS=0.00173 · exploit=hard · in_scope=None