目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1336

100%

CVE-2026-74714— BPF TCP bpf_iter_tcp_established_batch 使用释放后漏洞

一分钟漏洞结论

影响对象
Linux Linux
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

在 Linux 内核中,已修复以下漏洞: bpf: tcp: 修复 bpf_iter_tcp_established_batch() 中的释放后使用(use-after-free)漏洞 会将一个处于 状态的 发布到 ehash 链表中,释放桶锁(bucket lock),然后才将 设置为 3。 无锁读者如 通过 来处理此情况,但 在持有桶锁的情况下使用普通的 ,其假设是锁保证了 。然而,这一假设对于 并不成立: 这表现为: 当发布方的 CPU 执行 覆盖计数值时,迭代器所“窃取”的引用将会丢失,导致 socket

CVSS 7.8 · High EPSS 0.21% · P12

影响版本矩阵 14

厂商产品 版本范围状态
Linux Linux 04c7820b776f1c4b48698574c47de9e940d368e8< cc0295f89296ed351fc4b0b48fee887ba02c5d24 affected
04c7820b776f1c4b48698574c47de9e940d368e8< ddbe966b5d1fe212ada749bc3d0b410f1a7dea74 affected
04c7820b776f1c4b48698574c47de9e940d368e8< 7d2b60a4bc0499f62ff8520af6309bbe170882fd affected
04c7820b776f1c4b48698574c47de9e940d368e8< cefcbbe20846a45f9a7dae868f7ef1000953e2df affected
04c7820b776f1c4b48698574c47de9e940d368e8< 97e74d3e45d653c07c2d406fc530a9bbe3df8396 affected
04c7820b776f1c4b48698574c47de9e940d368e8< e5fd3f514e27db1f05fbd72ba615d74941e23c51 affected
5.15 affected
< 5.15 unaffected
… +6 条更多
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-74714 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
bpf: tcp: Fix use-after-free in bpf_iter_tcp_established_batch()
来源: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: bpf: tcp: Fix use-after-free in bpf_iter_tcp_established_batch() reqsk_queue_hash_req() publishes a TCP_NEW_SYN_RECV request_sock onto the ehash chain, drops the bucket lock, and only afterwards sets rsk_refcnt to 3. Lockless readers such as __inet_lookup_established() handle this with refcount_inc_not_zero(), but bpf_iter_tcp_established_batch() uses plain sock_hold() while holding the bucket lock, on the assumption that the lock guarantees sk_refcnt > 0. That assumption does not hold for request_sock: CPU 0 CPU 1 ----- ----- tcp_conn_request() reqsk_queue_hash_req() inet_ehash_insert(req) spin_lock(bucket) __sk_nulls_add_node_rcu(req) // rsk_refcnt == 0 spin_unlock(bucket) bpf_iter_tcp_established_batch() spin_lock(bucket) sock_hold(req) <-- addition on 0 spin_unlock(bucket) refcount_set(&req->rsk_refcnt, 3) // clobbers saturated value which surfaces as: refcount_t: addition on 0; use-after-free. WARNING: lib/refcount.c:25 at refcount_warn_saturate+0x48/0x90, CPU#1 Call Trace: bpf_iter_tcp_established_batch+0x14e/0x170 bpf_iter_tcp_batch+0x53/0x200 bpf_iter_tcp_seq_next+0x27/0x70 bpf_seq_read+0x107/0x410 vfs_read+0xb9/0x380 The iterator's stolen reference is lost when the publishing CPU's refcount_set() overwrites the count, leaving the socket one reference short. When the last legitimate owner drops its reference the reqsk is freed while still reachable, leading to use-after-free. This reproduces in seconds with tcp_syncookies=0, a handful of threads doing connect()/close() to a local listener while others read an iter/tcp link in a tight loop. Use refcount_inc_not_zero() and skip the socket on failure. A skipped socket is still part of the bucket, so keep counting it in expected. The reallocations are sized from expected, and a request sock whose refcount gets published while the lock is held across the last realloc must already have room. A skipped socket is counted in expected but never batched, so end_sk can be short of expected on a batch that is actually complete. Decide completeness by whether the walk left any socket behind instead. The WARN after the locked realloc checks the same, replacing an end_sk == expected check that could not hold on that path since commit cdec67a489d4 ("bpf: tcp: Make sure iter->batch always contains a full bucket snapshot"). If every matching socket in a bucket is mid-init (refcount 0), end_sk stays 0. Advance to the next bucket rather than returning a batch entry that was never filled this round.
来源: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
来源: CVE Program / CVE List V5
Vulnerability Type
N/A
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
Linux Linux 04c7820b776f1c4b48698574c47de9e940d368e8 ~ cc0295f89296ed351fc4b0b48fee887ba02c5d24 -
Linux Linux 5.15 -

二、漏洞 CVE-2026-74714 的公开POC

# POC 描述 源链接 神龙链接
AI 生成 POC 高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-74714 的情报信息

登录查看更多情报信息。

CVE-2026-74714 补丁与修复 (6)

同批安全公告 · Linux · 2026-08-22 · 共 150 条

CVE-2026-74612 10.0 CRITICAL Linux内核veth模块SKB长度计算漏洞
CVE-2026-74705 10.0 CRITICAL UDP隧道分段潜在使用-after-free漏洞
CVE-2026-74611 9.8 CRITICAL TLS 1.3 乐观重试消息迭代器恢复漏洞
CVE-2026-74617 9.8 CRITICAL dibs: 在dibs_dev_alloc()中初始化dibs->lock
CVE-2026-74628 9.8 CRITICAL Linux内核 x25 远程计时器释放后使用漏洞
CVE-2026-74597 9.8 CRITICAL Linux ip6_tunnel skb2->cb[]未清除漏洞
CVE-2026-74616 9.8 CRITICAL Linux内核XDP克隆数据包越界漏洞
CVE-2026-74591 9.8 CRITICAL Linux 内核文件映射恢复索引前重试导致漏洞
CVE-2026-74688 9.8 CRITICAL SCTP传输控制块移除漏洞
CVE-2026-74587 9.8 CRITICAL SCTP 缓存 ASCONF 块使用后释放漏洞
CVE-2026-74608 9.8 CRITICAL SMB客户端cifs_try_adding_channels函数中的释放后使用漏洞
CVE-2026-74723 9.8 CRITICAL btrfs LZO拒绝无有效头部的内联扩展
CVE-2026-74730 9.8 CRITICAL NFS:在FREE_STATEID调用期间锁定struct nfs_server
CVE-2026-74727 9.8 CRITICAL OpenVPN by_id移除后跳过哈希重构
CVE-2026-74586 9.8 CRITICAL Linux内核SCTP对等端移除时传输未清理漏洞
CVE-2026-74662 9.8 CRITICAL Linux inet frags 定时器竞争条件漏洞
CVE-2026-74669 9.8 CRITICAL Linux IPVS IPv4选项后重定位隧道ICMP错误
CVE-2026-74588 9.8 CRITICAL Linux SCTP传输列表不同步漏洞
CVE-2026-74712 9.3 CRITICAL mlx5 vdpa 在 create_direct_keys() 中缓冲区长度修复漏洞
CVE-2026-74665 9.1 CRITICAL NET skb长度计算通用XDP片段调整后修复

显示前 20 条,共 150 条。 查看全部 &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-74714

暂无评论


发表评论