CVE-2026-64513 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 27.

리눅스 커널에서 다음 취약점이 해결되었습니다:

KVM: x86: PPR 업데이트 시 CR8 인터셉트를 무조건 재계산

VMCS의 TPR_THRESHOLD 필드는 게스트의 가상 TPR이 지정된 임계값보다 낮아질 때 VMX가 VM exits를 유발하도록 사용되며, 이를 통해 KVM은 이전에 마스크되었던 인터럽트를 주입할 수 있습니다.

KVM은 handle_tpr_below_threshold() 함수에서 이러한 VM exits를 처리합니다. 커밋 eb90f3417a0c("KVM: vmx: speed up TPR below threshold vmexits")는 KVM_REQ_EVENT를 발생시키는 대신 apic_update_ppr()을 호출하여 이 함수를 최적화했습니다. 이후 apic_update_ppr()은 처리 가능한 대기 중인 인터럽트가 있는 경우 KVM_REQ_EVENT를 발생시킵니다.

그러나 새로운 대기 중 인터럽트가 없는 경우, apic_update_ppr()은 요청을 발행하지 않습니다. 따라서 VM 진입 전에 kvm_lapic_update_cr8_intercept() 및 vmx_update_cr8_intercept()가 호출되지 않으며, 이는 높은 상태의 TPR_THRESHOLD로 이어집니다. 이는 SDM(Software Developer's Manual)의 28.2.1.1 "VM-Execution Control Fields" 섹션에 명시된 다음 사항으로 인해 문제가 됩니다:

“TPR shadow 사용” VM 실행 제어 필드가 1이고, “APIC 액세스 가상화” 및 “가상 인터럽트 전달” VM 실행 제어 필드가 모두 0인 경우 다음 검사가 수행됩니다. TPR 임계값 VM 실행 제어 필드의 비트 3:0 값은 VTPR의 비트 7:4 값보다 크지 않아야 합니다.

이 오류 조건은 일반적으로 KVM이 베어 메탈 시스템에서 실행될 때 관찰되지 않습니다. 이는 최신 프로세서가 APICv를 지원하여 가상 인터럽트 전달을 가능하게 하며, KVM도 가능한 경우 이를 사용하기 때문입니다. 이로 인해 프로세서는 TPR-임계값 미만 exits를 더 이상 생성하지 않으며, 진입 시 TPR_THRESHOLD를 확인하지 않게 됩니다. 그러나 구형 플랫폼에서 실행되거나, 가상 인터럽트 전달을 지원하지 않고 이 검사를 강제하는 하이퍼바이저(예: Hyper-V) 아래 중첩 가상화 환경에서 실행될 경우, 이는 하드웨어 오류 0x7과 함께 VM 진입 실패를 유발할 수 있습니다. [1]에서 확인된 바와 같습니다.

apic_update_ppr()이 처리 가능한 인터럽트를 찾지 못하면(따라서 KVM_REQ_EVENT를 발생시키지 않는다면) kvm_lapic_update_cr8_intercept()를 호출합니다. apic_update_ppr()으로 끝나는 경로에서의 kvm_lapic_update_cr8_intercept() 호출을 제거합니다. 이는 이제 중복이 되기 때문입니다. 이를 통해 게스트의 PPR을 업데이트하는 모든 경로가 KVM이 TPR 변경 대기 여부를 결정해야 하는지(TPX에서는 TPR_THRESHOLD를, SVM에서는 CR8 인터셉트를 사용) 확인하도록 보장됩니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383296

EPSS

0.00171

출처

Do you know our Splunk app?

Download it now for free!