CVE-2024-50163

bpf: Make sure internal and UAPI bpf_redirect flags don't overlap

Medium · published November 7, 2024

CVSS v3.1
5.5
EPSS
0%
Percentile
11.4
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

bpf: Make sure internal and UAPI bpf_redirect flags don't overlap

The bpf_redirect_info is shared between the SKB and XDP redirect paths,

and the two paths use the same numeric flag values in the ri->flags

field (specifically, BPF_F_BROADCAST == BPF_F_NEXTHOP). This means that

if skb bpf_redirect_neigh() is used with a non-NULL params argument and,

subsequently, an XDP redirect is performed using the same

bpf_redirect_info struct, the XDP path will get confused and end up

crashing, which syzbot managed to trigger.

With the stack-allocated bpf_redirect_info, the structure is no longer

shared between the SKB and XDP paths, so the crash doesn't happen

anymore. However, different code paths using identically-numbered flag

values in the same struct field still seems like a bit of a mess, so

this patch cleans that up by moving the flag definitions together and

redefining the three flags in BPF_F_REDIRECT_INTERNAL to not overlap

with the flags used for XDP. It also adds a BUILD_BUG_ON() check to make

sure the overlap is not re-introduced by mistake.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00216 · 11.4th percentile
Published
2024-11-07T09:31Z
EPSS history
Timeline
  • 07 NOV 09:31Z
    bpf: Make sure internal and UAPI bpf_redirect flags don't overlap
    cvelistv5