Linux内核严重漏洞CVE-2026-80590:GSO状态残留可致系统崩溃

CVE-2026-80590(CVSS 8.6)是Linux内核IP分片重组中的高危漏洞,攻击者可利用tun/tap接口构造带GSO元数据的恶意分片,导致skb_segment触发内核panic。本文深入分析漏洞原理、利用条件和缓解措施,帮助安全人员快速应对该拒绝服务威胁。

🔓 High 漏洞利用

Linux内核的IP分片重组逻辑未能清除分片上的GSO元数据,导致重组后的skb被误判为GSO数据包,在后续处理中触发skb_segment()的BUG_ON断言,造成内核崩溃。本地用户可通过tun/tap或AF_PACKET接口发送特制的IPv4/IPv6分片,在自身用户命名空间内即可触发拒绝服务条件。

来源:NVD-Latest | 2026-08-28 | 原文链接

🔍 关键发现

  • 分片进入重组队列时未清除GSO字段,导致inet_frag_reasm_prepare/Finish保留头片段上的gso_size/gso_type等元数据。
  • skb_segment()在遍历frag_list时因输入不符合GRO结构而触发BUG_ON,导致内核panic,且中断上下文下直接系统崩溃。
  • 漏洞自commit f43798c27684引入,影响IPv4、IPv6、nf_conntrack_reasm及6lowpan等所有共享inet_frag_queue_insert()的重组路径。

⚔️ 攻击链分析

1. 攻击者在用户命名空间内创建tun/tap设备或使用AF_PACKET套接字,并启用虚拟net header(PACKET_VNET_HDR)。 2. 构造IP分片,每个分片的virtio_net_hdr中设置GSO标记,并将gso_size设为与片段线性头部长度相同以绕过现有检查。 3. 将恶意分片写入tap设备,内核将其送入分片重组队列,重组后skb保留GSO状态。 4. 当重组后的数据包进入本地投递或转发路径(如UDP接收处理)时,skb_segment()触发BUG_ON,导致内核panic。

🚩 失陷指标 (IOC)

  • 包含非零GSO元数据的IPv4/IPv6分片数据包
  • 通过tun/tap接口发送的带有PACKET_VNET_HDR且gso_type与frag_off不匹配的流量

🛡️ 缓解建议

  • ✅ 及时应用Linux内核官方补丁,该补丁在inet_frag_queue_insert()中重置每个分片的GSO字段。
  • ✅ 限制非特权用户创建用户命名空间或访问tun/tap设备的权限,降低本地攻击面。
  • ✅ 对于云环境或虚拟化平台,确保宿主机和Guest内核均升级至修复版本,并谨慎处理来自Guest的virtio_net_hdr元数据。

涉及漏洞:["CVE-2026-80590"]


⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。

🤖 常见问题解答(FAQ)

❓ 该漏洞是否可以被远程利用?

不可以。触发点需要本地用户访问tun/tap或AF_PACKET接口,且涉及分片构造,远程攻击无法直接利用。但在多租户云环境中,Guest可通过VMM转发virtio_net_hdr影响宿主机。

❓ 漏洞利用的具体前置条件是什么?

攻击者需具有用户命名空间内创建tun/tap设备的权限,或拥有CAP_NET_RAW并在网络命名空间中设置defrag点。需要能向接口写入数据包。

❓ 现有缓解检查为何无法拦截?

已有检查针对gso_size与线性头部长度不匹配或混合分配类型的情况,但攻击者可控制gso_size等于skb_headlen(head),绕过检查,导致skb_segment的frag_list逻辑仍然触发BUG_ON。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)