{"id":6780,"date":"2026-09-04T18:49:16","date_gmt":"2026-09-04T10:49:16","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72112"},"modified":"2026-09-04T18:49:16","modified_gmt":"2026-09-04T10:49:16","slug":"cve-2026-72112","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72112","title":{"rendered":"CVE-2026-72112 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nio_uring\/bpf-ops: rej"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>io_uring\/bpf-ops: reject re-registration of an already-bound ops<\/p>\n<p>io_install_bpf() only rejects a second registration on the ctx side<br \/>\n(ctx-&gt;bpf_ops) and sets the per-map back-pointer ops-&gt;priv<br \/>\nunconditionally. The struct_ops link path never advances a map past<br \/>\nBPF_STRUCT_OPS_STATE_READY, so the same io_uring_bpf_ops map can be<br \/>\nregistered more than once, and bpf_io_reg() re-resolves the target ring<br \/>\nvia fget(ops-&gt;ring_fd) on every call. A caller can therefore point the<br \/>\nsame ring_fd at a different io_ring_ctx between two BPF_LINK_CREATE<br \/>\ncalls.<\/p>\n<p>The second registration passes the ctx-&gt;bpf_ops check (the new ctx has<br \/>\nnone) and overwrites ops-&gt;priv, orphaning the first ctx. Teardown<br \/>\n(io_eject_bpf()\/bpf_io_unreg()) only reaches a ctx through ops-&gt;priv, so<br \/>\nthe orphaned ctx is never torn down: its ctx-&gt;loop_step keeps pointing<br \/>\ninto the struct_ops trampoline, which is freed once the map is gone. A<br \/>\nlater io_uring_enter() on the orphaned ring then calls the dangling<br \/>\nctx-&gt;loop_step from io_run_loop() &#8212; a use-after-free of freed<br \/>\nexecutable memory, reachable by a task with CAP_BPF + CAP_PERFMON.<\/p>\n<p>Reject registration when ops-&gt;priv is already set, as hid_bpf_reg()<br \/>\ndoes for its struct_ops.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>io_uring\/bpf-ops: reject re-registration of an already-bound ops<\/p>\n<p>io_install_bpf() only rejects a second registration on the ctx si<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6780","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6780"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6780"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}