CVE-2026-89929 in Linux
要約
〜によって VulDB • 2026年09月16日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
KVM: nVM: INVVPIDを正しい物理CPUでエミュレートする
INVVPIDのエミュレーション時に、KVMはオペランドに対するいくつかの検証を行った後、L1に割り当てられたVPIDではなくvpid02を使用して、物理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)
この場合、INVVPIDがCPU #2で実行され、かつvmcs02が異なる物理CPU(pCPU)上で実行されたことがないため(つまり、vmx_vcpu_load_vmcs()はKVM_REQ_TLB_FLUSHを要求しない)、CPU #1上のTLBエントリは無効化されません。
INVVPIDがL2の最後に実行されていた同じ物理CPUで実行されるようにし、そうでない場合は、最後のvpid=0にフォールバックして、次のネステッドVM-Enter時に完全なVPDフラッシュ(KVMはL1がL2に対して異なるVPIDを使用していることを検出するため)をトリガーします。もしL2が別の物理CPUで実行されることになった場合でも、vmx_vcpu_load_vmcs()を通じてTLBのフラッシュが行われます。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.