bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS

Summary

CVECVE-2024-26589
StatePUBLISHED
AssignerLinux
Source PriorityCVE Program / NVD first with legacy fallback
Published2024-02-22 17:15:09 UTC
Updated2026-08-04 11:16:45 UTC
DescriptionIn 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".

Risk And Classification

Primary CVSS: v3.1 7.8 HIGH from [email protected]

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Problem Types: CWE-119


VersionSourceTypeScoreSeverityVector
3.1[email protected]Primary7.8HIGHCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
3.1416baaa9-dc9f-4396-8d5f-8c081fb06d67Secondary7.8HIGHCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
3.1CNADECLARED7.8HIGHCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

CVSS v3.1 Breakdown

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

NVD Known Affected Configurations (CPE 2.3)

TypeVendorProductVersionUpdateEditionLanguage
Operating System Linux Linux Kernel All All All All

Vendor Declared Affected Products

SourceVendorProductVersionPlatforms
CNA Linux Linux affected d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9 29ffa63f21bcdcef3e36b03cccf9d0cd031f6ab0 git Not specified
CNA Linux Linux affected d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9 4108b86e324da42f7ed425bd71632fd844300dc8 git Not specified
CNA Linux Linux affected d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9 e8d3872b617c21100c5ee4f64e513997a68c2e3d git Not specified
CNA Linux Linux affected d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9 1b500d5d6cecf98dd6ca88bc9e7ae1783c83e6d3 git Not specified
CNA Linux Linux affected d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9 22c7fa171a02d310e3a3f6ed46a698ca8a0060ed git Not specified
CNA Linux Linux affected 4.20 Not specified
CNA Linux Linux unaffected 4.20 semver Not specified
CNA Linux Linux unaffected 5.15.148 5.15.* semver Not specified
CNA Linux Linux unaffected 6.1.75 6.1.* semver Not specified
CNA Linux Linux unaffected 6.6.14 6.6.* semver Not specified
CNA Linux Linux unaffected 6.7.2 6.7.* semver Not specified
CNA Linux Linux unaffected 6.8 * original_commit_for_fix Not specified

References

ReferenceSourceLinkTags
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS - kernel/git/stable/linux.git - Linux kernel stable tree af854a3a-2127-422b-91ae-364da2661108 git.kernel.org Patch
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS - kernel/git/stable/linux.git - Linux kernel stable tree af854a3a-2127-422b-91ae-364da2661108 git.kernel.org Patch
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS - kernel/git/stable/linux.git - Linux kernel stable tree af854a3a-2127-422b-91ae-364da2661108 git.kernel.org Patch
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS - kernel/git/stable/linux.git - Linux kernel stable tree af854a3a-2127-422b-91ae-364da2661108 git.kernel.org Patch
bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS - kernel/git/stable/linux.git - Linux kernel stable tree af854a3a-2127-422b-91ae-364da2661108 git.kernel.org Patch
CVE Program record CVE.ORG www.cve.org canonical
NVD vulnerability detail NVD nvd.nist.gov canonical, analysis

Legacy QID Mappings

  • 200182 Ubuntu Security Notification for Linux kernel (OEM) Vulnerabilities (USN-6688-1)
  • 200243 Ubuntu Security Notification for Linux kernel Vulnerabilities (USN-6725-1)
  • 755965 SUSE Enterprise Linux Security Update for the linux kernel (SUSE-SU-2024:0858-1)
  • 755966 SUSE Enterprise Linux Security Update for the linux kernel (SUSE-SU-2024:0857-1)
  • 756004 SUSE Enterprise Linux Security Update for the Linux Kernel (SUSE-SU-2024:0926-1)
  • 756010 SUSE Enterprise Linux Security Update for the Linux Kernel (SUSE-SU-2024:0977-1)

© CVE.report 2026

Use of this information constitutes acceptance for use in an AS IS condition. There are NO warranties, implied or otherwise, with regard to this information or its use. Any use of this information is at the user's risk. It is the responsibility of user to evaluate the accuracy, completeness or usefulness of any information, opinion, advice or other content. EACH USER WILL BE SOLELY RESPONSIBLE FOR ANY consequences of his or her direct or indirect use of this web site. ALL WARRANTIES OF ANY KIND ARE EXPRESSLY DISCLAIMED. This site will NOT BE LIABLE FOR ANY DIRECT, INDIRECT or any other kind of loss.

CVE, CWE, and OVAL are registred trademarks of The MITRE Corporation and the authoritative source of CVE content is MITRE's CVE web site. This site includes MITRE data granted under the following license.

Free CVE JSON API cve.report/api

CVE.report and Source URL Uptime Status status.cve.report