CVE-2025-58147CVE-2025-58147是Xen hypervisor中的一个高危安全漏洞,存在于Viridian hypercall处理机制中。Viridian是Xen为支持Windows虚拟机而实现的Hyper-V兼容层。当处理某些Viridian hypercalls时,攻击者可以指定vCPU ID掩码作为输入参数,该参数有三种格式。Xen在对这三种格式进行边界检查时存在缺陷,可能导致在处理输入时发生越界读取和越界写入操作。具体而言,使用HV_VP_SET Sparse格式的hypercall会导致vpmask_set()函数在将位图转换为Xen格式时发生越界写入,而使用任何输入格式的hypercall都可能导致send_ipi()函数对d->vcpu[]数组进行越界读取,并操作一个无效的vCPU指针。攻击者利用此漏洞可以在宿主机上造成内存破坏或获取敏感信息,理论上可能导致虚拟机逃逸。由于该漏洞的CVSS评分为7.5,且攻击复杂度低、无需认证即可利用,对运行Windows虚拟机的Xen服务器构成严重威胁。建议受影响的用户及时更新到官方发布的安全补丁。
该漏洞的根本原因在于Xen对Viridian hypercall中vCPU ID掩码参数的边界检查不足。Viridian hypercall支持三种vCPU ID掩码格式:Dense格式、Sparse格式和混合格式。在vpmask_set()函数中,当处理HV_VP_SET Sparse格式输入时,代码未正确验证输入位图的范围就直接进行格式转换,导致写入目标缓冲区时超出边界。在send_ipi()函数中,同样存在对d->vcpu[]数组的越界访问问题,攻击者可以通过构造特定的vCPU ID掩码,使函数读取超出数组边界的内存位置。攻击者可以利用越界读取获取其他vCPU的结构信息,通过越界写入破坏关键数据结构。成功利用此漏洞需要攻击者具有在目标Xen虚拟机中执行代码的能力,然后构造特殊的hypercall请求触发越界访问。由于vCPU指针被破坏,可能导致虚拟机崩溃或更严重的安全后果。