{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-49983","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-10-21T12:17:06.053Z","datePublished":"2024-10-21T18:02:28.474Z","dateUpdated":"2026-08-05T11:40:52.589Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:40:52.589Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\next4: drop ppath from ext4_ext_replay_update_ex() to avoid double-free\n\nWhen calling ext4_force_split_extent_at() in ext4_ext_replay_update_ex(),\nthe 'ppath' is updated but it is the 'path' that is freed, thus potentially\ntriggering a double-free in the following process:\n\next4_ext_replay_update_ex\n  ppath = path\n  ext4_force_split_extent_at(&ppath)\n    ext4_split_extent_at\n      ext4_ext_insert_extent\n        ext4_ext_create_new_leaf\n          ext4_ext_grow_indepth\n            ext4_find_extent\n              if (depth > path[0].p_maxdepth)\n                kfree(path)                 ---> path First freed\n                *orig_path = path = NULL    ---> null ppath\n  kfree(path)                               ---> path double-free !!!\n\nSo drop the unnecessary ppath and use path directly to avoid this problem.\nAnd use ext4_find_extent() directly to update path, avoiding unnecessary\nmemory allocation and freeing. Also, propagate the error returned by\next4_find_extent() instead of using strange error codes."}],"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 only entry point is `mount(2)` on a locally-attached block device holding an ext4 image whose journal carries an unreplayed fast-commit area; `ext4_ext_replay_update_ex()` has no callers outside `ext4_fc_replay_add_range()`, so there is no network- or adjacent-reachable path.\nAC:L - The attacker authors the entire image, so the extent-tree depth, the ADD_RANGE records and the corrupted extent block that makes the inner `ext4_find_extent()` fail are all chosen deterministically — no race and no memory-layout dependency outside attacker control, and standard slab grooming decides what reclaims the freed `kmalloc-N` object.\nPR:L - ext4 lacks `FS_USERNS_MOUNT` so `mount(2)` itself wants CAP_SYS_ADMIN, but an ordinary local user reaches the identical replay path by attaching removable media that udisks2/autofs mounts automatically, or via a `user` fstab entry — the standard crafted-ext4-image threat model on kiosks, workstations and embedded devices.\nUI:N - The attacker performs the mount themselves, either directly or by inserting media whose automount is unattended, so no action by a separate victim user is needed.\nS:U - The freed object, the stale dereferences and the corrupted slab freelist all live in the kernel's own memory and security authority; no hypervisor, IOMMU or sandbox boundary is crossed.\nC:H - `ext4_free_ext_path()` on the dangling pointer reads `p_depth` and every `p_bh` field back out of the already-freed, potentially reclaimed slab object, so attacker-groomed content is dereferenced as `struct buffer_head *` — a use-after-free read that yields arbitrary kernel-memory disclosure and kernel address leaks.\nI:H - The double `kfree()` corrupts the SLUB freelist, allowing the same chunk to be handed out twice and later overwritten, and the intervening `brelse()`/`put_bh()` decrements a refcount at an attacker-influenced address — together a controlled write primitive leveragable for control-flow hijack and privilege escalation.\nA:H - Even unexploited, a double-free plus dereference of freed `struct ext4_ext_path` entries reliably trips slab corruption detection or oopses in `brelse()` during mount, panicking the machine, and the mount can be repeated at will."}]}],"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":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"8c26d9e53e5fbacda0732a577e97c5a5b7882aaf","status":"affected","versionType":"git"},{"version":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"a34bed978364114390162c27e50fca50791c568d","status":"affected","versionType":"git"},{"version":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"6367d3f04c69e2b8770b8137bd800e0784b0abbc","status":"affected","versionType":"git"},{"version":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"1b558006d98b7b0b730027be0ee98973dd10ee0d","status":"affected","versionType":"git"},{"version":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"3ff710662e8d86a63a39b334e9ca0cb10e5c14b0","status":"affected","versionType":"git"},{"version":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"63adc9016917e6970fb0104ee5fd6770f02b2d80","status":"affected","versionType":"git"},{"version":"8016e29f4362e285f0f7e38fadc61a5b7bdfdfa2","lessThan":"5c0f4cc84d3a601c99bc5e6e6eb1cbda542cce95","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":"5.10","status":"affected"},{"version":"0","lessThan":"5.10","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":"5.10","versionEndExcluding":"5.10.227"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.15.168"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.1.113"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.6.55"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.10.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.11.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.12"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/8c26d9e53e5fbacda0732a577e97c5a5b7882aaf"},{"url":"https://git.kernel.org/stable/c/a34bed978364114390162c27e50fca50791c568d"},{"url":"https://git.kernel.org/stable/c/6367d3f04c69e2b8770b8137bd800e0784b0abbc"},{"url":"https://git.kernel.org/stable/c/1b558006d98b7b0b730027be0ee98973dd10ee0d"},{"url":"https://git.kernel.org/stable/c/3ff710662e8d86a63a39b334e9ca0cb10e5c14b0"},{"url":"https://git.kernel.org/stable/c/63adc9016917e6970fb0104ee5fd6770f02b2d80"},{"url":"https://git.kernel.org/stable/c/5c0f4cc84d3a601c99bc5e6e6eb1cbda542cce95"}],"title":"ext4: drop ppath from ext4_ext_replay_update_ex() to avoid double-free","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-49983","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-10-22T13:32:15.569255Z"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-10-22T13:38:44.023Z"}},{"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:24:05.400Z"}}]}}