CVE-2023-54153 (GCVE-0-2023-54153)
Vulnerability from cvelistv5
Published
2025-12-24 13:07
Modified
2026-08-05 09:17
Summary
In the Linux kernel, the following vulnerability has been resolved: ext4: turn quotas off if mount failed after enabling quotas Yi found during a review of the patch "ext4: don't BUG on inconsistent journal feature" that when ext4_mark_recovery_complete() returns an error value, the error handling path does not turn off the enabled quotas, which triggers the following kmemleak: ================================================================ unreferenced object 0xffff8cf68678e7c0 (size 64): comm "mount", pid 746, jiffies 4294871231 (age 11.540s) hex dump (first 32 bytes): 00 90 ef 82 f6 8c ff ff 00 00 00 00 41 01 00 00 ............A... c7 00 00 00 bd 00 00 00 0a 00 00 00 48 00 00 00 ............H... backtrace: [<00000000c561ef24>] __kmem_cache_alloc_node+0x4d4/0x880 [<00000000d4e621d7>] kmalloc_trace+0x39/0x140 [<00000000837eee74>] v2_read_file_info+0x18a/0x3a0 [<0000000088f6c877>] dquot_load_quota_sb+0x2ed/0x770 [<00000000340a4782>] dquot_load_quota_inode+0xc6/0x1c0 [<0000000089a18bd5>] ext4_enable_quotas+0x17e/0x3a0 [ext4] [<000000003a0268fa>] __ext4_fill_super+0x3448/0x3910 [ext4] [<00000000b0f2a8a8>] ext4_fill_super+0x13d/0x340 [ext4] [<000000004a9489c4>] get_tree_bdev+0x1dc/0x370 [<000000006e723bf1>] ext4_get_tree+0x1d/0x30 [ext4] [<00000000c7cb663d>] vfs_get_tree+0x31/0x160 [<00000000320e1bed>] do_new_mount+0x1d5/0x480 [<00000000c074654c>] path_mount+0x22e/0xbe0 [<0000000003e97a8e>] do_mount+0x95/0xc0 [<000000002f3d3736>] __x64_sys_mount+0xc4/0x160 [<0000000027d2140c>] do_syscall_64+0x3f/0x90 ================================================================ To solve this problem, we add a "failed_mount10" tag, and call ext4_quota_off_umount() in this tag to release the enabled qoutas.
Impacted products
Vendor Product Version
Linux Linux Version: 11215630aada28307ba555a43138db6ac54fa825
Version: 11215630aada28307ba555a43138db6ac54fa825
Version: 11215630aada28307ba555a43138db6ac54fa825
Version: 11215630aada28307ba555a43138db6ac54fa825
Version: 60e2824ab30a19c7aaf5a3932bc155d18b2cd816
Version: a6d49257cbe53c7bca1a0353a6443f53cbed9cc7
Version: 2e7312ddaf629eecf4702b662da477a3bc39c31a
Version: d558851e5ff443b020245b7a1a455c55accf740b
Version: 4.14.196   
Version: 4.19.143   
Version: 5.4.62   
Version: 5.8.6   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/ext4/super.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "c327b83c59ee938792a0300df646efac39c7d6a7",
              "status": "affected",
              "version": "11215630aada28307ba555a43138db6ac54fa825",
              "versionType": "git"
            },
            {
              "lessThan": "deef86fa3005cbb61ae8aa5729324c09b3f4ba73",
              "status": "affected",
              "version": "11215630aada28307ba555a43138db6ac54fa825",
              "versionType": "git"
            },
            {
              "lessThan": "77c3ca1108eb4a26db4f256c42b271a430cebc7d",
              "status": "affected",
              "version": "11215630aada28307ba555a43138db6ac54fa825",
              "versionType": "git"
            },
            {
              "lessThan": "d13f99632748462c32fc95d729f5e754bab06064",
              "status": "affected",
              "version": "11215630aada28307ba555a43138db6ac54fa825",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "60e2824ab30a19c7aaf5a3932bc155d18b2cd816",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "a6d49257cbe53c7bca1a0353a6443f53cbed9cc7",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "2e7312ddaf629eecf4702b662da477a3bc39c31a",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d558851e5ff443b020245b7a1a455c55accf740b",
              "versionType": "git"
            },
            {
              "lessThan": "4.15",
              "status": "affected",
              "version": "4.14.196",
              "versionType": "semver"
            },
            {
              "lessThan": "4.20",
              "status": "affected",
              "version": "4.19.143",
              "versionType": "semver"
            },
            {
              "lessThan": "5.5",
              "status": "affected",
              "version": "5.4.62",
              "versionType": "semver"
            },
            {
              "lessThan": "5.9",
              "status": "affected",
              "version": "5.8.6",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/ext4/super.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.9"
            },
            {
              "lessThan": "5.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.121",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.40",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.4.*",
              "status": "unaffected",
              "version": "6.4.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.5",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.121",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.40",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4.5",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.5",
                  "versionStartIncluding": "5.9",
                  "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",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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\u0027t 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[\u003c00000000c561ef24\u003e] __kmem_cache_alloc_node+0x4d4/0x880\n[\u003c00000000d4e621d7\u003e] kmalloc_trace+0x39/0x140\n[\u003c00000000837eee74\u003e] v2_read_file_info+0x18a/0x3a0\n[\u003c0000000088f6c877\u003e] dquot_load_quota_sb+0x2ed/0x770\n[\u003c00000000340a4782\u003e] dquot_load_quota_inode+0xc6/0x1c0\n[\u003c0000000089a18bd5\u003e] ext4_enable_quotas+0x17e/0x3a0 [ext4]\n[\u003c000000003a0268fa\u003e] __ext4_fill_super+0x3448/0x3910 [ext4]\n[\u003c00000000b0f2a8a8\u003e] ext4_fill_super+0x13d/0x340 [ext4]\n[\u003c000000004a9489c4\u003e] get_tree_bdev+0x1dc/0x370\n[\u003c000000006e723bf1\u003e] ext4_get_tree+0x1d/0x30 [ext4]\n[\u003c00000000c7cb663d\u003e] vfs_get_tree+0x31/0x160\n[\u003c00000000320e1bed\u003e] do_new_mount+0x1d5/0x480\n[\u003c00000000c074654c\u003e] path_mount+0x22e/0xbe0\n[\u003c0000000003e97a8e\u003e] do_mount+0x95/0xc0\n[\u003c000000002f3d3736\u003e] __x64_sys_mount+0xc4/0x160\n[\u003c0000000027d2140c\u003e] 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": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "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 \u2014 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 \u2014 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-\u003edq_sb-\u003edq_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 \u2014 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-\u003edestroy_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\u0027s 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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:17:40.749Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "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"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54153",
    "datePublished": "2025-12-24T13:07:04.007Z",
    "dateReserved": "2025-12-24T13:02:52.529Z",
    "dateUpdated": "2026-08-05T09:17:40.749Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…