CVE-2024-44934CWE-416

CVE-2024-44934

High · published August 26, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
11.7
In the wild
Unconfirmed
What it is

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

net: bridge: mcast: wait for previous gc cycles when removing port

syzbot hit a use-after-free[1] which is caused because the bridge doesn't

make sure that all previous garbage has been collected when removing a

port. What happens is:

CPU 1 CPU 2

start gc cycle remove port

acquire gc lock first

wait for lock

call br_multicasg_gc() directly

acquire lock now but free port

the port can be freed

while grp timers still

running

Make sure all previous gc cycles have finished by using flush_work before

freeing the port.

[1]

BUG: KASAN: slab-use-after-free in br_multicast_port_group_expired+0x4c0/0x550 net/bridge/br_multicast.c:861

Read of size 8 at addr ffff888071d6d000 by task syz.5.1232/9699

CPU: 1 PID: 9699 Comm: syz.5.1232 Not tainted 6.10.0-rc5-syzkaller-00021-g24ca36a562d6 #0

Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024

Call Trace:

<IRQ>

__dump_stack lib/dump_stack.c:88 [inline]

dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:114

print_address_description mm/kasan/report.c:377 [inline]

print_report+0xc3/0x620 mm/kasan/report.c:488

kasan_report+0xd9/0x110 mm/kasan/report.c:601

br_multicast_port_group_expired+0x4c0/0x550 net/bridge/br_multicast.c:861

call_timer_fn+0x1a3/0x610 kernel/time/timer.c:1792

expire_timers kernel/time/timer.c:1843 [inline]

__run_timers+0x74b/0xaf0 kernel/time/timer.c:2417

__run_timer_base kernel/time/timer.c:2428 [inline]

__run_timer_base kernel/time/timer.c:2421 [inline]

run_timer_base+0x111/0x190 kernel/time/timer.c:2437

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00219 · 11.7th percentile
Weakness
CWE-416 · Use After Free
Published
2024-08-26T15:15Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel≥ 5.10, < 5.15.1655.15.165
linux/linux_kernel≥ 5.16, < 6.1.1056.1.105
linux/linux_kernel≥ 6.2, < 6.6.466.6.46
linux/linux_kernel≥ 6.7, < 6.10.56.10.5
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (6)
EPSS history
Timeline
  • 26 AUG 10:11Z
    net: bridge: mcast: wait for previous gc cycles when removing port
    cvelistv5