CVE-2024-49903CWE-416

CVE-2024-49903

High · published October 21, 2024

CVSS v3.1
7.0
EPSS
0%
Percentile
16.1
In the wild
Unconfirmed
What it is

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

jfs: Fix uaf in dbFreeBits

[syzbot reported]

==================================================================

BUG: KASAN: slab-use-after-free in __mutex_lock_common kernel/locking/mutex.c:587 [inline]

BUG: KASAN: slab-use-after-free in __mutex_lock+0xfe/0xd70 kernel/locking/mutex.c:752

Read of size 8 at addr ffff8880229254b0 by task syz-executor357/5216

CPU: 0 UID: 0 PID: 5216 Comm: syz-executor357 Not tainted 6.11.0-rc3-syzkaller-00156-gd7a5aa4b3c00 #0

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

Call Trace:

<TASK>

__dump_stack lib/dump_stack.c:93 [inline]

dump_stack_lvl+0x241/0x360 lib/dump_stack.c:119

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

print_report+0x169/0x550 mm/kasan/report.c:488

kasan_report+0x143/0x180 mm/kasan/report.c:601

__mutex_lock_common kernel/locking/mutex.c:587 [inline]

__mutex_lock+0xfe/0xd70 kernel/locking/mutex.c:752

dbFreeBits+0x7ea/0xd90 fs/jfs/jfs_dmap.c:2390

dbFreeDmap fs/jfs/jfs_dmap.c:2089 [inline]

dbFree+0x35b/0x680 fs/jfs/jfs_dmap.c:409

dbDiscardAG+0x8a9/0xa20 fs/jfs/jfs_dmap.c:1650

jfs_ioc_trim+0x433/0x670 fs/jfs/jfs_discard.c:100

jfs_ioctl+0x2d0/0x3e0 fs/jfs/ioctl.c:131

vfs_ioctl fs/ioctl.c:51 [inline]

__do_sys_ioctl fs/ioctl.c:907 [inline]

__se_sys_ioctl+0xfc/0x170 fs/ioctl.c:893

do_syscall_x64 arch/x86/entry/common.c:52 [inline]

do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83

Freed by task 5218:

kasan_save_stack mm/kasan/common.c:47 [inline]

kasan_save_track+0x3f/0x80 mm/kasan/common.c:68

kasan_save_free_info+0x40/0x50 mm/kasan/generic.c:579

poison_slab_object+0xe0/0x150 mm/kasan/common.c:240

__kasan_slab_free+0x37/0x60 mm/kasan/common.c:256

kasan_slab_free include/linux/kasan.h:184 [inline]

slab_free_hook mm/slub.c:2252 [inline]

slab_free mm/slub.c:4473 [inline]

kfree+0x149/0x360 mm/slub.c:4594

dbUnmount+0x11d/0x190 fs/jfs/jfs_dmap.c:278

jfs_mount_rw+0x4ac/0x6a0 fs/jfs/jfs_mount.c:247

jfs_remount+0x3d1/0x6b0 fs/jfs/super.c:454

reconfigure_super+0x445/0x880 fs/super.c:1083

vfs_cmd_reconfigure fs/fsopen.c:263 [inline]

vfs_fsconfig_locked fs/fsopen.c:292 [inline]

__do_sys_fsconfig fs/fsopen.c:473 [inline]

__se_sys_fsconfig+0xb6e/0xf80 fs/fsopen.c:345

do_syscall_x64 arch/x86/entry/common.c:52 [inline]

do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83

entry_SYSCALL_64_after_hwframe+0x77/0x7f

[Analysis]

There are two paths (dbUnmount and jfs_ioc_trim) that generate race

condition when accessing bmap, which leads to the occurrence of uaf.

Use the lock s_umount to synchronize them, in order to avoid uaf caused

by race condition.

The record
Technical detail
CVSS v3.1
7.0 · HIGH
Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00255 · 16.1th percentile
Weakness
CWE-416 · Use After Free
Published
2024-10-21T22:15Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel< 5.10.2275.10.227
linux/linux_kernel≥ 5.11, < 5.15.1685.15.168
linux/linux_kernel≥ 5.16, < 6.1.1136.1.113
linux/linux_kernel≥ 6.2, < 6.6.556.6.55
linux/linux_kernel≥ 6.7, < 6.10.146.10.14
linux/linux_kernel≥ 6.11, < 6.11.36.11.3
References (13)
EPSS history
Timeline
  • 21 OCT 18:01Z
    jfs: Fix uaf in dbFreeBits
    cvelistv5