CVE-2024-26589: bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS

Published Feb 22, 2024
·
Updated

bpf: Reject variable offset alu on PTRTOFLOWKEYS

For PTRTOFLOWKEYS, checkflowkeysaccess() 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() R6w=ctx() 1: (79) r7 = (u64 )(r6 +144) ; R6w=ctx() R7w=flowkeys() 2: (b7) r8 = 1024 ; R8w=1024 3: (37) r8 /= 1 ; R8w=scalar() 4: (57) r8 &= 1024 ; R8w=scalar(smin=smin32=0, smax=umax=smax32=umax32=1024,varoff=(0x0; 0x400)) 5: (0f) r7 += r8 markprecise: frame0: lastidx 5 firstidx 0 subseqidx -1 markprecise: frame0: regs=r8 stack= before 4: (57) r8 &= 1024 markprecise: frame0: regs=r8 stack= before 3: (37) r8 /= 1 markprecise: frame0: regs=r8 stack= before 2: (b7) r8 = 1024 6: R7w=flowkeys(smin=smin32=0,smax=umax=smax32=umax32=1024,varoff =(0x0; 0x400)) R8w=scalar(smin=smin32=0,smax=umax=smax32=umax32=1024, varoff=(0x0; 0x400)) 6: (79) r0 = (u64 )(r7 +0) ; R0w=scalar() 7: (95) exit

This prog loads flowkeys 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> bpfdispatchernopfunc include/linux/bpf.h:1231 [inline] bpfprogrun include/linux/filter.h:651 [inline] bpfprogrun include/linux/filter.h:658 [inline] bpfprogrunpinoncpu include/linux/filter.h:675 [inline] bpfflowdissect+0x15f/0x350 net/core/flowdissector.c:991 bpfprogtestrunflowdissector+0x39d/0x620 net/bpf/testrun.c:1359 bpfprogtestrun kernel/bpf/syscall.c:4107 [inline] sysbpf+0xf8f/0x4560 kernel/bpf/syscall.c:5475 dosysbpf kernel/bpf/syscall.c:5561 [inline] sesysbpf kernel/bpf/syscall.c:5559 [inline] x64sysbpf+0x73/0xb0 kernel/bpf/syscall.c:5559 dosyscallx64 arch/x86/entry/common.c:52 [inline] dosyscall64+0x3f/0x110 arch/x86/entry/common.c:83 entrySYSCALL64afterhwframe+0x63/0x6b

Fix this by rejecting ptr alu with variable offset on flowkeys. Applying the patch rejects the program with "R7 pointer arithmetic on flowkeys prohibited".

Affected Software

5 affected componentsFixes available
Linux Linux kernel>=4.20<5.15.148
Linux Linux kernel>=5.16.0<6.1.75
Linux Linux kernel>=6.2.0<6.6.14
Linux Linux kernel>=6.7.0<6.7.2
debian/linux<=5.10.223-1, <=5.10.234-1
6.1.129-16.1.135-16.12.27-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.129-1Fixed in 6.1.135-1Fixed in 6.12.27-1
  2. Compensating control

    In the eBPF verifier/bpf ALU handling for PTR_TO_FLOW_KEYS, reject pointer arithmetic (ptr alu) when the ALU offset is variable (var_off not fixed), i.e., enforce that check_flow_keys_access() validation only permits fixed offsets for PTR_TO_FLOW_KEYS and prohibits variable-offset pointer arithmetic.

Event History

Feb 22, 2024
CVE Published
via MITRE·04:13 PM
Data Sourced
via MITRE·04:13 PM
DescriptionSeverity
Data Sourced
via NVD·05:15 PM
RemedyDescriptionSeverityWeaknessAffected Software
Feb 23, 2024
Data Sourced
via Red Hat·01:58 PM
DescriptionSeverityAffected Software
Mar 11, 2024
Data Sourced
via Launchpad·09:51 PM
Description
Apr 27, 2025
Data Sourced
via Ubuntu·11:44 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2024-26589?

CVE-2024-26589 has a high severity rating due to the potential for unauthorized access to sensitive information.

2

How do I fix CVE-2024-26589?

To fix CVE-2024-26589, upgrade your Linux kernel to a version that includes the security patch, such as 6.1.123-1 or newer.

3

Which Linux kernel versions are affected by CVE-2024-26589?

CVE-2024-26589 affects Linux kernel versions from 4.20 up to 5.15.148 and from 5.16.0 up to 6.1.75, among others.

4

What impact does CVE-2024-26589 have on Linux Kernel security?

CVE-2024-26589 allows for unchecked variable offsets in pointer arithmetic, potentially leading to memory corruption and security breaches.

5

Is there a workaround for CVE-2024-26589?

Currently, the recommended solution is to upgrade the Linux kernel to a patched version, as no effective workaround exists.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203