CVE-2025-71095CVE-2025-71095是Linux内核中stmmac(Synopsis DesignWare Ethernet MAC)网络驱动的一个中等严重度安全漏洞,CVSS评分5.5。该漏洞存在于驱动处理零拷贝XDP_TX(eXpress Data Path Transmit)操作时,由于内存类型检查缺失导致内核崩溃。当使用XSK(AF_XDP)零拷贝池的xdp_buff被转换为xdp_frame时,生成的xdp_frame内存类型为MEM_TYPE_PAGE_ORDER0,但stmmac_xdp_xmit_back()函数未正确检查内存类型,始终按page pool类型处理,导致无效内存映射访问,最终触发内核页错误(Oops)并引发系统崩溃。此漏洞为本地攻击向量,需要低权限认证,无需用户交互,可导致系统可用性完全丧失。
该漏洞根本原因在于stmmac_xdp_xmit_back()函数对xdp_frame内存类型处理不当。当执行XDP_TX操作时,xdp_buff通过xdp_convert_buff_to_frame()转换为xdp_frame。对于基于page pool的xdp_buff,生成的xdp_frame内存类型为MEM_TYPE_PAGE_POOL;而对于零拷贝XSK池的xdp_buff,生成的xdp_frame内存类型为MEM_TYPE_PAGE_ORDER0。然而stmmac_xdp_xmit_back()函数未进行内存类型检查,统一按page pool类型处理,导致对MEM_TYPE_PAGE_ORDER0类型的xdp_frame进行错误的DMA映射操作。攻击者可通过构造特定的网络数据包触发XDP_TX零拷贝路径,访问非法虚拟地址(ffff80000000),触发dcache_clean_poc和__dma_sync_single_for_device函数中的页错误,最终导致内核恐慌(Kernel panic)。修复方案是在stmmac_xdp_xmit_back()中添加xdp_buff内存类型检查逻辑。