{"id":"CVE-2024-49960","state":"PUBLISHED","title":"ext4: fix timer use-after-free on failed mount","description":"In the Linux kernel, the following vulnerability has been resolved:\n\next4: fix timer use-after-free on failed mount\n\nSyzbot has found an ODEBUG bug in ext4_fill_super\n\nThe del_timer_sync function cancels the s_err_report timer,\nwhich reminds about filesystem errors daily. We should\nguarantee the timer is no longer active before kfree(sbi).\n\nWhen filesystem mounting fails, the flow goes to failed_mount3,\nwhere an error occurs when ext4_stop_mmpd is called, causing\na read I/O failure. This triggers the ext4_handle_error function\nthat ultimately re-arms the timer,\nleaving the s_err_report timer active before kfree(sbi) is called.\n\nFix the issue by canceling the s_err_report timer after calling ext4_stop_mmpd.","publishedAt":"2024-10-21T18:02:13.119Z","updatedAt":"2026-08-05T11:40:42.935Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5e4f5138bd8522ebe231a137682d3857209a2c07","status":"affected","lessThan":"7aac0c17a8cdf4a3236991c1e60435c6a984076c","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"22e9b83f0f33bc5a7a3181769d1dccbf021f5b04","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"cf3196e5e2f36cd80dab91ffae402e13935724bc","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"9203817ba46ebba7c865c8de2aba399537b6e891","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"fa78fb51d396f4f2f80f8e96a3b1516f394258be","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"b85569585d0154d4db1e4f9e3e6a4731d407feb0","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"0ce160c5bdb67081a62293028dc85758a8efb22a","versionType":"git"},{"version":"cecfdb9cf9a700d1037066173abac0617f6788df","status":"affected","versionType":"git"},{"version":"eb7b40d9d3785f7a131fb0b1f89bb6efa46c1833","status":"affected","versionType":"git"},{"version":"5.10.51","status":"affected","lessThan":"5.10.237","versionType":"semver"},{"version":"5.12.18","status":"affected","lessThan":"5.13","versionType":"semver"},{"version":"5.13.3","status":"affected","lessThan":"5.14","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ext4/super.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.14","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.14","versionType":"semver"},{"version":"5.10.237","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.181","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.118","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.55","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.10.14","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11.3","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ext4/super.c"]}],"references":["https://git.kernel.org/stable/c/7aac0c17a8cdf4a3236991c1e60435c6a984076c","https://git.kernel.org/stable/c/22e9b83f0f33bc5a7a3181769d1dccbf021f5b04","https://git.kernel.org/stable/c/cf3196e5e2f36cd80dab91ffae402e13935724bc","https://git.kernel.org/stable/c/9203817ba46ebba7c865c8de2aba399537b6e891","https://git.kernel.org/stable/c/fa78fb51d396f4f2f80f8e96a3b1516f394258be","https://git.kernel.org/stable/c/b85569585d0154d4db1e4f9e3e6a4731d407feb0","https://git.kernel.org/stable/c/0ce160c5bdb67081a62293028dc85758a8efb22a","https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html","https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:56.516Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/49xxx/CVE-2024-49960.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-49960","state":"PUBLISHED","datePublished":"2024-10-21T18:02:13.119Z","dateUpdated":"2026-08-05T11:40:42.935Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-10-21T12:17:06.049Z"},"containers":{"cna":{"title":"ext4: fix timer use-after-free on failed mount","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\next4: fix timer use-after-free on failed mount\n\nSyzbot has found an ODEBUG bug in ext4_fill_super\n\nThe del_timer_sync function cancels the s_err_report timer,\nwhich reminds about filesystem errors daily. We should\nguarantee the timer is no longer active before kfree(sbi).\n\nWhen filesystem mounting fails, the flow goes to failed_mount3,\nwhere an error occurs when ext4_stop_mmpd is called, causing\na read I/O failure. This triggers the ext4_handle_error function\nthat ultimately re-arms the timer,\nleaving the s_err_report timer active before kfree(sbi) is called.\n\nFix the issue by canceling the s_err_report timer after calling ext4_stop_mmpd."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5e4f5138bd8522ebe231a137682d3857209a2c07","status":"affected","lessThan":"7aac0c17a8cdf4a3236991c1e60435c6a984076c","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"22e9b83f0f33bc5a7a3181769d1dccbf021f5b04","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"cf3196e5e2f36cd80dab91ffae402e13935724bc","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"9203817ba46ebba7c865c8de2aba399537b6e891","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"fa78fb51d396f4f2f80f8e96a3b1516f394258be","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"b85569585d0154d4db1e4f9e3e6a4731d407feb0","versionType":"git"},{"version":"618f003199c6188e01472b03cdbba227f1dc5f24","status":"affected","lessThan":"0ce160c5bdb67081a62293028dc85758a8efb22a","versionType":"git"},{"version":"cecfdb9cf9a700d1037066173abac0617f6788df","status":"affected","versionType":"git"},{"version":"eb7b40d9d3785f7a131fb0b1f89bb6efa46c1833","status":"affected","versionType":"git"},{"version":"5.10.51","status":"affected","lessThan":"5.10.237","versionType":"semver"},{"version":"5.12.18","status":"affected","lessThan":"5.13","versionType":"semver"},{"version":"5.13.3","status":"affected","lessThan":"5.14","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ext4/super.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.14","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.14","versionType":"semver"},{"version":"5.10.237","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.181","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.118","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.55","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.10.14","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11.3","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ext4/super.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/7aac0c17a8cdf4a3236991c1e60435c6a984076c"},{"url":"https://git.kernel.org/stable/c/22e9b83f0f33bc5a7a3181769d1dccbf021f5b04"},{"url":"https://git.kernel.org/stable/c/cf3196e5e2f36cd80dab91ffae402e13935724bc"},{"url":"https://git.kernel.org/stable/c/9203817ba46ebba7c865c8de2aba399537b6e891"},{"url":"https://git.kernel.org/stable/c/fa78fb51d396f4f2f80f8e96a3b1516f394258be"},{"url":"https://git.kernel.org/stable/c/b85569585d0154d4db1e4f9e3e6a4731d407feb0"},{"url":"https://git.kernel.org/stable/c/0ce160c5bdb67081a62293028dc85758a8efb22a"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The bug is triggered by mounting a crafted ext4 image via the mount(2)/fsconfig(2) syscall path, which requires local system access to the block device or image file. There is no remote or network-facing entry point into `ext4_fill_super()`.\nAC:L - The attacker fully controls the crafted image: enabling the MMP feature starts kmmpd, and planting a later-stage mount failure plus an unreadable/corrupt MMP block deterministically drives `ext4_stop_mmpd()` → `ext4_error_err()` → `mod_timer()` after the timer was already cancelled. syzbot reproduced it reliably; no race or uncontrolled memory-layout condition is involved.\nPR:N - The attacker supplies only a malicious filesystem image or removable device and needs no account on the target; the privileged mount is performed by the victim or by an automounter (udisks2/autofs) acting on their behalf.\nUI:R - Because ext4 is not FS_USERNS_MOUNT, someone with CAP_SYS_ADMIN (or a desktop automount daemon reacting to inserted media) must actually mount the attacker-supplied image for the failed-mount cleanup path to run.\nS:U - The freed `ext4_sb_info` and the stale timer both live in the kernel's own security authority; exploitation yields kernel-level compromise but does not cross a hypervisor, IOMMU, or sandbox boundary.\nC:H - The armed `s_err_report` timer_list points into freed slab memory, so reallocating that object gives the attacker a use-after-free with control over the freed contents, which is leverageable into arbitrary kernel memory disclosure.\nI:H - The stale timer wheel entry is both an hlist_node and a `->function` pointer read out of attacker-reallocatable memory, giving list-corruption write and control-flow-hijack primitives executed from softirq context.\nA:H - The use-after-free reliably produces an ODEBUG/KASAN splat and, in production kernels, timer-wheel corruption leading to an oops or panic when the freed object is reused or the timer expires."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:40:42.935Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.51","versionEndExcluding":"5.10.237"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.14","versionEndExcluding":"5.15.181"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.14","versionEndExcluding":"6.1.118"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.14","versionEndExcluding":"6.6.55"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.14","versionEndExcluding":"6.10.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.14","versionEndExcluding":"6.11.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.14","versionEndExcluding":"6.12"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-49960","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-10-22T13:35:13.994206Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-10-22T13:38:47.803Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html"},{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T22:23:41.082Z"}}]}}}