{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2024-49889", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-10-21T12:17:06.022Z", "datePublished": "2024-10-21T18:01:24.941Z", "dateUpdated": "2026-08-05T11:40:24.654Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:40:24.654Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\next4: avoid use-after-free in ext4_ext_show_leaf()\n\nIn ext4_find_extent(), path may be freed by error or be reallocated, so\nusing a previously saved *ppath may have been freed and thus may trigger\nuse-after-free, as follows:\n\next4_split_extent\n path = *ppath;\n ext4_split_extent_at(ppath)\n path = ext4_find_extent(ppath)\n ext4_split_extent_at(ppath)\n // ext4_find_extent fails to free path\n // but zeroout succeeds\n ext4_ext_show_leaf(inode, path)\n eh = path[depth].p_hdr\n // path use-after-free !!!\n\nSimilar to ext4_split_extent_at(), we use *ppath directly as an input to\next4_ext_show_leaf(). Fix a spelling error by the way.\n\nSame problem in ext4_ext_handle_unwritten_extents(). Since 'path' is only\nused in ext4_ext_show_leaf(), remove 'path' and use *ppath directly.\n\nThis issue is triggered only when EXT_DEBUG is defined and therefore does\nnot affect functionality." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The vulnerable code is reached through ordinary local filesystem syscalls (write/pwrite, fallocate, direct I/O) that drive ext4_ext_map_blocks() over unwritten extents. No network protocol handler is involved; ext4 is a local filesystem subsystem.\nAC:L - The attacker fully controls the trigger — creating unwritten extents with fallocate() and issuing partial writes drives ext4_split_extent() through the reallocating path deterministically, and the fallthrough to ext4_ext_show_leaf() on the successful zeroout path requires no race or memory layout the attacker cannot influence.\nPR:L - Any unprivileged local user with write access to an ext4 filesystem — /tmp, /home, or any user-writable mount — can reach ext4_ext_map_blocks() via fallocate() and write(). No capability check, no CAP_SYS_ADMIN, and no user-namespace trick is needed along the path.\nUI:N - The attacker triggers the code path entirely through their own syscalls on their own files. No victim action such as mounting a crafted filesystem or opening a supplied file is required.\nS:U - The use-after-free is confined to the kernel's own slab memory and the ext4 extent path array, with all impact contained in the kernel security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - The stale path array is a freed slab object the attacker can reclaim and populate via heap spraying, giving control over path[depth].p_hdr and thus an attacker-directed kernel read whose contents — extent blocks, physical block numbers, and adjacent kernel data — are emitted to the debug log.\nI:H - Per use-after-free scoring guidance, control over the contents of a reclaimed freed object combined with an attacker-supplied eh_entries count driving an unbounded extent walk is treated as exploitable for memory corruption and control-flow influence rather than a bounded read.\nA:H - Dereferencing the freed path array yields a garbage extent header whose eh_entries can walk far past any valid mapping, producing an oops or panic in the ext4 write path. Any use-after-free reliably crashes the kernel even when not fully weaponized." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/ext4/extents.c" ], "versions": [ { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "b0cb4561fc4284d04e69c8a66c8504928ab2484e", "status": "affected", "versionType": "git" }, { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "4999fed877bb64e3e7f9ab9996de2ca983c41928", "status": "affected", "versionType": "git" }, { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "2eba3b0cc5b8de624918d21f32b5b8db59a90b39", "status": "affected", "versionType": "git" }, { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "34b2096380ba475771971a778a478661a791aa15", "status": "affected", "versionType": "git" }, { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "8b114f2cc7dd5d36729d040b68432fbd0f0a8868", "status": "affected", "versionType": "git" }, { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "d483c7cc1796bd6a80e7b3a8fd494996260f6b67", "status": "affected", "versionType": "git" }, { "version": "dfe5080939ea4686b3414b5d970a9b26733c57a4", "lessThan": "4e2524ba2ca5f54bdbb9e5153bea00421ef653f5", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/ext4/extents.c" ], "versions": [ { "version": "3.18", "status": "affected" }, { "version": "0", "lessThan": "3.18", "status": "unaffected", "versionType": "semver" }, { "version": "5.10.227", "lessThanOrEqual": "5.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.15.168", "lessThanOrEqual": "5.15.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.113", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.55", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.10.14", "lessThanOrEqual": "6.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.11.3", "lessThanOrEqual": "6.11.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "5.10.227" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "5.15.168" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "6.1.113" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "6.6.55" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "6.10.14" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "6.11.3" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18", "versionEndExcluding": "6.12" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/b0cb4561fc4284d04e69c8a66c8504928ab2484e" }, { "url": "https://git.kernel.org/stable/c/4999fed877bb64e3e7f9ab9996de2ca983c41928" }, { "url": "https://git.kernel.org/stable/c/2eba3b0cc5b8de624918d21f32b5b8db59a90b39" }, { "url": "https://git.kernel.org/stable/c/34b2096380ba475771971a778a478661a791aa15" }, { "url": "https://git.kernel.org/stable/c/8b114f2cc7dd5d36729d040b68432fbd0f0a8868" }, { "url": "https://git.kernel.org/stable/c/d483c7cc1796bd6a80e7b3a8fd494996260f6b67" }, { "url": "https://git.kernel.org/stable/c/4e2524ba2ca5f54bdbb9e5153bea00421ef653f5" } ], "title": "ext4: avoid use-after-free in ext4_ext_show_leaf()", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2024-49889", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "version": "2.0.3", "timestamp": "2024-10-22T13:44:36.395156Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2024-10-22T13:48:49.316Z" } }, { "title": "CVE Program Container", "references": [ { "url": "https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html" }, { "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T22:22:53.988Z" } }, { "x_adpType": "supplier", "providerMetadata": { "orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e", "shortName": "siemens-SADP", "dateUpdated": "2026-05-12T11:58:53.518Z" }, "affected": [ { "vendor": "Siemens", "product": "RUGGEDCOM RST2428P", "versions": [ { "status": "affected", "version": "0", "lessThan": "V3.2", "versionType": "custom" } ], "defaultStatus": "unknown" }, { "vendor": "Siemens", "product": "SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family", "versions": [ { "status": "affected", "version": "0", "lessThan": "V3.2", "versionType": "custom" } ], "defaultStatus": "unknown" }, { "vendor": "Siemens", "product": "SCALANCE XCM-/XRM-/XCH-/XRH-300 family", "versions": [ { "status": "affected", "version": "0", "lessThan": "V3.2", "versionType": "custom" } ], "defaultStatus": "unknown" }, { "vendor": "Siemens", "product": "SIMATIC S7-1500 TM MFP - GNU/Linux subsystem", "versions": [ { "status": "affected", "version": "0", "lessThan": "*", "versionType": "custom" } ], "defaultStatus": "unknown" } ], "references": [ { "url": "https://cert-portal.siemens.com/productcert/html/ssa-265688.html" }, { "url": "https://cert-portal.siemens.com/productcert/html/ssa-355557.html" } ] } ] } }