CVE-2026-43265Linux内核的KVM(基于内核的虚拟机)x86模块中存在一个安全漏洞,该漏洞源于在vCPU退出阻塞状态并检查嵌套事件时的逻辑错误。当L2(嵌套虚拟机)处于活动状态时,如果检查嵌套事件返回-EBUSY错误,系统未正确忽略该错误,导致产生虚假的用户空间退出(通常为KVM_EXIT_UNKNOWN),进而可能引起虚拟机崩溃。该漏洞的根源在于用户空间可以通过操纵MP状态和注入事件,将vCPU置于一种理论上不可能的“带事件的阻塞状态”。尽管这属于逻辑缺陷,但低权限的本地攻击者利用此漏洞可导致虚拟机可用性受损。
该漏洞发生在Linux内核KVM x86架构的`vcpu_block()`相关路径中。在正常的KVM架构设计中,vCPU不应在已经有注入事件(如异常、IRQ或NMI)的情况下进入阻塞状态。然而,用户空间(如VMM)可以通过ioctl调用(如KVM_SET_MP_STATE和KVM_INTERRUPT)人为地修改vCPU状态,使其违反这一约束,进入非法状态。当vCPU在L2模式下运行并处于这种非法状态被唤醒时,KVM在检查嵌套事件时会检测到冲突并返回-EBUSY。旧版本的代码未针对此特定场景忽略该错误码,导致KVM向用户空间产生KVM_EXIT_UNKNOWN退出,这通常会被视为致命错误,导致虚拟机进程终止。修复方案是在检查嵌套事件时显式忽略-EBUSY,允许虚拟机继续运行,从而避免因用户空间的恶意或错误操作导致虚拟机崩溃。