In the Linux kernel, the following vulnerability has been resolved:
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS
For PTR_TO_FLOW_KEYS, check_flow_keys_access() only uses fixed off for validation. However, variable offset ptr alu is not prohibited for this ptr kind. So the variable offset is not checked.
The following prog is accepted:
func#0 @0 0: R1=ctx() R10=fp0 0: (bf) r6 = r1 ; R1=ctx() R6_w=ctx() 1: (79) r7 = *(u64 *)(r6 +144) ; R6_w=ctx() R7_w=flow_keys() 2: (b7) r8 = 1024 ; R8_w=1024 3: (37) r8 /= 1 ; R8_w=scalar() 4: (57) r8 &= 1024 ; R8_w=scalar(smin=smin32=0, smax=umax=smax32=umax32=1024,var_off=(0x0; 0x400)) 5: (0f) r7 += r8 mark_precise: frame0: last_idx 5 first_idx 0 subseq_idx -1 mark_precise: frame0: regs=r8 stack= before 4: (57) r8 &= 1024 mark_precise: frame0: regs=r8 stack= before 3: (37) r8 /= 1 mark_precise: frame0: regs=r8 stack= before 2: (b7) r8 = 1024 6: R7_w=flow_keys(smin=smin32=0,smax=umax=smax32=umax32=1024,var_off =(0x0; 0x400)) R8_w=scalar(smin=smin32=0,smax=umax=smax32=umax32=1024, var_off=(0x0; 0x400)) 6: (79) r0 = *(u64 *)(r7 +0) ; R0_w=scalar() 7: (95) exit
This prog loads flow_keys to r7, and adds the variable offset r8 to r7, and finally causes out-of-bounds access:
BUG: unable to handle page fault for address: ffffc90014c80038 [...] Call Trace: <TASK> bpf_dispatcher_nop_func include/linux/bpf.h:1231 [inline] __bpf_prog_run include/linux/filter.h:651 [inline] bpf_prog_run include/linux/filter.h:658 [inline] bpf_prog_run_pin_on_cpu include/linux/filter.h:675 [inline] bpf_flow_dissect+0x15f/0x350 net/core/flow_dissector.c:991 bpf_prog_test_run_flow_dissector+0x39d/0x620 net/bpf/test_run.c:1359 bpf_prog_test_run kernel/bpf/syscall.c:4107 [inline] __sys_bpf+0xf8f/0x4560 kernel/bpf/syscall.c:5475 __do_sys_bpf kernel/bpf/syscall.c:5561 [inline] __se_sys_bpf kernel/bpf/syscall.c:5559 [inline] __x64_sys_bpf+0x73/0xb0 kernel/bpf/syscall.c:5559 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0x3f/0x110 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x63/0x6b
Fix this by rejecting ptr alu with variable offset on flow_keys. Applying the patch rejects the program with "R7 pointer arithmetic on flow_keys prohibited".
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 |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-headersUpgrade python-perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernelUpgrade kernel-debuginfo-common-x86_64Upgrade perf-debuginfoUpgrade kernel-toolsUpgrade python-perfUpgrade kernel-livepatch-5.15.148-97.158Upgrade bpftoolUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-debuginfoUpgrade kernel-develUpgrade kernel-tools-debuginfoUpgrade perf | Jul 9, 2024 | Feb 22, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-libbpf-develUpgrade kernel-debuginfoUpgrade kernel-modules-extraUpgrade kernelUpgrade bpftoolUpgrade bpftool-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel-headersUpgrade python3-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpfUpgrade kernel-modules-extra-commonUpgrade perf-debuginfoUpgrade kernel-toolsUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-develUpgrade python3-perfUpgrade perfUpgrade kernel-tools-debuginfoUpgrade kernel-develUpgrade kernel-livepatch-6.1.75-99.163 | Feb 17, 2025 | Feb 22, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Feb 22, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-toolsUpgrade python3-perfUpgrade kernelUpgrade kernel-tools-libsUpgrade kernel-abi-stablelists | May 13, 2024 | Feb 22, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-tools-libsUpgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade bpftoolUpgrade kernelUpgrade python3-perf | Jun 3, 2024 | Feb 22, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade kernelUpgrade bpftoolUpgrade python3-perfUpgrade kernel-tools | Jul 1, 2024 | Feb 22, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernelUpgrade python3-perf | Jul 17, 2024 | Feb 22, 2024 |
| Redhat_linux | — | Upgrade kernelUpgrade kernel-rtNo solution exists | Dec 5, 2024 | Feb 22, 2024 |
| Suse | — | Upgrade kernel-defaultUpgrade kernel-macrosUpgrade dtb-sprdUpgrade kselftests-kmp-rtUpgrade cluster-md-kmp-64kbUpgrade gfs2-kmp-defaultUpgrade dtb-mediatekUpgrade kernel-default-baseUpgrade kernel-rt-livepatch-develUpgrade reiserfs-kmp-azureUpgrade reiserfs-kmp-rtUpgrade kernel-rt_debugUpgrade kernel-azure-vdsoUpgrade dtb-nvidiaUpgrade kernel-debug-develUpgrade kernel-rt-extraUpgrade kselftests-kmp-defaultUpgrade kernel-default-base-rebuildUpgrade kernel-obs-buildUpgrade dtb-socionextUpgrade dtb-apmUpgrade kernel-debug-livepatch-develUpgrade dlm-kmp-rtUpgrade dlm-kmp-defaultUpgrade kernel-64kb-extraUpgrade kernel-devel-rtUpgrade kernel-debug-vdsoUpgrade dlm-kmp-azureUpgrade ocfs2-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade dtb-amdUpgrade kernel-64kb-develUpgrade kernel-rt-develUpgrade kernel-syms-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-docsUpgrade dtb-amlogicUpgrade dtb-rockchipUpgrade cluster-md-kmp-defaultUpgrade dtb-armUpgrade dtb-renesasUpgrade kernel-default-livepatch-develUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-alteraUpgrade dtb-freescaleUpgrade dtb-appleUpgrade dlm-kmp-64kbUpgrade dtb-hisiliconUpgrade kernel-kvmsmall-develUpgrade kernel-64kb-optionalUpgrade dtb-exynosUpgrade dtb-amazonUpgrade ocfs2-kmp-defaultUpgrade kernel-rt-livepatchUpgrade kernel-preemptUpgrade ocfs2-kmp-rtUpgrade kernel-azureUpgrade reiserfs-kmp-64kbUpgrade kselftests-kmp-azureUpgrade kernel-kvmsmallUpgrade kernel-debugUpgrade dtb-lgUpgrade kernel-kvmsmall-vdsoUpgrade kernel-default-develUpgrade kernel-obs-qaUpgrade gfs2-kmp-64kbUpgrade kernel-default-extraUpgrade dtb-qcomUpgrade kernel-syms-azureUpgrade kernel-rt-vdsoUpgrade dtb-marvellUpgrade cluster-md-kmp-azureUpgrade kernel-zfcpdumpUpgrade gfs2-kmp-rtUpgrade dtb-xilinxUpgrade kernel-source-vanillaUpgrade kernel-azure-develUpgrade kernel-source-azureUpgrade dtb-allwinnerUpgrade kselftests-kmp-64kbUpgrade kernel-symsUpgrade kernel-rt-optionalUpgrade kernel-docs-htmlUpgrade kernel-rt_debug-develUpgrade kernel-default-livepatchUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-64kbUpgrade kernel-azure-extraUpgrade kernel-64kb-livepatch-develUpgrade kernel-rtUpgrade kernel-default-optionalUpgrade gfs2-kmp-azureUpgrade cluster-md-kmp-rtUpgrade kernel-preempt-develUpgrade kernel-devel-azureUpgrade kernel-default-vdsoUpgrade kernel-develUpgrade dtb-broadcomUpgrade kernel-source-rtUpgrade ocfs2-kmp-64kbUpgrade kernel-sourceUpgrade kernel-azure-livepatch-develUpgrade dtb-caviumUpgrade kernel-azure-optional | Mar 13, 2024 | Feb 22, 2024 |
| Ubuntu | — | Upgrade linux-image-5.4.0-177-genericUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-6.5.0-28-generic-64kUpgrade linux-image-6.5.0-1018-awsUpgrade linux-image-5.4.0-1107-raspiUpgrade linux-image-6.5.0-1015-nvidia-64kUpgrade linux-image-5.4.0-1111-kvmUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-5.15.0-1057-awsUpgrade linux-image-5.15.0-1055-oracleUpgrade linux-image-nvidia-64k-6.5Upgrade linux-image-6.5.0-1015-raspiUpgrade linux-image-generic-lpaeUpgrade linux-image-6.5.0-1021-oracleUpgrade linux-image-virtual-hwe-18.04Upgrade linux-image-kvmUpgrade linux-image-5.4.0-1122-oracleUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-oem-22.04dUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-5.15.0-1060-azure-fdeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-5.4.0-1128-azureUpgrade linux-image-aws-lts-20.04Upgrade linux-image-raspi-nolpaeUpgrade linux-image-6.5.0-1018-gcpUpgrade linux-image-5.15.0-1048-nvidiaUpgrade linux-image-5.4.0-1127-gcpUpgrade linux-image-5.15.0-102-generic-lpaeUpgrade linux-image-azure-cvmUpgrade linux-image-6.5.0-28-genericUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.5.0-1020-oemUpgrade linux-image-ibmUpgrade linux-image-5.15.0-1060-azureUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-oracleUpgrade linux-image-raspiUpgrade linux-image-awsUpgrade linux-image-6.5.0-28-lowlatency-64kUpgrade linux-image-aws-lts-22.04Upgrade linux-image-6.1.0-1035-oemUpgrade linux-image-6.5.0-1015-nvidiaUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-bluefieldUpgrade linux-image-azure-fdeUpgrade linux-image-nvidia-6.5Upgrade linux-image-starfiveUpgrade linux-image-azure-lts-20.04Upgrade linux-image-5.4.0-1083-bluefieldUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-gkeUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-generic-64kUpgrade linux-image-gkeop-5.4Upgrade linux-image-oem-osp1Upgrade linux-image-5.15.0-102-genericUpgrade linux-image-oem-22.04Upgrade linux-image-oem-22.04bUpgrade linux-image-5.15.0-1052-intel-iotgUpgrade linux-image-oem-20.04dUpgrade linux-image-5.4.0-177-generic-lpaeUpgrade linux-image-lowlatencyUpgrade linux-image-oem-20.04bUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-oem-22.04cUpgrade linux-image-virtualUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-5.15.0-1054-kvmUpgrade linux-image-intelUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-azureUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.5.0-1014-laptopUpgrade linux-image-6.5.0-1021-oracle-64kUpgrade linux-image-gkeopUpgrade linux-image-generic-hwe-18.04Upgrade linux-image-5.15.0-1055-gcpUpgrade linux-image-nvidiaUpgrade linux-image-5.15.0-102-lowlatency-64kUpgrade linux-image-5.4.0-1035-iotUpgrade linux-image-azure-lts-22.04Upgrade linux-image-oracle-lts-20.04Upgrade linux-image-6.5.0-1019-azure-fdeUpgrade linux-image-5.4.0-177-lowlatencyUpgrade linux-image-5.4.0-1123-awsUpgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-oem-20.04Upgrade linux-image-5.4.0-1090-gkeopUpgrade linux-image-5.4.0-1070-ibmUpgrade linux-image-genericUpgrade linux-image-6.5.0-28-lowlatencyUpgrade linux-image-oem-20.04cUpgrade linux-image-5.4.0-1042-xilinx-zynqmpUpgrade linux-image-gke-5.15Upgrade linux-image-5.15.0-1050-raspiUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-oem-22.04aUpgrade linux-image-5.15.0-1054-gkeUpgrade linux-image-5.15.0-1040-gkeopUpgrade linux-image-5.15.0-102-lowlatencyUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-5.15.0-1048-nvidia-lowlatencyUpgrade linux-image-oracle-64kUpgrade linux-image-laptop-23.10Upgrade linux-image-5.15.0-102-generic-64kUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-1050-ibmUpgrade linux-image-6.5.0-1019-azureUpgrade linux-image-raspi2Upgrade linux-image-oemUpgrade linux-image-intel-iotgUpgrade linux-image-6.5.0-1012-starfiveUpgrade linux-image-gcpUpgrade linux-image-lowlatency-64kUpgrade linux-image-generic-64k-hwe-20.04 | Mar 12, 2024 | Feb 22, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | Feb 22, 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