{"id":"CVE-2026-72225","state":"PUBLISHED","title":"jbd2: fix integer underflow in jbd2_journal_initialize_fast_commit()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\njbd2: fix integer underflow in jbd2_journal_initialize_fast_commit()\n\njbd2_journal_initialize_fast_commit() validates journal capacity by\nchecking (journal->j_last - num_fc_blks < JBD2_MIN_JOURNAL_BLOCKS).\nBoth j_last and num_fc_blks are unsigned, so when num_fc_blks exceeds\nj_last the subtraction wraps to a large value, bypassing the bounds\ncheck.\n\nThe resulting underflow corrupts j_last, j_fc_first, and j_free,\nleading to journal abort.\n\nFix by checking num_fc_blks against j_last before the subtraction,\nreturning -EFSCORRUPTED.","publishedAt":"2026-08-15T05:54:17.541Z","updatedAt":"2026-10-16T18:45:02.597Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"aa90f00932bf572d6ef284c977c2a60b39c13bd6","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"e144ad0250f77e23e28949587b8b57e40dc3b512","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"4b48dcb88bb9117e3d3f051175a9a8b7cff7f8b6","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"fb9b49618ed7296ebfad62a3835da8945f727001","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"4450dcaadf7d4aae8b6e4223b5d6ee4eb77097a9","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"78955fdce8ff654e6d33a2fa90882a1e7eb26330","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"a58fc10adf503969fec2007b5afe8987258046c4","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"289a2ca0c9b7eae74f93fc213b0b971669b8683d","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/jbd2/journal.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.10","versionType":"semver"},{"version":"5.10.266","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/jbd2/journal.c"]}],"references":["https://git.kernel.org/stable/c/aa90f00932bf572d6ef284c977c2a60b39c13bd6","https://git.kernel.org/stable/c/e144ad0250f77e23e28949587b8b57e40dc3b512","https://git.kernel.org/stable/c/4b48dcb88bb9117e3d3f051175a9a8b7cff7f8b6","https://git.kernel.org/stable/c/fb9b49618ed7296ebfad62a3835da8945f727001","https://git.kernel.org/stable/c/4450dcaadf7d4aae8b6e4223b5d6ee4eb77097a9","https://git.kernel.org/stable/c/78955fdce8ff654e6d33a2fa90882a1e7eb26330","https://git.kernel.org/stable/c/a58fc10adf503969fec2007b5afe8987258046c4","https://git.kernel.org/stable/c/289a2ca0c9b7eae74f93fc213b0b971669b8683d"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:58.252Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/72xxx/CVE-2026-72225.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-72225","state":"PUBLISHED","datePublished":"2026-08-15T05:54:17.541Z","dateUpdated":"2026-10-16T18:45:02.597Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-09T03:40:39.913Z"},"containers":{"cna":{"title":"jbd2: fix integer underflow in jbd2_journal_initialize_fast_commit()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\njbd2: fix integer underflow in jbd2_journal_initialize_fast_commit()\n\njbd2_journal_initialize_fast_commit() validates journal capacity by\nchecking (journal->j_last - num_fc_blks < JBD2_MIN_JOURNAL_BLOCKS).\nBoth j_last and num_fc_blks are unsigned, so when num_fc_blks exceeds\nj_last the subtraction wraps to a large value, bypassing the bounds\ncheck.\n\nThe resulting underflow corrupts j_last, j_fc_first, and j_free,\nleading to journal abort.\n\nFix by checking num_fc_blks against j_last before the subtraction,\nreturning -EFSCORRUPTED."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"aa90f00932bf572d6ef284c977c2a60b39c13bd6","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"e144ad0250f77e23e28949587b8b57e40dc3b512","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"4b48dcb88bb9117e3d3f051175a9a8b7cff7f8b6","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"fb9b49618ed7296ebfad62a3835da8945f727001","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"4450dcaadf7d4aae8b6e4223b5d6ee4eb77097a9","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"78955fdce8ff654e6d33a2fa90882a1e7eb26330","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"a58fc10adf503969fec2007b5afe8987258046c4","versionType":"git"},{"version":"6866d7b3f2bb4f011041ba54c98b1584497fe2fd","status":"affected","lessThan":"289a2ca0c9b7eae74f93fc213b0b971669b8683d","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/jbd2/journal.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.10","versionType":"semver"},{"version":"5.10.266","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/jbd2/journal.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/aa90f00932bf572d6ef284c977c2a60b39c13bd6"},{"url":"https://git.kernel.org/stable/c/e144ad0250f77e23e28949587b8b57e40dc3b512"},{"url":"https://git.kernel.org/stable/c/4b48dcb88bb9117e3d3f051175a9a8b7cff7f8b6"},{"url":"https://git.kernel.org/stable/c/fb9b49618ed7296ebfad62a3835da8945f727001"},{"url":"https://git.kernel.org/stable/c/4450dcaadf7d4aae8b6e4223b5d6ee4eb77097a9"},{"url":"https://git.kernel.org/stable/c/78955fdce8ff654e6d33a2fa90882a1e7eb26330"},{"url":"https://git.kernel.org/stable/c/a58fc10adf503969fec2007b5afe8987258046c4"},{"url":"https://git.kernel.org/stable/c/289a2ca0c9b7eae74f93fc213b0b971669b8683d"}],"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 only via the ext4 mount path (mount/fsopen syscall) when enabling JBD2 fast commit in jbd2_journal_set_features(); it is not reachable through network-facing kernel services.\nAC:L - An attacker who can mount a crafted ext4 image fully controls journal superblock fields (s_num_fc_blks vs s_maxlen) and can reliably trigger the underflow on first-time fast-commit enable without races or rare kernel configs.\nPR:L - Triggering ext4 mount of a malicious image requires CAP_SYS_ADMIN, which an unprivileged local user can obtain inside a user/mount namespace (e.g. unshare -Urm) to mount loop-backed ext4 with fast_commit enabled.\nUI:N - Exploitation does not require a separate victim action beyond the attacker (or their namespace) performing the mount of the prepared filesystem image; no additional user interaction is needed.\nS:U - Impact is confined to journal/ext4 corruption and I/O within the mounting kernel context; it does not cross a VM, container, or IOMMU security boundary to affect a separate authority.\nC:H - Corrupted j_last/j_fc_first/j_free values drive subsequent jbd2_journal_bmap and journal I/O with attacker-influenced block indices, enabling out-of-bounds reads from the journal backing device and potential kernel memory disclosure.\nI:H - The same corrupted journal geometry can direct journal block allocations and writes to incorrect offsets on the backing block device, constituting exploitable metadata corruption with integrity impact beyond a simple error return.\nA:H - The fix commit and jbd2 abort path confirm the corruption leads to journal abort and mount/operational failure; repeated mounting of malicious images can deny filesystem availability and force recovery or remount-readonly."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-23T12:47:03.674Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.10.266"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-72225","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T18:44:09.066812Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-16T18:45:02.597Z"}}]}}}