CVE-2026-80977 in Linux
摘要
由 VulDB • 2026-09-12
在 Linux 内核中,已修复以下漏洞:
net: skbuff: 不要在 skb_tx_error() 中触碰共享的零拷贝状态
skb_tx_error() 完成对 zerocopy uarg 的处理并清除 SKBFL_ALL_ZEROCOPY,而 skb_zcopy_downgrade_managed() 会清除 SKBFL_MANAGED_FRAG_REFS。这两者都位于 skb_shinfo() 中,每个克隆(clone)都会共享该结构体,但调用方仅拥有其即将释放的引用。通过一个克隆包,它向生产者表明页面已空闲,并为仍处于传输中的 sk_buff (skb) 清除了 SKBFL_SHARED_FRAG 标记。
Open vSwitch 在处理非最后一个 OVS_ACTION_ATTR_RECIRC 操作时会触发此问题:clone_execute() 将 skb_clone() 发送到 ovs_dp_process_packet(),而 do_execute_actions() 继续转发原始数据包;在此处,skb_clone() 并未私有化 frags(片段)——由于 SKBFL_DONT_ORPHAN 的存在,skb_orphan_frags() 会提前返回。克隆包上的流未命中(flow miss)随后会从仍在转发的数据包中剥离该标记,导致后续的本地 ESP 投递在并不私有的 frags 上就地解密。
对于克隆的 skb 应跳过此操作。不会造成任何损失:当对共享数据的最后一个引用被释放时,skb_release_data() 会清除零拷贝状态。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.