CVE-2025-38591

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
19/08/2025
Last modified:
06/02/2026

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> bpf: Reject narrower access to pointer ctx fields<br /> <br /> The following BPF program, simplified from a syzkaller repro, causes a<br /> kernel warning:<br /> <br /> r0 = *(u8 *)(r1 + 169);<br /> exit;<br /> <br /> With pointer field sk being at offset 168 in __sk_buff. This access is<br /> detected as a narrower read in bpf_skb_is_valid_access because it<br /> doesn&amp;#39;t match offsetof(struct __sk_buff, sk). It is therefore allowed<br /> and later proceeds to bpf_convert_ctx_access. Note that for the<br /> "is_narrower_load" case in the convert_ctx_accesses(), the insn-&gt;off<br /> is aligned, so the cnt may not be 0 because it matches the<br /> offsetof(struct __sk_buff, sk) in the bpf_convert_ctx_access. However,<br /> the target_size stays 0 and the verifier errors with a kernel warning:<br /> <br /> verifier bug: error during ctx access conversion(1)<br /> <br /> This patch fixes that to return a proper "invalid bpf_context access<br /> off=X size=Y" error on the load instruction.<br /> <br /> The same issue affects multiple other fields in context structures that<br /> allow narrow access. Some other non-affected fields (for sk_msg,<br /> sk_lookup, and sockopt) were also changed to use bpf_ctx_range_ptr for<br /> consistency.<br /> <br /> Note this syzkaller crash was reported in the "Closes" link below, which<br /> used to be about a different bug, fixed in<br /> commit fce7bd8e385a ("bpf/verifier: Handle BPF_LOAD_ACQ instructions<br /> in insn_def_regno()"). Because syzbot somehow confused the two bugs,<br /> the new crash and repro didn&amp;#39;t get reported to the mailing list.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.13 (including) 6.16.1 (excluding)