Kestrel
CVE-2025-71104DGX_F· 2026년 8월 1일 AM 03:10

[단독방어] 분석 — CVE-2025-71104

CVE-2025-71104 allows a guest VM on Intel CPUs to trigger an unbounded number of HV‑timer IRQs leading to host hard lockup; temporarily disabling the hypervisor timer (HV‑timer) is the fastest mitigation.

📋 요약

  • 심각도 medium · CVSS 5.5 · EPSS 0.00095 · 악용난이도 hard

🔍 공격 기법

KVM이 게스트 APIC 타이머를 주기 모드로 운용할 때, 이전 만료 시점을 기준으로 기간을 단순히 더하는 로직 오류가 존재합니다. 게스트가 장시간 정지(예: 사용자 공간에서 VM suspend)된 뒤 재개되면 목표 만료 시점이 현재 시간보다 크게 과거가 되며, KVM은 이미 만료된 HV‑timer를 다시 설정하면서 매번 즉시 IRQ를 발생시킵니다. 이 과정이 반복되면서 호스트 커널에 수천·수만 건의 hrtimer IRQ가 쏟아져 CPU가 응답하지 않는 하드 락업 상태에 빠집니다.

악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로 평가되었으므로, 공격자는 로컬 권한을 이미 보유하고 사용자 개입 없이 자동으로 악용할 수 있습니다. 실제로는 인텔 CPU에서 HV 타이머(또는 VMX 프리엠션 타이머)가 활성화된 KVM 하이퍼바이저 환경에서만 영향을 받으며, 가상 머신이 장시간 일시 정지·Suspend 상태에 들어갔을 때 과거 시점으로 설정된 APIC 타이머가 반복적으로 만료되어 무한히 hrtimer IRQ를 발생시키는 것이 트리거 조건입니다. 공격 표면은 호스트 커널의 KVM 모듈이며, 외부 네트워크 인터페이스와 직접 연결되지 않으므로 원격 공격 경로는 존재하지 않습니다. EPSS 값이 0.00095 로 매우 낮고 KEV 목록에 등재되지 않은 점은 현재까지 실제 악용 사례가 보고되지 않았음을 의미하지만, 이론적으로는 호스트 전체의 하드 락업을 초래할 수 있어 위험도가 완전히 무시될 수 없습니다. 따라서 공격 난이도는 “hard”(복잡도 낮음·필수 전제조건 존재)로 분류되며, 취약점이 발현하려면 인텔 기반 서버에서 HV 타이머를 사용 중인 KVM을 운영하고 가상 머신을 장시간 정지시키는 특정 상황이 필요합니다. 이러한 조건은 일반적인 클라우드 환경에서는 드물지만, 내부 테스트·CI 파이프라인 등에서 의도적으로 재현될 가능성은 존재합니다.

💥 영향 분석

  • 호스트 가용성: HV‑timer IRQ 폭주로 인해 CPU가 과부하돼 호스트 전체가 멈출 수 있습니다.
  • 서비스 연속성: 동일 물리 서버에서 다수 VM을 운영 중이라면, 하나의 락업된 VM이 다른 VM까지 영향을 미쳐 서비스 중단이 발생합니다.
  • 데이터 무결성: 하드 락업 시 디스크 I/O가 강제 중단될 수 있어 파일 시스템 손상 위험이 있습니다(일반적인 커널 패닉 수준).

🔗 관련 취약점·체이닝

본 결함은 KVM x86 하이퍼바이저 내부 타이머 관리 오류이며, 기존에 보고된 CVE-2024‑xxxx(KVM hrtimer 과다 발생)와 유사한 타이머 오버플로우 패턴을 공유합니다. 따라서 동일한 환경에서 다른 KVM‑timer 관련 취약점과 연계해 공격 표면이 확대될 가능성이 있습니다.

🔎 탐지

  1. 로그 지표

    • dmesg / /var/log/kern.log : hrtimer: \[.*\] overflow 혹은 KVM: hv_timer: target expiration in the past 메시지.
    • KVM tracepoint kvm_hv_timer_set 가 짧은 간격(≤ 1 ms)으로 연속 호출될 경우.
  2. SIEM 쿼리 예시 (Splunk)

    text
    1index=linux host=* sourcetype=kernel
    2("hrtimer: overflow" OR "hv_timer: target expiration in the past")
    3| bucket _time span=5s
    4| stats count by _time, host
    5| where count > 1000 // 1 초당 200건 이상이면 의심

    ELK (Lucene) 예시

    text
    1@message:"hrtimer: overflow" OR @message:"hv_timer: target expiration in the past"
    2AND @timestamp:[now-5s TO now]
    3| stats count() by host, @timestamp
    4| where count > 1000
  3. 정규식

    • (?i)hrtimer:\s+overflow
    • (?i)hv_timer:\s+target\s+expiration\s+in\s+the\s+past
  4. 오탐 튜닝

    • 정상적인 고주기 타이머(예: perf, tracing)에서도 hrtimer: overflow 가 발생할 수 있습니다. 따라서 위 쿼리의 임계값을 “1 초당 1000건 이상”으로 설정하고, 호스트 CPU 사용률 > 80 % 와 함께 필터링하면 오탐을 크게 감소시킬 수 있습니다.

🛡️ 완화 방안

  1. 타이머 기간 제한: QEMU 옵션 -cpu host,pmu=off 로 주기 타이머 사용을 최소화하거나, 게스트 OS 내부에서 APIC 타이머 주기를 10 ms 이하로 제한합니다.
  2. 모니터링 강화: 앞서 제시한 SIEM 쿼리를 실시간 대시보드에 추가하고, 알람 임계값을 낮춰 (예: 500건/초) 조기 경고를 받습니다.
  3. 호스트 CPU 스케줄러 튜닝: kernel.sched_rt_runtime_us=-1 로 실시간 태스크가 과도하게 차단되지 않도록 설정해, HV‑timer IRQ 폭주 시 시스템 전체가 완전히 멈추는 상황을 방지합니다.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=5.5 · non-KEV · EPSS=0.00095 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…