Skip to content
Fencer Vulns
high 7.8

CVE-2024-47702 json

bpf: Fail verification for sign-extension of packet data/data_end/data_meta

published 2024-10-21 2 y ago modified 2026-10-03 36 d ago also EUVD-2024-42622

cvss
7.8
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.2%
EPSS 0.2% chance of exploitation in 30 days, percentile 11%
public exploits
0
none known

Summary

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

bpf: Fail verification for sign-extension of packet data/data_end/data_meta

syzbot reported a kernel crash due to commit 1f1e864b6555 ("bpf: Handle sign-extenstin ctx member accesses"). The reason is due to sign-extension of 32-bit load for packet data/data_end/data_meta uapi field.

The original code looks like: r2 = *(s32 *)(r1 + 76) /* load __sk_buff->data */ r3 = *(u32 *)(r1 + 80) /* load __sk_buff->data_end */ r0 = r2 r0 += 8 if r3 > r0 goto +1 ... Note that __sk_buff->data load has 32-bit sign extension.

After verification and convert_ctx_accesses(), the final asm code looks like: r2 = *(u64 *)(r1 +208) r2 = (s32)r2 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 ... Note that 'r2 = (s32)r2' may make the kernel __sk_buff->data address invalid which may cause runtime failure.

Currently, in C code, typically we have void *data = (void *)(long)skb->data; void *data_end = (void *)(long)skb->data_end; ... and it will generate r2 = *(u64 *)(r1 +208) r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1

If we allow sign-extension, void *data = (void *)(long)(int)skb->data; void *data_end = (void *)(long)skb->data_end; ... the generated code looks like r2 = *(u64 *)(r1 +208) r2 <<= 32 r2 s>>= 32 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 and this will cause verification failure since "r2 <<= 32" is not allowed as "r2" is a packet pointer.

To fix this issue for case r2 = *(s32 *)(r1 + 76) /* load __sk_buff->data */ this patch added additional checking in is_valid_access() callback function for packet data/data_end/data_meta access. If those accesses are with sign-extenstion, the verification will fail.

[1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/

Patch / fix

  • Linux Linux 6.6.158, 6.10.13, 6.11.2, 6.12
  • linux Debian 14, Debian 13 6.11.2-1

debian advisories DEBIAN-CVE-2024-47702

  • linux Ubuntu 24.04 LTS 6.8.0-54.56
  • linux-aws Ubuntu 24.04 LTS 6.8.0-1023.25
  • linux-gcp Ubuntu 24.04 LTS 6.8.0-1024.26
  • linux-gke Ubuntu 24.04 LTS 6.8.0-1019.23
  • linux-ibm Ubuntu 24.04 LTS 6.8.0-1022.22
  • linux-azure Ubuntu 24.04 LTS 6.8.0-1025.30
  • linux-gkeop Ubuntu 24.04 LTS 6.8.0-1006.8
  • linux-raspi Ubuntu 24.04 LTS 6.8.0-1019.23

ubuntu advisories UBUNTU-CVE-2024-47702

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

  • kernel-source Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
  • kernel-default Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
  • kernel-kvmsmall Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
  • kernel-default-base Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1.21.4
  • kernel-livepatch-MICRO-6-0_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.2
  • kernel-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
  • kernel-source-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
  • kernel-livepatch-MICRO-6-0-RT_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.1

suse advisories SUSE-SU-2025:20164-1SUSE-SU-2025:20247-1SUSE-SU-2025:20163-1SUSE-SU-2025:20246-1SUSE-SU-2024:4387-1SUSE-SU-2024:4318-1

  • kernel-source-longterm openSUSE Tumbleweed 6.12.11-1.1
  • kernel-source openSUSE Tumbleweed 6.11.8-1.1

opensuse advisories openSUSE-SU-2025:14705-1openSUSE-SU-2024:14500-1

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2024-47702 updated cvss 4.4

kernel: bpf: Fail verification for sign-extension of packet data/data_end/data_meta

  • Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more
    affected: workaround, no fix planned “Out of support scope”
  • Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more
    affected: workaround, no fix available “Fix deferred”
  • Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

CISA SSVC

Exploitation
none
Automatable
no
Technical impact
partial
Assessed
2 y ago

Exploit prediction

0.21% chance of exploitation in the next 30 days, higher than 11% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CNA 3.1 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
NVD 3.1 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected products

  • Linux Linux

Classification

Technology feeds

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.