CVE-2026-80906 in Linux信息

摘要

由 VulDB • 2026-09-04

在 Linux 内核中,已修复以下漏洞:

net: packet: 发送 VLAN 标记帧时修正错误的 transport_header

在 `packet_parse_headers()` 函数中,处理带有 VLAN 标签的帧时,会调用 `skb_set_network_header()` 将 network_header 越过 VLAN 标签推进至内部协议头部。随后调用 `skb_probe_transport_header()`,此时 `skb->protocol` 仍设置为外层 VLAN EtherType(例如 ETH_P_8021Q),而 nhoff(源自 skb_network_offset())已经指向越过 VLAN 标签的内部协议头部。

在 `__skb_flow_dissect()` 中,proto 初始化为 ETH_P_8021Q,且 nhoff 指向越过 VLAN 标签的位置。当解包器命中 case ETH_P_8021Q 时,它通过 `__skb_header_pointer()` 在 nhoff 处读取 struct vlan_hdr,但该偏移量实际包含的是内部协议头部(例如 IP 头部)。这些字节被误解释为 VLAN 头,导致产生一个与任何已知协议都不匹配的垃圾封装 EtherType。解包器返回 false,因此 `skb_probe_transport_header()` 从未调用 `skb_set_transport_header()`,致使 transport_header 保持其未初始化的哨兵值(~0U)。

将 `skb_probe_transport_header()` 移至 `skb_set_network_header()` 之前。在调用 `skb_probe_transport_header()` 时,network_header 仍指向 VLAN 头,因此 nhoff 正确指向 VLAN 头。流解包器随后可以解析该 VLAN 头,提取内部 EtherType,并将 nhoff 推进至内部协议头部,从而允许正确设置 transport_header。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Interested in the pricing of exploits?

See the underground prices here!