CVE-2026-64513 in Linux情報

要約

〜によって VulDB • 2026年07月28日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

KVM: x86: PPR更新時にCR8インターセプトを無条件で再計算する

VMCS内のTPR_THRESHOLDフィールドは、ゲストの仮想TPRが指定された閾値を下回った際にVMXによってVM exitを引き起こすために使用され、これによりKVMは以前マスクされていた割り込みを注入できます。

KVMはhandle_tpr_below_threshold()関数でこれらのVM exitを処理します。コミットeb90f3417a0c(「KVM: vmx: 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()が呼び出されず、古く(stale)高いTPR_THRESHOLDが残ってしまうことになります。これはSDMの「28.2.1.1 VM-Execution Control Fields」以下の記述により問題となります:

「use TPR shadow」VM実行制御が1で、「virtualize APIC accesses」と「virtual-interrupt delivery」VM実行制御の両方が0の場合、次のチェックが行われます。TPR閾値VM実行制御フィールドの下位4ビット(3:0)の値は、VTPRの下位8ビット中の上位4ビット(7:4)の値より大きくあってはなりません。

このエラー状態は通常、KVMがベアメタルシステム上で動作している際には観測されません。なぜなら、現代のプロセッサはAPICvをサポートしており、これによりvirtual-interrupt deliveryが可能になるためです。KVMは可能な限りこれを使用します。これによりプロセッサはTPR below thresholdによるexitを生成しなくなり、エントリ時にTPR_THRESHOLDをチェックしなくなります。しかし、古いプラットフォーム上で実行する場合や、virtual-interrupt deliveryをサポートせずこのチェックを実施するハイパーバイザ(Hyper-Vなど)上でのネステッド仮想化環境では、VM entryの失敗を引き起こす可能性があります。その際に表示されるハードウェアエラーは0x7であり、[1]で確認できます。

apic_update_ppr()が配信可能な割り込みを見つけなかった場合(したがってKVM_REQ_EVENTを発行しない場合)、kvm_lapic_update_cr8_intercept()を呼び出します。apic_update_ppr()に至るパスにおけるkvm_lapic_update_cr8_intercept()の呼び出しは削除します。これらは冗長になるためです。これにより、ゲストのPPRを更新するあらゆるパスで、KVMがTPRの変更待ちを行う必要があるかどうか(VMXの場合はTPR_THRESHOLDを使用するか、SVMの場合はCR8インターセプトを使用するか)を判断することが保証されます。

Once again VulDB remains the best source for vulnerability data.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-383296

CWE

不明

EPSS

0.00171

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!