CyberSecBulletin
CVE-2024-49884NVD status: Modified

Linux: Use After Free

CVE-2024-49884 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 393a46f60ea4f249dc9d496d4eb2d542f5e11ade, 448100a29395b0c8b4c42967155849fe0fbe808f, e52f933598b781d291b9297e39c463536da0e185 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.28% 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 393a46f60ea4f249dc9d496d4eb2d542f5e11ade or 448100a29395b0c8b4c42967155849fe0fbe808f or e52f933598b781d291b9297e39c463536da0e185 or cafcc1bd62934547c76abf46c6d0d54f135006fe, whichever matches your release line, or a later version.
  2. Update SIMATIC S7-1500 CPU 1518-4 PN/DP MFP to V3.1.5 or a later version.
  3. Update SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP to V3.1.5 or a later version.

Affected products and versions

VendorProductAffected versionsFixed in
LinuxLinuxdfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, 393a46f60ea4f249dc9d496d4eb2d542f5e11ade; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, 448100a29395b0c8b4c42967155849fe0fbe808f; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, e52f933598b781d291b9297e39c463536da0e185; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, cafcc1bd62934547c76abf46c6d0d54f135006fe; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, a5401d4c3e2a3d25643c567d26e6de327774a2c9; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, 8fe117790b37c84c651e2bad9efc0e7fda73c0e3; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, 5d949ea75bb529ea6342e83465938a3b0ac51238; dfe5080939ea4686b3414b5d970a9b26733c57a4 up to, but not including, 915ac3630488af0ca194dc63b86d99802b4f6e18; and 2 more ranges393a46f60ea4f249dc9d496d4eb2d542f5e11ade, 448100a29395b0c8b4c42967155849fe0fbe808f, e52f933598b781d291b9297e39c463536da0e185, cafcc1bd62934547c76abf46c6d0d54f135006fe, a5401d4c3e2a3d25643c567d26e6de327774a2c9, 8fe117790b37c84c651e2bad9efc0e7fda73c0e3
SiemensSIMATIC S7-1500 CPU 1518-4 PN/DP MFPV3.1.0 up to, but not including, V3.1.5V3.1.5
SiemensSIMATIC S7-1500 CPU 1518F-4 PN/DP MFPV3.1.0 up to, but not including, V3.1.5V3.1.5
SiemensSIPLUS S7-1500 CPU 1518-4 PN/DP MFPV3.1.0 up to, but not including, V3.1.5V3.1.5
SiemensRUGGEDCOM RST2428Pbefore V3.2V3.2
SiemensSCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 familybefore V3.2V3.2
SiemensSCALANCE XCM-/XRM-/XCH-/XRH-300 familybefore V3.2V3.2
DebianDebian Linux11.0Not stated
LinuxLinux Kernel3.18 up to, but not including, 4.19.323; 4.20 up to, but not including, 5.4.290; 5.5 up to, but not including, 5.10.227; 5.11 up to, but not including, 5.15.168; 5.16 up to, but not including, 6.1.113; 6.2 up to, but not including, 6.6.55; 6.7 up to, but not including, 6.10.14; 6.11 up to, but not including, 6.11.34.19.323, 5.4.290, 5.10.227, 5.15.168, 6.1.113, 6.6.55

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.8HighCNA
CVSS 3.17.8HighNVD

Official description

In the Linux kernel, the following vulnerability has been resolved: ext4: fix slab-use-after-free in ext4_split_extent_at() We hit the following use-after-free: ================================================================== BUG: KASAN: slab-use-after-free in ext4_split_extent_at+0xba8/0xcc0 Read of size 2 at addr ffff88810548ed08 by task kworker/u20:0/40 CPU: 0 PID: 40 Comm: kworker/u20:0 Not tainted 6.9.0-dirty #724 Call Trace: <TASK> kasan_report+0x93/0xc0 ext4_split_extent_at+0xba8/0xcc0 ext4_split_extent.isra.0+0x18f/0x500 ext4_split_convert_extents+0x275/0x750 ext4_ext_handle_unwritten_extents+0x73e/0x1580 ext4_ext_map_blocks+0xe20/0x2dc0 ext4_map_blocks+0x724/0x1700 ext4_do_writepages+0x12d6/0x2a70 [...] Allocated by task 40: __kmalloc_noprof+0x1ac/0x480 ext4_find_extent+0xf3b/0x1e70 ext4_ext_map_blocks+0x188/0x2dc0 ext4_map_blocks+0x724/0x1700 ext4_do_writepages+0x12d6/0x2a70 [...] Freed by task 40: kfree+0xf1/0x2b0 ext4_find_extent+0xa71/0x1e70 ext4_ext_insert_extent+0xa22/0x3260 ext4_split_extent_at+0x3ef/0xcc0 ext4_split_extent.isra.0+0x18f/0x500 ext4_split_convert_extents+0x275/0x750 ext4_ext_handle_unwritten_extents+0x73e/0x1580 ext4_ext_map_blocks+0xe20/0x2dc0 ext4_map_blocks+0x724/0x1700 ext4_do_writepages+0x12d6/0x2a70 [...] ================================================================== The flow of issue triggering is as follows: ext4_split_extent_at path = *ppath ext4_ext_insert_extent(ppath) ext4_ext_create_new_leaf(ppath) ext4_find_extent(orig_path) path = *orig_path read_extent_tree_block // return -ENOMEM or -EIO ext4_free_ext_path(path) kfree(path) *orig_path = NULL a. If err is -ENOMEM: ext4_ext_dirty(path + path->p_depth) // path use-after-free !!! b. If err is -EIO and we have EXT_DEBUG defined: ext4_ext_show_leaf(path) eh = path[depth].p_hdr // path also use-after-free !!! So when trying to zeroout or fix the extent length, call ext4_find_extent() to update the path. In addition we use *ppath directly as an ext4_ext_show_leaf() input to avoid possible use-after-free when EXT_DEBUG is defined, and to avoid unnecessary path updates.

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: partial).
  3. Record last changed materially (score, affected products, status or references).

References

Third-party and government advisories

Recent Use After Free vulnerabilities

Spotted an error? Tell us.