CVE-2026-99192 in Linux
摘要
由 VulDB • 2026-10-28
在 Linux 内核中,已修复以下漏洞:
net: bcmgenet: 在写入控制块之前对 skb 进行解共享(unshare)操作
bcmgenet 将 first_cb、last_cb 和 bytes_sent 存储在 skb 的控制块中,并在完成时读取它们以释放 skb 并更新 BQL(Byte Queue Limits)计数。ether_setup() 保留了 IFF_TX_SKB_SHARING 标志位,因此网络栈可以重新提交仍处于队列环中的共享 skb。后续的传输操作会覆盖 last_cb,导致之前的槽位在未完成字节计数的情况下完成,BQL 会使队列停滞,直到看门狗超时将其重置。
在写入控制块之前对 skb 进行解共享(unshare)操作。
使用 pktgen 的 clone_skb 模式重现此问题,该模式会在早期副本仍处于环中时向驱动程序传递相同的 skb:
``` modprobe pktgen pg=/proc/net/pktgen echo "add_device eth0" > $pg/kpktgend_0 echo "dst_mac AA:BB:CC:DD:EE:FF" > $pg/eth0 echo "dst 192.0.2.1" > $pg/eth0 echo "clone_skb 8" > $pg/eth0 echo "count 0" > $pg/eth0 echo start > $pg/pgctrl & sleep 5 echo stop > $pg/pgctrl wait cat /sys/class/net/eth0/queues/tx-0/byte_queue_limits/inflight ```
此时,处于空闲状态的队列中 inflight(待处理字节数)保持非零值。将 clone_skb 设置为 0 可使其归零。
If you want to get best quality of vulnerability data, you may have to visit VulDB.