CVE-2025-71128CVE-2025-71128是Linux内核中与ERSPAN(Encapsulated Remote Switch Port Analyzer)GRE隧道实现相关的缓冲区溢出漏洞。该漏洞位于net/ipv4/erspan.c代码中,由于在处理ERSPAN流量时,struct ip_tunnel_info结构体中的options_len字段未在引用options灵活数组成员之前正确初始化,导致编译器在启用GCC 15+和FORTIFY_SOURCE配置时检测到缓冲区溢出。具体表现为4字节写入操作试图写入大小为0的缓冲区,触发memcpy溢出现场检测,最终导致内核崩溃(kernel panic)。该漏洞需要攻击者具有本地低权限访问权限,无需用户交互即可触发,但仅影响可用性(拒绝服务),不涉及机密性或完整性影响。
该漏洞的根本原因在于struct ip_tunnel_info结构体的设计。该结构包含一个受counted_by(options_len)属性保护的灵活数组成员options。GCC编译器利用此信息对FORTIFY_SOURCE字符串辅助函数实施运行时边界检查。根据GCC文档,计数器必须在首次引用灵活数组成员之前初始化。正常情况下应使用ip_tunnel_info_opts_set()辅助函数来初始化options_len,然后安全地将数据复制到options。然而,在GRE ERSPAN代码中执行了部分更新操作,阻止了辅助函数的使用,导致options_len保持未初始化状态。当内核以GCC 15+和FORTIFY_SOURCE配置编译时,处理ERSPAN流量的代码会触发__fortify_panic,最终导致内核崩溃。攻击者可通过向配置了ERSPAN的GRE隧道发送特制数据包来触发此漏洞,实现本地拒绝服务攻击。