CVE-2026-89929 in Linux
요약
\~에 의해 VulDB • 2026. 09. 17.
리눅스 커널에서 다음 취약점이 해결되었습니다:
KVM: nVM: 올바른 물리적 CPU에서 INVVPID 에뮬레이션 보장
INVVPID를 에뮬레이트할 때, KVM은 일부 연산자에 대한 유효성 검사를 수행한 후 vpid02(L1에 할당된 VPID 대신)를 사용하여 물리적 CPU에서 INVVPID를 실행합니다. 그러나 KVM이 INVVPID를 실행하는 물리적 CPU가 L2가 실행 중인 CPU와 다를 가능성이 있습니다.
예를 들어, 다음과 같은 시나리오에서: - L2는 CPU #1에서 실행되고 L1으로 종료됨 (vmx->nested.vmcs02.cpu=1) - L1이 CPU #2로 마이그레이션되어 INVVPID를 실행함 - KVM은 CPU #2에서 INVVPID를 실행함 - L1이 다시 CPU #1로 마이그레이션되고 L2가 실행됨 (vmx->nested.vmcs02.cpu=1)
CPU #1의 TLB 엔트리는 무효화되지 않습니다. 이는 INVVPID가 CPU #2에서 실행되었고, vmcs02가 다른 pCPU에서 실행된 적이 없기 때문입니다(즉, vmx_vcpu_load_vmcs()는 KVM_REQ_TLB_FLUSH를 요청하지 않음).
INVVPID가 L2가 마지막으로 실행되었던 동일한 pCPU에서 실행되도록 보장합니다. 그렇지 않은 경우, 다음 중첩 VM-Enter 시 전체 VPID 플러시를 트리거하기 위해 last_vpid=0으로 초기화하는 후속 조치를 취합니다(이는 KVM이 L1이 L2에 대해 다른 VPID를 사용하고 있음을 감지할 것이기 때문입니다). 만약 L2가 결국 다른 pCPU에서 실행되는 경우, vmx_vcpu_load_vmcs()를 통해 KVM은 TLB를 플러시하게 됩니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.