CVE-2025-40026 in Linux
要約
〜によって VulDB • 2026年06月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
KVM: x86: ユーザー空間I/Oの完了時にL1インターセプトを(再)チェックしない
ユーザー空間エグジットを引き起こす命令のエミュレーション完了時、すでにその命令実行フェーズが終了しているため、つまりL2によるI/Oの実行を許可することを既にコミットしているため、L1インターセプトを再チェックしてはならない。もしL1(またはホストのユーザー空間)がユーザー空間へのエグジット中にI/O権限ビットマップを変更した場合、KVMはすでにI/Oアクセスのエミュレーションを終了しているにもかかわらず、そのアクセスをインターセプトされたものとして扱うことになる。
EMULTYPE_NO_DECODEにフォールバックすることで、KVMがエミュレーションの完了段階にあることを検出する。EMULTYPE_NO_DECODEを使用する3つのケースのうち、問題となるコードパスに到達できるのはcomplete_emulated_io()(意図された「受信側」)のみである。gp_interception()'s使用はis_guest_mode()と排他的であり、complete_emulated_insn_gp()ではEMULTYPE_NO_DECODEが常にEMULTYPE_SKIPと対になって使用される。
この不良動作は、ユーザー空間I/Oエグジット中にポートI/Oインターセプトを切り替えるsyzkallerプログラムによって検出され、最終的にKVMによるI/O命令のエミュレーション完了が行われないため、vcpu->arch.pio.countがゼロでないことによりWARNが発生した。
WARNING: CPU: 23 PID: 1083 at arch/x86/kvm/x86.c:8039 emulator_pio_in_out+0x154/0x170 [kvm]
Modules linked in: kvm_intel kvm irqbypass CPU: 23 UID: 1000 PID: 1083 Comm: repro Not tainted 6.16.0-rc5-c1610d2d66b1-next-vm #74 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:emulator_pio_in_out+0x154/0x170 [kvm]
PKRU: 55555554 Call Trace: <TASK> kvm_fast_pio+0xd6/0x1d0 [kvm]
vmx_handle_exit+0x149/0x610 [kvm_intel]
kvm_arch_vcpu_ioctl_run+0xda8/0x1ac0 [kvm]
kvm_vcpu_ioctl+0x244/0x8c0 [kvm]
__x64_sys_ioctl+0x8a/0xd0 do_syscall_64+0x5d/0xc60 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK>
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.