IPBUF安全漏洞报告
English
CVE-2025-71104 CVSS 5.5 中危

CVE-2025-71104 Linux内核KVM x86虚拟机定时器硬锁漏洞

披露日期: 2026-01-14
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-71104
漏洞类型
本地拒绝服务(硬锁漏洞)
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux内核 KVM x86 (Intel CPU VMX preemption timer)

相关标签

CVE-2025-71104KVMLinux内核VMX preemption timerhard lockup本地拒绝服务Intel CPU定时器溢出虚拟化安全APIC定时器

漏洞概述

CVE-2025-71104是Linux内核KVM虚拟化模块中的一个中危漏洞,CVSS评分5.5。该漏洞存在于KVM/x86的APIC定时器周期模式处理逻辑中,当虚拟机长时间处于暂停或休眠状态后恢复运行时,VMX预emption定时器(HV定时器)会生成大量不受控的中断请求,可能导致主机系统出现硬锁(hard lockup)。漏洞仅影响使用超管理程序定时器(HV timer)的Intel CPU环境。攻击者可通过暂停虚拟机较长时间后恢复触发此漏洞,造成主机系统完全无响应。该漏洞属于本地攻击向量,需要低权限即可触发,无需用户交互。

技术细节

漏洞根源在于advance_periodic_target_expiration()函数在推进定时器目标过期时间时存在缺陷。当虚拟机从长时间暂停恢复时,目标过期时间可能已过去,但代码仅简单地将周期值加到前一个目标时间上,导致生成的实际过期时间仍在过去。当delta值转换为无符号u64类型的tscdeadline时,负值被转换为极大的正数,溢出VMX预emption定时器的最大位宽。这会触发KVM从HV定时器切换到软件定时器(hrtimer)。由于中断处理程序在IRQs禁用状态下运行,hrtimer会不断重启直到目标过期时间推进到当前时间,导致在单个时钟中断处理程序中连续执行大量定时器回调,最终引发主机硬锁。攻击者只需暂停虚拟机足够长时间(如休眠或挂起)后恢复即可触发,Windows虚拟机使用周期模式的APIC定时器时尤其容易触发。

攻击链分析

STEP 1
步骤1
攻击者获得虚拟机的低权限访问权限
STEP 2
步骤2
确保VM使用Intel CPU并启用HV定时器(VMX预emption定时器)
STEP 3
步骤3
在虚拟机中激活周期模式的APIC定时器(Windows虚拟机默认使用)
STEP 4
步骤4
通过暂停、休眠或挂起方式使虚拟机停止运行较长时间
STEP 5
步骤5
恢复虚拟机运行,此时HV定时器目标过期时间已过期很久
STEP 6
步骤6
KVM尝试推进过期时间,但delta计算为负值,转换为无符号后溢出
STEP 7
步骤7
KVM切换到软件定时器(hrtimer),在IRQ禁用状态下无限循环重启定时器
STEP 8
步骤8
主机系统出现硬锁,完全无响应,需要硬重启恢复

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-71104 PoC - KVM VM Hard Lockup Trigger // This PoC demonstrates the vulnerability by suspending a VM for extended duration #include <stdio.h> #include <stdlib.h> #include <unistd.h> /* * Prerequisites: * 1. Intel CPU with VMX enabled * 2. Linux kernel with KVM modules loaded (kvm, kvm_intel) * 3. A VM running with HV timer (VMX preemption timer) enabled * 4. Guest OS with periodic APIC timer (e.g., Windows VM) * * Steps to trigger: * 1. Start a VM with periodic APIC timer active * 2. Suspend/pause the VM for extended duration (hours or more) * 3. Resume the VM * 4. Observe potential hard lockup on host with NMI watchdog alert * * Expected behavior: * - VM resumes with massive timer IRQ backlog * - Host system may lock up completely * - Kernel panic with 'Watchdog detected hard LOCKUP' * * This is a LOCAL attack requiring: * - AV:L (Local access) * - PR:L (Low privileges) * - UI:N (No user interaction required after setup) */ int main() { printf("[*] CVE-2025-71104 KVM VM Hard Lockup PoC\n"); printf("[*] Target: Linux kernel KVM/x86 with VMX preemption timer\n\n"); printf("[!] This vulnerability is triggered by suspending a VM for extended duration\n"); printf("[!] Steps:\n"); printf("[!] 1. Run a VM with periodic APIC timer (Intel CPU + HV timer)\n"); printf("[!] 2. Suspend/hibernate the host or pause the VM\n"); printf("[!] 3. Wait for extended period (hours/days)\n"); printf("[!] 4. Resume VM - triggers unbounded timer IRQs\n"); printf("[!] 5. Host may hard lockup with NMI watchdog alert\n\n"); printf("[*] Vulnerability is in kvm/x86/apic.c advance_periodic_target_expiration()\n"); printf("[*] Fix: Set expiration to 'now' when target is in the past\n"); return 0; }

影响范围

Linux kernel (KVM/x86) with VMX preemption timer support
Versions prior to kernel patches: 18ab3fc8e880791aa9f7c000261320fc812b5465, 786ed625c125c5cd180d6aaa37e653e3e4ffb8d9, 7b54ccef865e0aa62e4871d4ada2ba4b9dcb8bed, 807dbe8f3862fa7c164155857550ce94b36a11b9, d2da0df7bbc4fb4fd7d0a1da704f81a09c72fe73

防御指南

临时缓解措施
如果无法立即应用内核更新,可采取以下临时缓解措施:1) 避免对运行关键业务的虚拟机进行长时间暂停或休眠操作;2) 监控虚拟机暂停时长,超过阈值时自动重启虚拟机;3) 考虑禁用HV定时器强制使用软件定时器,但这可能影响虚拟机性能;4) 启用内核NMI watchdog以便在发生硬锁时记录诊断信息。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表