CVE-2025-38502
Severity CVSS v4.0:
Pending analysis
Type:
CWE-125
Out-of-bounds Read
Publication date:
16/08/2025
Last modified:
07/01/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
bpf: Fix oob access in cgroup local storage<br />
<br />
Lonial reported that an out-of-bounds access in cgroup local storage<br />
can be crafted via tail calls. Given two programs each utilizing a<br />
cgroup local storage with a different value size, and one program<br />
doing a tail call into the other. The verifier will validate each of<br />
the indivial programs just fine. However, in the runtime context<br />
the bpf_cg_run_ctx holds an bpf_prog_array_item which contains the<br />
BPF program as well as any cgroup local storage flavor the program<br />
uses. Helpers such as bpf_get_local_storage() pick this up from the<br />
runtime context:<br />
<br />
ctx = container_of(current->bpf_ctx, struct bpf_cg_run_ctx, run_ctx);<br />
storage = ctx->prog_item->cgroup_storage[stype];<br />
<br />
if (stype == BPF_CGROUP_STORAGE_SHARED)<br />
ptr = &READ_ONCE(storage->buf)->data[0];<br />
else<br />
ptr = this_cpu_ptr(storage->percpu_buf);<br />
<br />
For the second program which was called from the originally attached<br />
one, this means bpf_get_local_storage() will pick up the former<br />
program&#39;s map, not its own. With mismatching sizes, this can result<br />
in an unintended out-of-bounds access.<br />
<br />
To fix this issue, we need to extend bpf_map_owner with an array of<br />
storage_cookie[] to match on i) the exact maps from the original<br />
program if the second program was using bpf_get_local_storage(), or<br />
ii) allow the tail call combination if the second program was not<br />
using any of the cgroup local storage maps.
Impact
Base Score 3.x
7.10
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9 (including) | 5.15.192 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.151 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.105 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.46 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.16.1 (excluding) |
| cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/19341d5c59e8c7e8528e40f8663e99d67810473c
- https://git.kernel.org/stable/c/41688d1fc5d163a6c2c0e95c0419e2cb31a44648
- https://git.kernel.org/stable/c/66da7cee78590259b400e51a70622ccd41da7bb2
- https://git.kernel.org/stable/c/7acfa07c585e3d7a64654d38f0a5c762877d0b9b
- https://git.kernel.org/stable/c/abad3d0bad72a52137e0c350c59542d75ae4f513
- https://git.kernel.org/stable/c/c1c74584b9b4043c52e41fec415226e582d266a3
- https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html



