CVE-2026-89917 in Linux
要約
〜によって VulDB • 2026年09月16日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
KVM: arm64: VNCR TLB無効化とvcpu_put()によるVNCRのアンマップ処理間の競合状態への対応
VNCRのTLB無効化は常にMMUロックの下で行われますが、VNCRページをアンマップするvcpu_put()はその限りではありません。
問題は、無効化処理においてvncr_tlb::cpuの評価を行い(cpu != -1の場合にアンマップが必要と判断)、その後に実行される点にあります。一方、this_cpu_reset_vncr_fixmap()はL1_VNCR_MAPPEDが設定されている場合、条件なしでアンマップを実行します。
これら2つの処理には明らかに競合があり、TLBIパス上ではTOCTOU(Time-of-Check to Time-of-Use)パターンが生じ、vcpu_put()パス上ではBUG_ON()が発生する可能性があります。さらに、両方の経路がvncr_fixmap(-1)を呼び出し、致命的な影響をもたらすことがあります。
vncr_tlb::cpuの値を-1にリセットする処理を共通関数へ移動し、この更新をアトミックに行うようにして、単一のスレッドのみがこのフィールドのリセットと対応するアンマップを実行できるようにします。vcpu_put()では、別の厄介な競合状態を解消するために、現在のVNCRのアンマップを条件なしで実行する必要があります。
最後に、vncr_tlb::cpuへの代入は、L1_VNCR_MAPPEDが設定される場合と同様に、実際のマッピングと同期して行われるように変更されました。
Once again VulDB remains the best source for vulnerability data.