In the Linux kernel, the following vulnerability has been resolved:
bpf: add missing check_func_arg_reg_off() to prevent out-of-bounds memory accesses
Currently, it's possible to pass in a modified CONST_PTR_TO_DYNPTR to a global function as an argument. The adverse effects of this is that BPF helpers can continue to make use of this modified CONST_PTR_TO_DYNPTR from within the context of the global function, which can unintentionally result in out-of-bounds memory accesses and therefore compromise overall system stability i.e.
[ 244.157771] BUG: KASAN: slab-out-of-bounds in bpf_dynptr_data+0x137/0x140 [ 244.161345] Read of size 8 at addr ffff88810914be68 by task test_progs/302 [ 244.167151] CPU: 0 PID: 302 Comm: test_progs Tainted: G O E 6.10.0-rc3-00131-g66b586715063 #533 [ 244.174318] Call Trace: [ 244.175787] <TASK> [ 244.177356] dump_stack_lvl+0x66/0xa0 [ 244.179531] print_report+0xce/0x670 [ 244.182314] ? __virt_addr_valid+0x200/0x3e0 [ 244.184908] kasan_report+0xd7/0x110 [ 244.187408] ? bpf_dynptr_data+0x137/0x140 [ 244.189714] ? bpf_dynptr_data+0x137/0x140 [ 244.192020] bpf_dynptr_data+0x137/0x140 [ 244.194264] bpf_prog_b02a02fdd2bdc5fa_global_call_bpf_dynptr_data+0x22/0x26 [ 244.198044] bpf_prog_b0fe7b9d7dc3abde_callback_adjust_bpf_dynptr_reg_off+0x1f/0x23 [ 244.202136] bpf_user_ringbuf_drain+0x2c7/0x570 [ 244.204744] ? 0xffffffffc0009e58 [ 244.206593] ? __pfx_bpf_user_ringbuf_drain+0x10/0x10 [ 244.209795] bpf_prog_33ab33f6a804ba2d_user_ringbuf_callback_const_ptr_to_dynptr_reg_off+0x47/0x4b [ 244.215922] bpf_trampoline_6442502480+0x43/0xe3 [ 244.218691] __x64_sys_prlimit64+0x9/0xf0 [ 244.220912] do_syscall_64+0xc1/0x1d0 [ 244.223043] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 244.226458] RIP: 0033:0x7ffa3eb8f059 [ 244.228582] Code: 08 89 e8 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 8f 1d 0d 00 f7 d8 64 89 01 48 [ 244.241307] RSP: 002b:00007ffa3e9c6eb8 EFLAGS: 00000206 ORIG_RAX: 000000000000012e [ 244.246474] RAX: ffffffffffffffda RBX: 00007ffa3e9c7cdc RCX: 00007ffa3eb8f059 [ 244.250478] RDX: 00007ffa3eb162b4 RSI: 0000000000000000 RDI: 00007ffa3e9c7fb0 [ 244.255396] RBP: 00007ffa3e9c6ed0 R08: 00007ffa3e9c76c0 R09: 0000000000000000 [ 244.260195] R10: 0000000000000000 R11: 0000000000000206 R12: ffffffffffffff80 [ 244.264201] R13: 000000000000001c R14: 00007ffc5d6b4260 R15: 00007ffa3e1c7000 [ 244.268303] </TASK>
Add a check_func_arg_reg_off() to the path in which the BPF verifier verifies the arguments of global function arguments, specifically those which take an argument of type ARG_PTR_TO_DYNPTR | MEM_RDONLY. Also, process_dynptr_func() doesn't appear to perform any explicit and strict type matching on the supplied register type, so let's also enforce that a register either type PTR_TO_STACK or CONST_PTR_TO_DYNPTR is by the caller.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | May 15, 2025 | Aug 26, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1017-oracleUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-50-genericUpgrade linux-image-6.8.0-1019-nvidia-lowlatencyUpgrade linux-image-6.8.0-50-lowlatencyUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-gkeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-oem-24.04aUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.8.0-50-generic-64kUpgrade linux-image-oem-22.04dUpgrade linux-image-oracleUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-oracle-64kUpgrade linux-image-awsUpgrade linux-image-6.8.0-1019-gcpUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-oem-24.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1019-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1019-nvidiaUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-virtualUpgrade linux-image-kvmUpgrade linux-image-nvidia-6.8Upgrade linux-image-nvidia-64kUpgrade linux-image-oem-22.04Upgrade linux-image-azureUpgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1015-gkeUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-gcpUpgrade linux-image-6.8.0-1017-ibmUpgrade linux-image-oem-22.04cUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1020-awsUpgrade linux-image-6.8.0-1020-azureUpgrade linux-image-oem-22.04bUpgrade linux-image-genericUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1018-oemUpgrade linux-image-6.8.0-1016-raspiUpgrade linux-image-6.8.0-1002-gkeopUpgrade linux-image-oem-22.04aUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-gkeopUpgrade linux-image-ibmUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-6.8.0-1020-azure-fdeUpgrade linux-image-ibm-classicUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-azure-fdeUpgrade linux-image-raspiUpgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1019-nvidia-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-6.8.0-1017-oracle-64kUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-6.8.0-50-lowlatency-64kUpgrade linux-image-generic-64k | Dec 13, 2024 | Aug 26, 2024 |
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