CVE-2026-31679Linux内核中的openvswitch模块在处理MPLS网络协议包时存在验证逻辑缺陷。`validate_set`函数错误地接受了变长的MPLS载荷,与内核期望的定长结构不匹配。本地低权限攻击者可利用此缺陷,通过精心构造的Netlink消息触发内核异常,导致敏感信息泄露或系统崩溃。
该漏洞位于Linux内核的net/openvswitch/actions.c文件中。漏洞成因是`validate_set`函数在验证`OVS_KEY_ATTR_MPLS`属性时,未强制检查载荷长度必须等于`sizeof(struct ovs_key_mpls)`,从而接受了变长的输入数据。然而,在后续的动作执行阶段,内核代码假定数据为固定大小。这种长度校验的不一致使得攻击者可以发送一个畸形的Netlink消息给Open vSwitch,其中包含刻意调整大小的MPLS载荷。这会导致在解析动作时发生缓冲区越界读取或写入。攻击者利用此漏洞无需特殊权限,只需具备本地执行代码的能力。通过向内核发送带有特定MPLS属性的SET动作指令,可以绕过初始的长度校验。当内核尝试访问结构体成员时,由于指针偏移错误,可能访问非法内存区域,导致内核恐慌或信息泄露。