CVE-2025-71089CVE-2025-71089是Linux内核中与IOMMU(输入输出内存管理单元)共享虚拟寻址(SVA)相关的高危安全漏洞。该漏洞存在于启用了SVA功能的x86架构Linux系统中。在SVA上下文中,IOMMU硬件会共享并遍历CPU的页表,x86架构将内核虚拟地址空间映射到每个进程页表的上部区域。因此,IOMMU可以遍历并缓存内核页表条目。当前Linux内核缺乏内核页表变更的通知机制,特别是当页表页被释放和重用时,IOMMU驱动仅被通知用户虚拟地址映射的变更。这导致IOMMU内部缓存可能保留内核虚拟地址的过期条目。当内核页表页被释放后重新分配时,会产生使用后释放(UAF)和写入后释放(WAF)条件,IOMMU可能将新数据误解为有效的页表条目,步行到攻击者控制的内存中,导致任意物理内存DMA访问或权限提升。
该漏洞的技术原理涉及Linux内核的IOMMU SVA实现机制。在x86架构中,内核虚拟地址空间被映射到每个进程页表的上部区域。当IOMMU启用SVA功能时,它会遍历并缓存这些内核页表条目。问题在于内核在释放页表页时没有向IOMMU提供适当的通知机制。具体来说:1) IOMMU缓存了内核页表的中间页表条目;2) 当这些页表页被释放并重新分配给其他用途时,IOMMU缓存中仍然保留着指向已释放内存的旧条目;3) IOMMU可能将攻击者控制的数据误解为有效的页表条目,继续遍历并访问攻击者控制的内存区域;4) 同时,IOMMU可能继续向已释放的内存写入Accessed和Dirty位,导致数据损坏。攻击者可通过触发内核页表操作并利用IOMMU缓存的不一致性来实现任意物理内存DMA访问或权限提升。修复方案是在x86架构上禁用SVA,直到实现适当的内核页表变更通知机制。