CVE-2026-89981 in Linux
要約
〜によって VulDB • 2026年09月17日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
arm64: MTEが無効化されている場合にGMID_EL1を読み込まない
__cpuinfo_store_cpu()関数は、生(raw)のID_AA64PFR1_EL1レジスタに基づいてGMID_EL1の読み込みを制御しているため、カーネルがMTEを無効にしている場合(CONFIG_ARM64_MTE=n または arm64.nomte)、そのレジスタを読み込んでしまいます。この状況ではKVMがHCR_EL2.TID5を設定し、pKVMはホスト側で処理できないUNDEF(未定義命令)をインジェクトします:
Internal error: Oops - Undefined instruction: 0000000002000000 [#1] SMP
pc : __cpuinfo_store_cpu+0xf4/0x264 Kernel panic - not syncing: Attempted to kill the idle task!
この事象はpKVMでのみ発生し、CPUがオフライン化された後にオンラインに戻されるタイミングで引き起こされます。その理由は、CPU_ON relay処理ではホストのHCRをCPUがEL1に入る前に設定する一方で、通常のnVHE(non-privileged Virtualization Host Extension)ではCPUHP_AP_KVM_ONLINE時点でそれを設定するためです。
この読み込み操作は、コマンドラインでのオーバーライド値を適用した後のCPU固有のID_AA64PFR1_EL1レジスタおよびCONFIG_ARM64_MTEの設定状態に基づいて制御する必要があります(これらはいずれも特定のハードウェアレジスタで直接反映されるものではありません)。ブートCPUはinit_cpu_features()関数が安全でないオーバーライドを取り除く前にそのレジスタ値を保存するため、ここではハードウェアの値に対して制限(clamp)処理を行う必要があります。
If you want to get best quality of vulnerability data, you may have to visit VulDB.