In the Linux kernel, the following vulnerability has been resolved:
bpf: Do mark_chain_precision for ARG_CONST_ALLOC_SIZE_OR_ZERO
Precision markers need to be propagated whenever we have an ARG_CONST_* style argument, as the verifier cannot consider imprecise scalars to be equivalent for the purposes of states_equal check when such arguments refine the return value (in this case, set mem_size for PTR_TO_MEM). The resultant mem_size for the R0 is derived from the constant value, and if the verifier incorrectly prunes states considering them equivalent where such arguments exist (by seeing that both registers have reg->precise as false in regsafe), we can end up with invalid programs passing the verifier which can do access beyond what should have been the correct mem_size in that explored state.
To show a concrete example of the problem:
0000000000000000 <prog>: 0: r2 = *(u32 *)(r1 + 80) 1: r1 = *(u32 *)(r1 + 76) 2: r3 = r1 3: r3 += 4 4: if r3 > r2 goto +18 <LBB5_5> 5: w2 = 0 6: *(u32 *)(r1 + 0) = r2 7: r1 = *(u32 *)(r1 + 0) 8: r2 = 1 9: if w1 == 0 goto +1 <LBB5_3> 10: r2 = -1
0000000000000058 <LBB5_3>: 11: r1 = 0 ll 13: r3 = 0 14: call bpf_ringbuf_reserve 15: if r0 == 0 goto +7 <LBB5_5> 16: r1 = r0 17: r1 += 16777215 18: w2 = 0 19: *(u8 *)(r1 + 0) = r2 20: r1 = r0 21: r2 = 0 22: call bpf_ringbuf_submit
00000000000000b8 <LBB5_5>: 23: w0 = 0 24: exit
For the first case, the single line execution's exploration will prune the search at insn 14 for the branch insn 9's second leg as it will be verified first using r2 = -1 (UINT_MAX), while as w1 at insn 9 will always be 0 so at runtime we don't get error for being greater than UINT_MAX/4 from bpf_ringbuf_reserve. The verifier during regsafe just sees reg->precise as false for both r2 registers in both states, hence considers them equal for purposes of states_equal.
If we propagated precise markers using the backtracking support, we would use the precise marking to then ensure that old r2 (UINT_MAX) was within the new r2 (1) and this would never be true, so the verification would rightfully fail.
The end result is that the out of bounds access at instruction 19 would be permitted without this fix.
Note that reg->precise is always set to true when user does not have CAP_BPF (or when subprog count is greater than 1 (i.e. use of any static or global functions)), hence this is only a problem when precision marks need to be explicitly propagated (i.e. privileged users with CAP_BPF).
A simplified test case has been included in the next patch to prevent future regressions.
CVSS Details
- CVSS 3.1 Base Score: 7.1
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jun 20, 2025 | Jun 20, 2025 |
| Huawei Euleros 2_0_sp13 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade bpftoolUpgrade python3-perfUpgrade kernel | Oct 24, 2025 | Oct 23, 2025 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jun 18, 2025 |
| Ubuntu | — | Upgrade linux-image-fipsUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-virtualUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-kvmUpgrade linux-image-oem-20.04dUpgrade linux-image-gcp-5.15Upgrade linux-image-5.15.0-1112-aws-fipsUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-oem-20.04Upgrade linux-image-5.15.0-1075-xilinx-zynqmpUpgrade linux-image-oracleUpgrade linux-image-5.15.0-186-genericUpgrade linux-image-lowlatency-5.15Upgrade linux-image-generic-lpaeUpgrade linux-image-aws-5.15Upgrade linux-image-5.15.0-1104-kvmUpgrade linux-image-5.15.0-1095-gkeopNo solution existsUpgrade linux-image-5.15.0-184-lowlatencyUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-fips-5.15Upgrade linux-image-virtual-5.15Upgrade linux-image-5.15.0-1117-azureUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-intel-iotgUpgrade linux-image-5.15.0-1112-gcpUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-azure-cvmUpgrade linux-image-gkeUpgrade linux-image-5.15.0-1053-nvidia-tegra-igxUpgrade linux-image-awsUpgrade linux-image-generic-5.15Upgrade linux-image-5.15.0-1107-intel-iotgUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-realtimeUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-5.15.0-184-lowlatency-64kUpgrade linux-image-aws-64k-5.15Upgrade linux-image-gkeop-5.15Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-azure-fips-5.15Upgrade linux-image-5.15.0-1107-nvidiaUpgrade linux-image-5.15.0-186-generic-lpaeUpgrade linux-image-gkeopUpgrade linux-image-ibm-5.15Upgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-5.15.0-1108-gkeUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-oem-20.04cUpgrade linux-image-5.15.0-1064-nvidia-tegraUpgrade linux-image-azureUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-aws-fipsUpgrade linux-image-genericUpgrade linux-image-5.15.0-1112-awsUpgrade linux-image-5.15.0-1106-ibmUpgrade linux-image-5.15.0-1117-azure-fdeUpgrade linux-image-azure-fipsUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-lowlatency-64kUpgrade linux-image-generic-64k-5.15Upgrade linux-image-5.15.0-1109-oracleUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-5.15.0-1111-realtimeUpgrade linux-image-5.15.0-1064-nvidia-tegra-rtUpgrade linux-image-5.15.0-1112-aws-64kUpgrade linux-image-5.15.0-1112-gcp-fipsUpgrade linux-image-lowlatencyUpgrade linux-image-5.15.0-186-fipsUpgrade linux-image-5.15.0-1107-nvidia-lowlatencyUpgrade linux-image-kvm-5.15Upgrade linux-image-realtime-5.15Upgrade linux-image-5.15.0-1104-intel-iot-realtimeUpgrade linux-image-ibmUpgrade linux-image-oracle-5.15Upgrade linux-image-gcp-fipsUpgrade linux-image-azure-fdeUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-nvidia-5.15Upgrade linux-image-5.15.0-1117-azure-fipsUpgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-intelUpgrade linux-image-gke-5.15Upgrade linux-image-generic-64kUpgrade linux-image-nvidia-tegraUpgrade linux-image-nvidiaUpgrade linux-image-oem-20.04bUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-186-generic-64kUpgrade linux-image-azure-5.15Upgrade linux-image-5.15.0-1053-nvidia-tegra-igx-rtUpgrade linux-image-aws-fips-5.15Upgrade linux-image-azure-fde-5.15Upgrade linux-image-azure-lts-22.04 | Jun 26, 2025 | Jun 18, 2025 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Feb 9, 2026 | Jun 18, 2025 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub