CVE-2023-54077 (GCVE-0-2023-54077)
Vulnerability from cvelistv5
Published
2025-12-24 13:03
Modified
2025-12-24 13:03
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: Fix memory leak if ntfs_read_mft failed Label ATTR_ROOT in ntfs_read_mft() sets is_root = true and ni->ni_flags |= NI_FLAG_DIR, then next attr will goto label ATTR_ALLOC and alloc ni->dir.alloc_run. However two states are not always consistent and can make memory leak. 1) attr_name in ATTR_ROOT does not fit the condition it will set is_root = true but NI_FLAG_DIR is not set. 2) next attr_name in ATTR_ALLOC fits the condition and alloc ni->dir.alloc_run 3) in cleanup function ni_clear(), when NI_FLAG_DIR is set, it frees ni->dir.alloc_run, otherwise it frees ni->file.run 4) because NI_FLAG_DIR is not set in this case, ni->dir.alloc_run is leaked as kmemleak reported: unreferenced object 0xffff888003bc5480 (size 64): backtrace: [<000000003d42e6b0>] __kmalloc_node+0x4e/0x1c0 [<00000000d8e19b8a>] kvmalloc_node+0x39/0x1f0 [<00000000fc3eb5b8>] run_add_entry+0x18a/0xa40 [ntfs3] [<0000000011c9f978>] run_unpack+0x75d/0x8e0 [ntfs3] [<00000000e7cf1819>] run_unpack_ex+0xbc/0x500 [ntfs3] [<00000000bbf0a43d>] ntfs_iget5+0xb25/0x2dd0 [ntfs3] [<00000000a6e50693>] ntfs_fill_super+0x218d/0x3580 [ntfs3] [<00000000b9170608>] get_tree_bdev+0x3fb/0x710 [<000000004833798a>] vfs_get_tree+0x8e/0x280 [<000000006e20b8e6>] path_mount+0xf3c/0x1930 [<000000007bf15a5f>] do_mount+0xf3/0x110 ... Fix this by always setting is_root and NI_FLAG_DIR together.
Impacted products
Vendor Product Version
Linux Linux Version: 82cae269cfa953032fbb8980a7d554d60fb00b17
Version: 82cae269cfa953032fbb8980a7d554d60fb00b17
Version: 82cae269cfa953032fbb8980a7d554d60fb00b17
Version: 82cae269cfa953032fbb8980a7d554d60fb00b17
Version: 82cae269cfa953032fbb8980a7d554d60fb00b17
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/ntfs3/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3030f2b9b3329db3948c1a145a5493ca6f617d50",
              "status": "affected",
              "version": "82cae269cfa953032fbb8980a7d554d60fb00b17",
              "versionType": "git"
            },
            {
              "lessThan": "1bc6bb657dfb0ab3b94ef6d477ca241bf7b6ec06",
              "status": "affected",
              "version": "82cae269cfa953032fbb8980a7d554d60fb00b17",
              "versionType": "git"
            },
            {
              "lessThan": "93bf79f989688852deade1550fb478b0a4d8daa8",
              "status": "affected",
              "version": "82cae269cfa953032fbb8980a7d554d60fb00b17",
              "versionType": "git"
            },
            {
              "lessThan": "3bb0d3eb475f01744ce6d6e998dfbd80220852a1",
              "status": "affected",
              "version": "82cae269cfa953032fbb8980a7d554d60fb00b17",
              "versionType": "git"
            },
            {
              "lessThan": "bfa434c60157c9793e9b12c9b68ade02aff9f803",
              "status": "affected",
              "version": "82cae269cfa953032fbb8980a7d554d60fb00b17",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/ntfs3/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.15"
            },
            {
              "lessThan": "5.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.28",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.15",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.3.*",
              "status": "unaffected",
              "version": "6.3.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.111",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.28",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.15",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3.2",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4",
                  "versionStartIncluding": "5.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/ntfs3: Fix memory leak if ntfs_read_mft failed\n\nLabel ATTR_ROOT in ntfs_read_mft() sets is_root = true and\nni-\u003eni_flags |= NI_FLAG_DIR, then next attr will goto label ATTR_ALLOC\nand alloc ni-\u003edir.alloc_run. However two states are not always\nconsistent and can make memory leak.\n\n 1) attr_name in ATTR_ROOT does not fit the condition it will set\n is_root = true but NI_FLAG_DIR is not set.\n 2) next attr_name in ATTR_ALLOC fits the condition and alloc\n ni-\u003edir.alloc_run\n 3) in cleanup function ni_clear(), when NI_FLAG_DIR is set, it frees\n ni-\u003edir.alloc_run, otherwise it frees ni-\u003efile.run\n 4) because NI_FLAG_DIR is not set in this case, ni-\u003edir.alloc_run is\n leaked as kmemleak reported:\n\nunreferenced object 0xffff888003bc5480 (size 64):\n  backtrace:\n    [\u003c000000003d42e6b0\u003e] __kmalloc_node+0x4e/0x1c0\n    [\u003c00000000d8e19b8a\u003e] kvmalloc_node+0x39/0x1f0\n    [\u003c00000000fc3eb5b8\u003e] run_add_entry+0x18a/0xa40 [ntfs3]\n    [\u003c0000000011c9f978\u003e] run_unpack+0x75d/0x8e0 [ntfs3]\n    [\u003c00000000e7cf1819\u003e] run_unpack_ex+0xbc/0x500 [ntfs3]\n    [\u003c00000000bbf0a43d\u003e] ntfs_iget5+0xb25/0x2dd0 [ntfs3]\n    [\u003c00000000a6e50693\u003e] ntfs_fill_super+0x218d/0x3580 [ntfs3]\n    [\u003c00000000b9170608\u003e] get_tree_bdev+0x3fb/0x710\n    [\u003c000000004833798a\u003e] vfs_get_tree+0x8e/0x280\n    [\u003c000000006e20b8e6\u003e] path_mount+0xf3c/0x1930\n    [\u003c000000007bf15a5f\u003e] do_mount+0xf3/0x110\n    ...\n\nFix this by always setting is_root and NI_FLAG_DIR together."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-12-24T13:03:25.790Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3030f2b9b3329db3948c1a145a5493ca6f617d50"
        },
        {
          "url": "https://git.kernel.org/stable/c/1bc6bb657dfb0ab3b94ef6d477ca241bf7b6ec06"
        },
        {
          "url": "https://git.kernel.org/stable/c/93bf79f989688852deade1550fb478b0a4d8daa8"
        },
        {
          "url": "https://git.kernel.org/stable/c/3bb0d3eb475f01744ce6d6e998dfbd80220852a1"
        },
        {
          "url": "https://git.kernel.org/stable/c/bfa434c60157c9793e9b12c9b68ade02aff9f803"
        }
      ],
      "title": "fs/ntfs3: Fix memory leak if ntfs_read_mft failed",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54077",
    "datePublished": "2025-12-24T13:03:25.790Z",
    "dateReserved": "2025-12-24T12:21:05.094Z",
    "dateUpdated": "2025-12-24T13:03:25.790Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-54077\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-24T13:16:09.543\",\"lastModified\":\"2025-12-24T13:16:09.543\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nfs/ntfs3: Fix memory leak if ntfs_read_mft failed\\n\\nLabel ATTR_ROOT in ntfs_read_mft() sets is_root = true and\\nni-\u003eni_flags |= NI_FLAG_DIR, then next attr will goto label ATTR_ALLOC\\nand alloc ni-\u003edir.alloc_run. However two states are not always\\nconsistent and can make memory leak.\\n\\n 1) attr_name in ATTR_ROOT does not fit the condition it will set\\n is_root = true but NI_FLAG_DIR is not set.\\n 2) next attr_name in ATTR_ALLOC fits the condition and alloc\\n ni-\u003edir.alloc_run\\n 3) in cleanup function ni_clear(), when NI_FLAG_DIR is set, it frees\\n ni-\u003edir.alloc_run, otherwise it frees ni-\u003efile.run\\n 4) because NI_FLAG_DIR is not set in this case, ni-\u003edir.alloc_run is\\n leaked as kmemleak reported:\\n\\nunreferenced object 0xffff888003bc5480 (size 64):\\n  backtrace:\\n    [\u003c000000003d42e6b0\u003e] __kmalloc_node+0x4e/0x1c0\\n    [\u003c00000000d8e19b8a\u003e] kvmalloc_node+0x39/0x1f0\\n    [\u003c00000000fc3eb5b8\u003e] run_add_entry+0x18a/0xa40 [ntfs3]\\n    [\u003c0000000011c9f978\u003e] run_unpack+0x75d/0x8e0 [ntfs3]\\n    [\u003c00000000e7cf1819\u003e] run_unpack_ex+0xbc/0x500 [ntfs3]\\n    [\u003c00000000bbf0a43d\u003e] ntfs_iget5+0xb25/0x2dd0 [ntfs3]\\n    [\u003c00000000a6e50693\u003e] ntfs_fill_super+0x218d/0x3580 [ntfs3]\\n    [\u003c00000000b9170608\u003e] get_tree_bdev+0x3fb/0x710\\n    [\u003c000000004833798a\u003e] vfs_get_tree+0x8e/0x280\\n    [\u003c000000006e20b8e6\u003e] path_mount+0xf3c/0x1930\\n    [\u003c000000007bf15a5f\u003e] do_mount+0xf3/0x110\\n    ...\\n\\nFix this by always setting is_root and NI_FLAG_DIR together.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1bc6bb657dfb0ab3b94ef6d477ca241bf7b6ec06\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/3030f2b9b3329db3948c1a145a5493ca6f617d50\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/3bb0d3eb475f01744ce6d6e998dfbd80220852a1\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/93bf79f989688852deade1550fb478b0a4d8daa8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bfa434c60157c9793e9b12c9b68ade02aff9f803\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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…