{"id":25721,"date":"2026-09-18T04:31:47","date_gmt":"2026-09-17T20:31:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-90312"},"modified":"2026-09-18T04:31:47","modified_gmt":"2026-09-17T20:31:47","slug":"cve-2026-90312","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-90312","title":{"rendered":"CVE-2026-90312 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Check load-acqui"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>bpf: Check load-acquire src ptr type before the load<\/p>\n<p>check_atomic_load() calls check_load_mem() before atomic_ptr_type_ok().<br \/>\nFor a load-acquire that fetches into its own source register (dst_reg ==<br \/>\nsrc_reg), check_load_mem() overwrites src_reg&#8217;s type with the type of the<br \/>\nloaded value, so the subsequent atomic_ptr_type_ok() no longer sees the<br \/>\nsource pointer and fails to reject the disallowed types (ctx, pkt,<br \/>\nflow_keys, sock).<\/p>\n<p>Since bpf_convert_ctx_accesses() does not rewrite atomic loads, the raw<br \/>\naccess to the underlying kernel object is left in place. The destination<br \/>\ntype is taken from the ctx access itself, so a load-acquire of the sk<br \/>\nfield of struct __sk_buff for example leaves the register typed as<br \/>\nPTR_TO_SOCK_COMMON_OR_NULL, which type_is_sk_pointer() does not match<br \/>\neither, while it actually holds unconverted struct sk_buff bytes. Once<br \/>\nthe NULL check has passed this is a type confusion, not just a leak of<br \/>\nkernel data.<\/p>\n<p>Validate src_reg with check_reg_arg() and check the source pointer type<br \/>\nwith atomic_ptr_type_ok() before the load again, mirroring<br \/>\ncheck_atomic_rmw(). Out-of-range register numbers are already rejected<br \/>\nearlier by check_and_resolve_insns() (commit 503d21ef8eac (&#8220;bpf: Do<br \/>\nregister range validation early&#8221;)), and the only exemption there,<br \/>\nis_stack_arg_ldx(), requires BPF_LDX | BPF_MEM | BPF_DW and thus never<br \/>\nmatches a BPF_ATOMIC insn. atomic_ptr_type_ok() can therefore not<br \/>\ndereference register state out of bounds, that is, the out-of-bounds<br \/>\nread addressed by the Fixes commit below does not reappear (as proven<br \/>\nalso via selftest).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>bpf: Check load-acquire src ptr type before the load<\/p>\n<p>check_atomic_load() calls check_load_mem() before atomic_ptr_type_ok().<br \/>\nFor a<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25721","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25721","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=25721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}