CVE-2026-31786Linux内核中drivers/xen/sys-hypervisor.c组件存在缓冲区溢出漏洞。该漏洞源于HYPERVISOR_xen_version返回的build id既非以NUL结尾也不是字符串,导致sprintf函数在处理时会读取越界数据。本地低权限攻击者可利用此漏洞引发内存破坏,造成高机密性、完整性和可用性影响。
该漏洞位于Linux内核的Xen hypervisor接口驱动中。具体而言,`drivers/xen/sys-hypervisor.c`文件中的`buildid_show`函数负责通过sysfs展示Build ID。该函数调用`sprintf`将`HYPERVISOR_xen_version(XENVER_build_id)`返回的数据格式化到缓冲区中。然而,该hypercall返回的Build ID是原始二进制数据,并未包含终止符(NUL),且长度固定。当`sprintf`尝试处理这段数据时,由于缺少终止符,它会继续向后扫描内存直到遇到意外的0x00字节,从而引发基于栈的缓冲区溢出。攻击者若具备本地低权限,可利用此溢出覆盖返回地址或关键变量,从而实现权限提升或导致系统崩溃(拒绝服务)。