CyberSecBulletin
CVE-2024-53227NVD status: Modified

Linux: Use After Free

CVE-2024-53227 is a high-severity use after free vulnerability in Linux, with a CVSS 3.1 base score of 7.8 out of 10. It can be exploited with local access to the system by an attacker with a low-privileged account, without any action from a user. The record lists versions 0ceac8012d3ddea3317f0d82934293d05feb8af1, 3932c753f805a02e9364a4c58b590f21901f8490, ef2c2580189ea88a0dcaf56eb3a565763a900edb as the first without the flaw, so updating Linux to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.27% chance of exploitation within 30 days, which is low compared with other CVEs.

Next patch cycle

High severity with no evidence of exploitation so far.

What to do

  1. Update Linux to 0ceac8012d3ddea3317f0d82934293d05feb8af1 or 3932c753f805a02e9364a4c58b590f21901f8490 or ef2c2580189ea88a0dcaf56eb3a565763a900edb or e76181a5be90abcc3ed8a300bd13878aa214d022, whichever matches your release line, or a later version.
  2. Update Linux Kernel to 4.19.325 or 5.4.287 or 5.10.231 or 5.15.174, whichever matches your release line, or a later version.

Affected products and versions

VendorProductAffected versionsFixed in
LinuxLinux7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, 0ceac8012d3ddea3317f0d82934293d05feb8af1; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, 3932c753f805a02e9364a4c58b590f21901f8490; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, ef2c2580189ea88a0dcaf56eb3a565763a900edb; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, e76181a5be90abcc3ed8a300bd13878aa214d022; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, 8f5a97443b547b4c83f876f1d6a11df0f1fd4efb; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, c28409f851abd93b37969cac7498828ad533afd9; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, 1ffdde30a90bf8efe8f270407f486706962b3292; 7725ccfda59715ecf8f99e3b520a0b84cc2ea79e up to, but not including, a2b5035ab0e368e8d8a371e27fbc72f133c0bd40; and 2 more ranges0ceac8012d3ddea3317f0d82934293d05feb8af1, 3932c753f805a02e9364a4c58b590f21901f8490, ef2c2580189ea88a0dcaf56eb3a565763a900edb, e76181a5be90abcc3ed8a300bd13878aa214d022, 8f5a97443b547b4c83f876f1d6a11df0f1fd4efb, c28409f851abd93b37969cac7498828ad533afd9
LinuxLinux Kernel2.6.32 up to, but not including, 4.19.325; 4.20 up to, but not including, 5.4.287; 5.5 up to, but not including, 5.10.231; 5.11 up to, but not including, 5.15.174; 5.16 up to, but not including, 6.1.120; 6.2 up to, but not including, 6.6.64; 6.7 up to, but not including, 6.11.11; 6.12 up to, but not including, 6.12.24.19.325, 5.4.287, 5.10.231, 5.15.174, 6.1.120, 6.6.64

Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.

How the severity score breaks down

Attack vector
LocalThe attacker needs local access or must trick a user into running something.
Attack complexity
LowNo special conditions are needed; the attack works reliably.
Privileges required
LowA basic user account is enough.
User interaction
NoneNo action by a victim is required.
Scope
UnchangedImpact stays within the vulnerable component.
Confidentiality
HighAll data handled by the component can be read.
Integrity
HighData or code can be modified at will.
Availability
HighThe component can be taken down completely.

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Scored by NVD.

Scoring systemScoreSeverityScored by
CVSS 3.17.8HighNVD
CVSS 3.17.8HighCISA (ADP)

Official description

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.

Source: the CVE record as published by its numbering authority, via NVD and CVE.org.

The underlying weakness: Use After Free

The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory belongs to the code that operates on the new pointer.

How developers prevent this class of flaw

  • Choose a language that provides automatic memory management.
  • When freeing pointers, be sure to set them to NULL once they are freed. However, the utilization of multiple or complex data structures may lower the usefulness of this strategy.

More Use After Free vulnerabilities (CWE-416)

Timeline

  1. CVE record published.
  2. CISA published its SSVC assessment (exploitation: none, automatable: no, technical impact: total).
  3. Record last changed materially (score, affected products, status or references).

References

Recent Use After Free vulnerabilities

Spotted an error? Tell us.