Bug 2300501 (CVE-2024-42063) - CVE-2024-42063 kernel: bpf: Mark bpf prog stack with kmsan_unposion_memory in interpreter mode
Summary: CVE-2024-42063 kernel: bpf: Mark bpf prog stack with kmsan_unposion_memory in...
Keywords:
Status: NEW
Alias: CVE-2024-42063
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
low
low
Target Milestone: ---
Assignee: Product Security DevOps Team
QA Contact:
URL:
Whiteboard:
Depends On: 2301691
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-07-29 16:25 UTC by OSIDB Bzimport
Modified: 2024-08-19 03:41 UTC (History)
4 users (show)

Fixed In Version: kernel 6.1.97, kernel 6.6.37, kernel 6.9.8, kernel 6.10
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2024-07-29 16:25:14 UTC
In the Linux kernel, the following vulnerability has been resolved:

bpf: Mark bpf prog stack with kmsan_unposion_memory in interpreter mode

syzbot reported uninit memory usages during map_{lookup,delete}_elem.

==========
BUG: KMSAN: uninit-value in __dev_map_lookup_elem kernel/bpf/devmap.c:441 [inline]
BUG: KMSAN: uninit-value in dev_map_lookup_elem+0xf3/0x170 kernel/bpf/devmap.c:796
__dev_map_lookup_elem kernel/bpf/devmap.c:441 [inline]
dev_map_lookup_elem+0xf3/0x170 kernel/bpf/devmap.c:796
____bpf_map_lookup_elem kernel/bpf/helpers.c:42 [inline]
bpf_map_lookup_elem+0x5c/0x80 kernel/bpf/helpers.c:38
___bpf_prog_run+0x13fe/0xe0f0 kernel/bpf/core.c:1997
__bpf_prog_run256+0xb5/0xe0 kernel/bpf/core.c:2237
==========

The reproducer should be in the interpreter mode.

The C reproducer is trying to run the following bpf prog:

    0: (18) r0 = 0x0
    2: (18) r1 = map[id:49]
    4: (b7) r8 = 16777216
    5: (7b) *(u64 *)(r10 -8) = r8
    6: (bf) r2 = r10
    7: (07) r2 += -229
            ^^^^^^^^^^

    8: (b7) r3 = 8
    9: (b7) r4 = 0
   10: (85) call dev_map_lookup_elem#1543472
   11: (95) exit

It is due to the "void *key" (r2) passed to the helper. bpf allows uninit
stack memory access for bpf prog with the right privileges. This patch
uses kmsan_unpoison_memory() to mark the stack as initialized.

This should address different syzbot reports on the uninit "void *key"
argument during map_{lookup,delete}_elem.

Comment 1 Mauro Matteo Cascella 2024-07-30 16:02:53 UTC
Upstream advisory:
https://lore.kernel.org/linux-cve-announce/2024072950-CVE-2024-42063-d3a5@gregkh/T

Comment 2 Mauro Matteo Cascella 2024-07-30 16:03:15 UTC
Created kernel tracking bugs for this issue:

Affects: fedora-all [bug 2301691]


Note You need to log in before you can comment on or make changes to this bug.