CVE-2025-12464CVE-2025-12464是QEMU(Quick Emulator)中e1000网络设备的一个中危安全漏洞,CVSS评分6.2。该漏洞属于栈缓冲区溢出(Stack-based Buffer Overflow),存在于e1000_receive_iov()函数中。漏洞的根本原因在于短帧(short frame)padding处理代码的架构调整:原本在单个网络设备中实现的短帧padding逻辑被迁移到了net core代码中,但在loopback模式下,设备的接收代码仍然能够处理短帧,导致e1000网络设备在特定条件下出现缓冲区溢出问题。攻击者作为恶意guest虚拟机用户,可以利用此漏洞向宿主机上的QEMU进程发送精心构造的短帧数据包,在loopback模式下触发缓冲区溢出,最终导致QEMU进程崩溃,造成拒绝服务(DoS)攻击。此漏洞的利用需要本地访问权限,但无需认证和用户交互,攻击复杂度较低。
该漏洞的技术根源在于QEMU网络设备架构变更后遗留的安全问题。在早期版本中,每个网络设备(包括e1000)都独立实现短帧padding逻辑,用于处理小于最小以太网帧大小的数据包。后来为了代码复用和一致性,这些padding代码被统一迁移到了net core层。然而,迁移过程中未充分考虑loopback模式下的特殊处理路径,导致e1000设备的e1000_receive_iov()函数在接收来自loopback接口的数据帧时,仍然可能遇到未正确padding的短帧。当这些短帧数据被拷贝到固定大小的栈缓冲区时,如果数据长度超过缓冲区容量,就会发生栈缓冲区溢出。攻击者可以通过在guest虚拟机内构造特殊格式的网络包,强制数据通过loopback路径发送到e1000设备,触发溢出条件。由于栈溢出可能覆盖函数返回地址等关键数据,虽然当前描述主要涉及DoS,但理论上存在控制流劫持的风险。修复方案需要在e1000_receive_iov()中添加帧长度验证,或在loopback路径中重新实现padding逻辑。