CVE-2026-22994CVE-2026-22994是Linux内核中BPF(Berkeley Packet Filter)子系统的一个引用计数泄漏漏洞。该漏洞存在于bpf_prog_test_run_xdp()函数中,当处理XDP(Express Data Path)数据包时,xdp_convert_md_to_buff()函数会获取一个引用计数,但在错误处理路径中忘记调用xdp_convert_buff_to_md()来释放该引用计数。攻击者可通过本地低权限访问触发此漏洞,导致网络设备无法正常卸载,造成可用性影响。syzbot测试框架报告了"unregister_netdevice: waiting for sit0 to become free. Usage count = 2"的错误信息,表明存在未释放的引用计数。该漏洞CVSS评分为5.5,属于中等严重程度。
该漏洞的根本原因在于Linux内核BPF子系统的bpf_prog_test_run_xdp()函数中引用计数管理不当。xdp_convert_md_to_buff()函数负责将XDP元数据转换为缓冲区,同时获取相关资源的引用计数。根据commit ec94670fcb3b的设计,这些引用计数应该由xdp_convert_buff_to_md()函数在适当的时候释放。然而,commit 1c1949982524引入frags支持时添加的错误处理路径遗漏了对xdp_convert_buff_to_md()的调用,导致在错误条件下引用计数无法被正确释放。攻击者可通过构造特定长度的XDP测试数据包触发错误路径,使sit0等网络设备的引用计数增加但无法归零,最终导致设备无法卸载。