CVE-2024-53227

scsi: bfa: Fix use-after-free in bfad_im_module_exit()

High · published December 27, 2024

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

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

scsi: bfa: Fix use-after-free in bfad_im_module_exit()

BUG: KASAN: slab-use-after-free in __lock_acquire+0x2aca/0x3a20

Read of size 8 at addr ffff8881082d80c8 by task modprobe/25303

Call Trace:

<TASK>

dump_stack_lvl+0x95/0xe0

print_report+0xcb/0x620

kasan_report+0xbd/0xf0

__lock_acquire+0x2aca/0x3a20

lock_acquire+0x19b/0x520

_raw_spin_lock+0x2b/0x40

attribute_container_unregister+0x30/0x160

fc_release_transport+0x19/0x90 [scsi_transport_fc]

bfad_im_module_exit+0x23/0x60 [bfa]

bfad_init+0xdb/0xff0 [bfa]

do_one_initcall+0xdc/0x550

do_init_module+0x22d/0x6b0

load_module+0x4e96/0x5ff0

init_module_from_file+0xcd/0x130

idempotent_init_module+0x330/0x620

__x64_sys_finit_module+0xb3/0x110

do_syscall_64+0xc1/0x1d0

entry_SYSCALL_64_after_hwframe+0x77/0x7f

</TASK>

Allocated by task 25303:

kasan_save_stack+0x24/0x50

kasan_save_track+0x14/0x30

__kasan_kmalloc+0x7f/0x90

fc_attach_transport+0x4f/0x4740 [scsi_transport_fc]

bfad_im_module_init+0x17/0x80 [bfa]

bfad_init+0x23/0xff0 [bfa]

do_one_initcall+0xdc/0x550

do_init_module+0x22d/0x6b0

load_module+0x4e96/0x5ff0

init_module_from_file+0xcd/0x130

idempotent_init_module+0x330/0x620

__x64_sys_finit_module+0xb3/0x110

do_syscall_64+0xc1/0x1d0

entry_SYSCALL_64_after_hwframe+0x77/0x7f

Freed by task 25303:

kasan_save_stack+0x24/0x50

kasan_save_track+0x14/0x30

kasan_save_free_info+0x3b/0x60

__kasan_slab_free+0x38/0x50

kfree+0x212/0x480

bfad_im_module_init+0x7e/0x80 [bfa]

bfad_init+0x23/0xff0 [bfa]

do_one_initcall+0xdc/0x550

do_init_module+0x22d/0x6b0

load_module+0x4e96/0x5ff0

init_module_from_file+0xcd/0x130

idempotent_init_module+0x330/0x620

__x64_sys_finit_module+0xb3/0x110

do_syscall_64+0xc1/0x1d0

entry_SYSCALL_64_after_hwframe+0x77/0x7f

Above issue happens as follows:

bfad_init

error = bfad_im_module_init()

fc_release_transport(bfad_im_scsi_transport_template);

if (error)

goto ext;

ext:

bfad_im_module_exit();

fc_release_transport(bfad_im_scsi_transport_template);

--> Trigger double release

Don't call bfad_im_module_exit() if bfad_im_module_init() failed.

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.00278 · 19.2th percentile
Published
2024-12-27T13:50Z
EPSS history
Timeline
  • 27 DEC 13:50Z
    scsi: bfa: Fix use-after-free in bfad_im_module_exit()
    cvelistv5