CVE-2023-54128 (GCVE-0-2023-54128)
Vulnerability from cvelistv5
Published
2025-12-24 13:06
Modified
2026-08-05 09:17
Summary
In the Linux kernel, the following vulnerability has been resolved: fs: drop peer group ids under namespace lock When cleaning up peer group ids in the failure path we need to make sure to hold on to the namespace lock. Otherwise another thread might just turn the mount from a shared into a non-shared mount concurrently.
Impacted products
Vendor Product Version
Linux Linux Version: 2a1867219c7b27f928e2545782b86daaf9ad50bd
Version: 2a1867219c7b27f928e2545782b86daaf9ad50bd
Version: 2a1867219c7b27f928e2545782b86daaf9ad50bd
Version: 2a1867219c7b27f928e2545782b86daaf9ad50bd
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/namespace.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "0af8fae81d8b7f1beddc17c5d4cfa43235134648",
              "status": "affected",
              "version": "2a1867219c7b27f928e2545782b86daaf9ad50bd",
              "versionType": "git"
            },
            {
              "lessThan": "ddca03d97daa7b07b60c52e3d3060762732c6666",
              "status": "affected",
              "version": "2a1867219c7b27f928e2545782b86daaf9ad50bd",
              "versionType": "git"
            },
            {
              "lessThan": "65c324d3f35c05e37afec39ac80743583fdcc96c",
              "status": "affected",
              "version": "2a1867219c7b27f928e2545782b86daaf9ad50bd",
              "versionType": "git"
            },
            {
              "lessThan": "cb2239c198ad9fbd5aced22cf93e45562da781eb",
              "status": "affected",
              "version": "2a1867219c7b27f928e2545782b86daaf9ad50bd",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/namespace.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.12"
            },
            {
              "lessThan": "5.12",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.107",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.24",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.107",
                  "versionStartIncluding": "5.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.24",
                  "versionStartIncluding": "5.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.11",
                  "versionStartIncluding": "5.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3",
                  "versionStartIncluding": "5.12",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs: drop peer group ids under namespace lock\n\nWhen cleaning up peer group ids in the failure path we need to make sure\nto hold on to the namespace lock. Otherwise another thread might just\nturn the mount from a shared into a non-shared mount concurrently."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability is reached through the mount_setattr(2) syscall from a local process, with the racing side driven by concurrent umount(2)/mount propagation-change syscalls. No network path exists to fs/namespace.c mount-propagation code.\nAC:L - The attacker controls both sides of the race \u2014 one thread deterministically forces the error path (mnt_hold_writers() -EBUSY on a write-open fd, or -EPERM on the MNT_LOCK_* mounts a userns unshare always yields) while another thread umounts a submount or flips a peer from shared to private, and the unlocked O(n) tree walk is widened arbitrarily by pre-building a large mount tree.\nPR:L - mount_setattr() gates on may_mount() = ns_capable(current-\u003ensproxy-\u003emnt_ns-\u003euser_ns, CAP_SYS_ADMIN), which any unprivileged local user satisfies via unshare(CLONE_NEWUSER|CLONE_NEWNS); check_mnt() then confines operations to that attacker-owned namespace. No real root is required.\nUI:N - The attacker performs every step itself \u2014 creating the mount tree, issuing the failing mount_setattr() and the racing umount/propagation change. No victim action is needed.\nS:U - The corruption is confined to kernel VFS structures and is exploited by the same kernel security authority that manages them; this is standard in-kernel privilege escalation rather than a hypervisor or IOMMU boundary crossing.\nC:H - The unlocked walk reads mnt_mounts/mnt_child/mnt_parent from freed mnt_cache objects (use-after-free read), and premature peer-group-ID release plus ID reuse makes peers() true across unrelated groups so propagate_mnt() can expose mounts and their file contents in namespaces that must not see them.\nI:H - mnt_release_group_id() writes mnt_group_id = 0 into a freed and potentially reallocated struct mount, and the corrupted peer-group identity drives propagate_one() into wrong CL_MAKE_SHARED/CL_SLAVE decisions that attach mounts into trees they should never reach \u2014 a use-after-free write plus attacker-influenced mount-namespace state corruption.\nA:H - A concurrent umount\u0027s list_del_init(\u0026mnt-\u003emnt_child) makes next_mnt() return the same node, sending cleanup_group_ids() into an unkillable infinite loop with no cond_resched() (soft/hard lockup); the double ida_free() also hits WARN() which panics under panic_on_warn, and peer-group confusion yields a NULL deref in propagate_one()."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:17:28.737Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/0af8fae81d8b7f1beddc17c5d4cfa43235134648"
        },
        {
          "url": "https://git.kernel.org/stable/c/ddca03d97daa7b07b60c52e3d3060762732c6666"
        },
        {
          "url": "https://git.kernel.org/stable/c/65c324d3f35c05e37afec39ac80743583fdcc96c"
        },
        {
          "url": "https://git.kernel.org/stable/c/cb2239c198ad9fbd5aced22cf93e45562da781eb"
        }
      ],
      "title": "fs: drop peer group ids under namespace lock",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54128",
    "datePublished": "2025-12-24T13:06:46.056Z",
    "dateReserved": "2025-12-24T13:02:52.521Z",
    "dateUpdated": "2026-08-05T09:17:28.737Z",
    "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…