{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2023-54153",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-12-24T13:02:52.529Z",
        "datePublished": "2025-12-24T13:07:04.007Z",
        "dateUpdated": "2026-08-05T09:17:40.749Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T09:17:40.749Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\next4: turn quotas off if mount failed after enabling quotas\n\nYi found during a review of the patch \"ext4: don't BUG on inconsistent\njournal feature\" that when ext4_mark_recovery_complete() returns an error\nvalue, the error handling path does not turn off the enabled quotas,\nwhich triggers the following kmemleak:\n\n================================================================\nunreferenced object 0xffff8cf68678e7c0 (size 64):\ncomm \"mount\", pid 746, jiffies 4294871231 (age 11.540s)\nhex dump (first 32 bytes):\n00 90 ef 82 f6 8c ff ff 00 00 00 00 41 01 00 00  ............A...\nc7 00 00 00 bd 00 00 00 0a 00 00 00 48 00 00 00  ............H...\nbacktrace:\n[<00000000c561ef24>] __kmem_cache_alloc_node+0x4d4/0x880\n[<00000000d4e621d7>] kmalloc_trace+0x39/0x140\n[<00000000837eee74>] v2_read_file_info+0x18a/0x3a0\n[<0000000088f6c877>] dquot_load_quota_sb+0x2ed/0x770\n[<00000000340a4782>] dquot_load_quota_inode+0xc6/0x1c0\n[<0000000089a18bd5>] ext4_enable_quotas+0x17e/0x3a0 [ext4]\n[<000000003a0268fa>] __ext4_fill_super+0x3448/0x3910 [ext4]\n[<00000000b0f2a8a8>] ext4_fill_super+0x13d/0x340 [ext4]\n[<000000004a9489c4>] get_tree_bdev+0x1dc/0x370\n[<000000006e723bf1>] ext4_get_tree+0x1d/0x30 [ext4]\n[<00000000c7cb663d>] vfs_get_tree+0x31/0x160\n[<00000000320e1bed>] do_new_mount+0x1d5/0x480\n[<00000000c074654c>] path_mount+0x22e/0xbe0\n[<0000000003e97a8e>] do_mount+0x95/0xc0\n[<000000002f3d3736>] __x64_sys_mount+0xc4/0x160\n[<0000000027d2140c>] do_syscall_64+0x3f/0x90\n================================================================\n\nTo solve this problem, we add a \"failed_mount10\" tag, and call\next4_quota_off_umount() in this tag to release the enabled qoutas."
                }
            ],
            "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 vulnerability is reached only through `mount(2)`/`ext4_fill_super()` on an attacker-supplied ext4 image or removable block device; there is no network or adjacent-network path to `__ext4_fill_super()`.\nAC:L - The failure path is fully attacker-determined by image content — a `quota`+`needs_recovery` superblock with `errors=remount-ro` and a corrupted orphan inode makes `ext4_orphan_cleanup()` abort the journal, so `jbd2_journal_flush()` in `ext4_mark_recovery_complete()` returns `-EIO` every time; no race must be won, and the follow-on `dqcache_shrink_scan()` is triggerable at will via memory pressure.\nPR:N - The attacker only needs to supply the malicious ext4 image or USB/SD device; on desktops, kiosks, Android and embedded systems udisks2/systemd-mount style automounters perform the mount, so no privileges of the attacker are involved, consistent with prior failed-ext4-mount CVEs (e.g. CVE-2024-49960).\nUI:R - Some party other than the attacker must actually mount the crafted filesystem — a user inserting/opening the removable media or an automounter acting on that insertion.\nS:U - The freed `super_block`, leaked quota inodes and stale dquots all live in kernel memory under the same security authority; no VM, IOMMU or sandbox boundary is crossed.\nC:H - `do_destroy_dquot()` dereferences `dquot->dq_sb->dq_op` on a `kfree()`d superblock, reading freed kmalloc-2k memory that an attacker can groom, and stale hash entries can hand quota data of one filesystem to another — a use-after-free read primitive rather than a bounded leak.\nI:H - The same use-after-free ends in an indirect call through `dq_op->destroy_dquot`, a function pointer loaded from reclaimed heap memory the attacker can spray, giving control-flow hijack and thus arbitrary kernel modification.\nA:H - Even without exploitation, the shrinker's dereference of the freed superblock oopses the kernel, and the path additionally leaks pinned inodes, `dqi_priv` and a module reference on every triggered mount."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "fs/ext4/super.c"
                    ],
                    "versions": [
                        {
                            "version": "11215630aada28307ba555a43138db6ac54fa825",
                            "lessThan": "c327b83c59ee938792a0300df646efac39c7d6a7",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "11215630aada28307ba555a43138db6ac54fa825",
                            "lessThan": "deef86fa3005cbb61ae8aa5729324c09b3f4ba73",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "11215630aada28307ba555a43138db6ac54fa825",
                            "lessThan": "77c3ca1108eb4a26db4f256c42b271a430cebc7d",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "11215630aada28307ba555a43138db6ac54fa825",
                            "lessThan": "d13f99632748462c32fc95d729f5e754bab06064",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "60e2824ab30a19c7aaf5a3932bc155d18b2cd816",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "a6d49257cbe53c7bca1a0353a6443f53cbed9cc7",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "2e7312ddaf629eecf4702b662da477a3bc39c31a",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "d558851e5ff443b020245b7a1a455c55accf740b",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "4.14.196",
                            "lessThan": "4.15",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "4.19.143",
                            "lessThan": "4.20",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.4.62",
                            "lessThan": "5.5",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.8.6",
                            "lessThan": "5.9",
                            "status": "affected",
                            "versionType": "semver"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "fs/ext4/super.c"
                    ],
                    "versions": [
                        {
                            "version": "5.9",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.9",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.121",
                            "lessThanOrEqual": "5.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.40",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.4.5",
                            "lessThanOrEqual": "6.4.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.5",
                            "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.9",
                                    "versionEndExcluding": "5.15.121"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.9",
                                    "versionEndExcluding": "6.1.40"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.9",
                                    "versionEndExcluding": "6.4.5"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.9",
                                    "versionEndExcluding": "6.5"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.14.196"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.19.143"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.4.62"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.8.6"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/c327b83c59ee938792a0300df646efac39c7d6a7"
                },
                {
                    "url": "https://git.kernel.org/stable/c/deef86fa3005cbb61ae8aa5729324c09b3f4ba73"
                },
                {
                    "url": "https://git.kernel.org/stable/c/77c3ca1108eb4a26db4f256c42b271a430cebc7d"
                },
                {
                    "url": "https://git.kernel.org/stable/c/d13f99632748462c32fc95d729f5e754bab06064"
                }
            ],
            "title": "ext4: turn quotas off if mount failed after enabling quotas",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}