CVE-2025-38591

CVE-2025-38591

Medium · published August 19, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
10.7
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

bpf: Reject narrower access to pointer ctx fields

The following BPF program, simplified from a syzkaller repro, causes a

kernel warning:

r0 = *(u8 *)(r1 + 169);

exit;

With pointer field sk being at offset 168 in __sk_buff. This access is

detected as a narrower read in bpf_skb_is_valid_access because it

doesn't match offsetof(struct __sk_buff, sk). It is therefore allowed

and later proceeds to bpf_convert_ctx_access. Note that for the

"is_narrower_load" case in the convert_ctx_accesses(), the insn->off

is aligned, so the cnt may not be 0 because it matches the

offsetof(struct __sk_buff, sk) in the bpf_convert_ctx_access. However,

the target_size stays 0 and the verifier errors with a kernel warning:

verifier bug: error during ctx access conversion(1)

This patch fixes that to return a proper "invalid bpf_context access

off=X size=Y" error on the load instruction.

The same issue affects multiple other fields in context structures that

allow narrow access. Some other non-affected fields (for sk_msg,

sk_lookup, and sockopt) were also changed to use bpf_ctx_range_ptr for

consistency.

Note this syzkaller crash was reported in the "Closes" link below, which

used to be about a different bug, fixed in

commit fce7bd8e385a ("bpf/verifier: Handle BPF_LOAD_ACQ instructions

in insn_def_regno()"). Because syzbot somehow confused the two bugs,

the new crash and repro didn't get reported to the mailing list.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00210 · 10.7th percentile
Published
2025-08-19T21:15Z
Affected products (1)
ProductVersionsFixed in
linux/linux_kernel≥ 4.13, < 6.16.16.16.1
References (9)
EPSS history
Timeline
  • 19 AUG 17:03Z
    bpf: Reject narrower access to pointer ctx fields
    cvelistv5