### 关键漏洞信息 - **漏洞描述**: - 在KVM中,当虚拟CPU (vCPU) 在系统管理模式 (SMM) 下遇到SHUTDOWN中断时,KVM会强制执行vCPU INIT。这会导致触发一个WARN。 - **相关提交**: - 此问题源于之前的提交 `ed129ec9057f` ("KVM: x86: forcibly leave nested mode on vCPU reset"),该提交解决了在嵌套模式下发生三次故障时可能导致use-after-free的问题,但未处理SMM情况。 - **复现步骤**: 1. 创建一个KVM VM和vCPU。 2. 发送KVM_SMI ioctl指令显式进入SMM。 3. 执行无效指令导致连续异常,最终引发三次故障。 - **错误日志**: ```plaintext WARNING: CPU: 0 PID: 25506 at arch/x86/kvm/x86.c:12112 kvm_vcpu_reset+0x1d2/0x1530 arch/x86/kvm/x86.c:12112 Modules linked in: CPU: 0 PID: 25506 Comm: syz-executor.0 Not tainted 6.1.130-syzkaller-00157-g164fe5dde9b6 #0 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS: 1.12.0-1 04/01/2014 RIP: 0010:kvm_vcpu_reset+0x1d2/0x1530 arch/x86/kvm/x86.c:12112 Call Trace: shutdown_interception+0x66/0xb0 arch/x86/kvm/svm/svm.c:2136 svm_invoke_exit_handler+0x110/0x530 arch/x86/kvm/svm/svm.c:3395 svm_handle_exit+0x424/0x920 arch/x86/kvm/svm/svm.c:3457 vcpu_enter_guest arch/x86/kvm/x86.c:10959 [inline] vcpu_run+0xc43/0x5a90 arch/x86/kvm/x86.c:11062 kvm_arch_vcpu_ioctl_run+0x50f/0x1cfc0 arch/x86/kvm/x86.c:11283 kvm_vcpu_ioctl+0x570/0x800 arch/x86/kvm/.../.../virt/kvm/kvm_main.c:4122 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:870 [inline] __se_sys_ioctl fs/ioctl.c:856 [inline] __x64_sys_ioctl+0x19a/0x210 fs/ioctl.c:856 do_syscall_x64 arch/x86/entry/common.c:51 [inline] ``` - **修复措施**: - 提交 `e9b28bc65fd3a56755ba503258024608292b4ab1` 强制离开SMM模式以解决此问题。