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

目标: 1000 元 · 已筹: 1336

100%

CVE-2026-53034— BPF sockmap:修复af_unix协议更新空指针解引用漏洞

EPSS 0.18% · P8
获取后续新漏洞提醒登录后订阅

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

漏洞信息

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

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

Vulnerability Title
bpf, sockmap: Fix af_unix null-ptr-deref in proto update
来源: 美国国家漏洞数据库 NVD
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix af_unix null-ptr-deref in proto update unix_stream_connect() sets sk_state (`WRITE_ONCE(sk->sk_state, TCP_ESTABLISHED)`) _before_ it assigns a peer (`unix_peer(sk) = newsk`). sk_state == TCP_ESTABLISHED makes sock_map_sk_state_allowed() believe that socket is properly set up, which would include having a defined peer. IOW, there's a window when unix_stream_bpf_update_proto() can be called on socket which still has unix_peer(sk) == NULL. CPU0 bpf CPU1 connect -------- ------------ WRITE_ONCE(sk->sk_state, TCP_ESTABLISHED) sock_map_sk_state_allowed(sk) ... sk_pair = unix_peer(sk) sock_hold(sk_pair) sock_hold(newsk) smp_mb__after_atomic() unix_peer(sk) = newsk BUG: kernel NULL pointer dereference, address: 0000000000000080 RIP: 0010:unix_stream_bpf_update_proto+0xa0/0x1b0 Call Trace: sock_map_link+0x564/0x8b0 sock_map_update_common+0x6e/0x340 sock_map_update_elem_sys+0x17d/0x240 __sys_bpf+0x26db/0x3250 __x64_sys_bpf+0x21/0x30 do_syscall_64+0x6b/0x3a0 entry_SYSCALL_64_after_hwframe+0x76/0x7e Initial idea was to move peer assignment _before_ the sk_state update[1], but that involved an additional memory barrier, and changing the hot path was rejected. Then a NULL check during proto update in unix_stream_bpf_update_proto() was considered[2], but the follow-up discussion[3] focused on the root cause, i.e. sockmap update taking a wrong lock. Or, more specifically, missing unix_state_lock()[4]. In the end it was concluded that teaching sockmap about the af_unix locking would be unnecessarily complex[5]. Complexity aside, since BPF_PROG_TYPE_SCHED_CLS and BPF_PROG_TYPE_SCHED_ACT are allowed to update sockmaps, sock_map_update_elem() taking the unix lock, as it is currently implemented in unix_state_lock(): spin_lock(&unix_sk(s)->lock), would be problematic. unix_state_lock() taken in a process context, followed by a softirq-context TC BPF program attempting to take the same spinlock -- deadlock[6]. This way we circled back to the peer check idea[2]. [1]: https://lore.kernel.org/netdev/ba5c50aa-1df4-40c2-ab33-a72022c5a32e@rbox.co/ [2]: https://lore.kernel.org/netdev/20240610174906.32921-1-kuniyu@amazon.com/ [3]: https://lore.kernel.org/netdev/7603c0e6-cd5b-452b-b710-73b64bd9de26@linux.dev/ [4]: https://lore.kernel.org/netdev/CAAVpQUA+8GL_j63CaKb8hbxoL21izD58yr1NvhOhU=j+35+3og@mail.gmail.com/ [5]: https://lore.kernel.org/bpf/CAAVpQUAHijOMext28Gi10dSLuMzGYh+jK61Ujn+fZ-wvcODR2A@mail.gmail.com/ [6]: https://lore.kernel.org/bpf/dd043c69-4d03-46fe-8325-8f97101435cf@linux.dev/ Summary of scenarios where af_unix/stream connect() may race a sockmap update: 1. connect() vs. bpf(BPF_MAP_UPDATE_ELEM), i.e. sock_map_update_elem_sys() Implemented NULL check is sufficient. Once assigned, socket peer won't be released until socket fd is released. And that's not an issue because sock_map_update_elem_sys() bumps fd refcnf. 2. connect() vs BPF program doing update Update restricted per verifier.c:may_update_sockmap() to BPF_PROG_TYPE_TRACING/BPF_TRACE_ITER BPF_PROG_TYPE_SOCK_OPS (bpf_sock_map_update() only) BPF_PROG_TYPE_SOCKET_FILTER BPF_PROG_TYPE_SCHED_CLS BPF_PROG_TYPE_SCHED_ACT BPF_PROG_TYPE_XDP BPF_PROG_TYPE_SK_REUSEPORT BPF_PROG_TYPE_FLOW_DISSECTOR BPF_PROG_TYPE_SK_LOOKUP Plus one more race to consider: CPU0 bpf CPU1 connect -------- ------------ WRITE_ONCE(sk->sk_state, TCP_ESTABLISHED) sock_map_sk_state_allowed(sk) sock_hold(newsk) smp_mb__after_atomic() ---truncated---
来源: 美国国家漏洞数据库 NVD
CVSS Information
N/A
来源: 美国国家漏洞数据库 NVD
Vulnerability Type
N/A
来源: 美国国家漏洞数据库 NVD

受影响产品

厂商产品影响版本CPE订阅
LinuxLinux c63829182c37c2d6d0608976d15fa61ebebe9e6b ~ 75b7d3b3f8bd4e59eb3af1b11a43c64c0c2db6f4 -
LinuxLinux 5.15 -

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

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

未找到公开 POC。

登录以生成 AI POC

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

登录查看更多情报信息。

CVE-2026-53034 补丁与修复 (4)

CVE-2026-53034 其他参考 (2)

同批安全公告 · Linux · 2026-06-24 · 共 219 条

CVE-2026-52980Linux内核公平调度器初始化时未清除相对截止期漏洞
CVE-2026-52993TIPC tipc_buf_append() 双重释放漏洞
CVE-2026-52991sched/psi 文件释放与压力写入间竞态条件漏洞
CVE-2026-52990fsnotify inode引用泄漏漏洞
CVE-2026-52988netfilter: nf_tables 在提交阶段使用 splice_list_rcu() 加入钩子列表
CVE-2026-52989nvmet-tcp 传播 nvmet_tcp_build_pdu_iovec() 错误到调用者
CVE-2026-52987AMD GPU 驱动用户队列验证中双重释放漏洞
CVE-2026-52986netfilter nf_conntrack_sip 漏洞
CVE-2026-52985netdevsim 虚拟网卡 iphdr结构体未初始化漏洞
CVE-2026-52984Linux netem 队列限制检查漏洞
CVE-2026-52982Realtek RTL8150 网卡 use-after-free 漏洞
CVE-2026-52983Airoha网络驱动TX路径BQL失衡漏洞
CVE-2026-52981内核neigh模块skb所有权管理漏洞
CVE-2026-52979net: psp: 创建关联时检查设备注销
CVE-2026-52968KVM s390 PCI GAIT表索引双重缩放指针算法定位漏洞
CVE-2026-52972crypto: af_alg - AEAD附加数据长度限制漏洞
CVE-2026-52970nft_ct: obj eval缺失expect put导致漏洞
CVE-2026-52969KVM: kvm_reset_dirty_gfn() 回绕偏移拒绝漏洞
CVE-2026-52971ena: get_timestamp中潜在Use-after-Free漏洞
CVE-2026-52967SMB客户端符号链接无限循环及越界读取漏洞

显示前 20 条,共 219 条。 查看全部 → →

IV. Related Vulnerabilities

V. Comments for CVE-2026-53034

暂无评论


发表评论