GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2023-54088 (GCVE-0-2023-54088)

Vulnerability from cvelistv5 – Published: 2025-12-24 13:06 – Updated: 2026-08-05 09:17
VLAI
Title
blk-cgroup: hold queue_lock when removing blkg->q_node
Summary
In the Linux kernel, the following vulnerability has been resolved: blk-cgroup: hold queue_lock when removing blkg->q_node When blkg is removed from q->blkg_list from blkg_free_workfn(), queue_lock has to be held, otherwise, all kinds of bugs(list corruption, hard lockup, ..) can be triggered from blkg_destroy_all().
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 81c1188905f88b77743d1fdeeedfc8cb7b67787d , < b5dae1cd0d8368b4338430ff93403df67f0b8bcc (git)
Affected: bfe46d2efe46c5c952f982e2ca94fe2ec5e58e2a , < 083b58373463a6e5ee60ecb135269348f68ad7df (git)
Affected: f1c006f1c6850c14040f8337753a63119bba39b9 , < cd4ffdf56791eec95af01f06bee1ec7665ca75c4 (git)
Affected: f1c006f1c6850c14040f8337753a63119bba39b9 , < c164c7bc9775be7bcc68754bb3431fce5823822e (git)
Affected: 6.1.16 , < 6.1.17 (semver)
Affected: 6.2.3 , < 6.2.4 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 6.3
Unaffected: 0 , < 6.3 (semver)
Unaffected: 6.1.17 , ≤ 6.1.* (semver)
Unaffected: 6.2.4 , ≤ 6.2.* (semver)
Unaffected: 6.4.12 , ≤ 6.4.* (semver)
Unaffected: 6.5 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "block/blk-cgroup.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b5dae1cd0d8368b4338430ff93403df67f0b8bcc",
              "status": "affected",
              "version": "81c1188905f88b77743d1fdeeedfc8cb7b67787d",
              "versionType": "git"
            },
            {
              "lessThan": "083b58373463a6e5ee60ecb135269348f68ad7df",
              "status": "affected",
              "version": "bfe46d2efe46c5c952f982e2ca94fe2ec5e58e2a",
              "versionType": "git"
            },
            {
              "lessThan": "cd4ffdf56791eec95af01f06bee1ec7665ca75c4",
              "status": "affected",
              "version": "f1c006f1c6850c14040f8337753a63119bba39b9",
              "versionType": "git"
            },
            {
              "lessThan": "c164c7bc9775be7bcc68754bb3431fce5823822e",
              "status": "affected",
              "version": "f1c006f1c6850c14040f8337753a63119bba39b9",
              "versionType": "git"
            },
            {
              "lessThan": "6.1.17",
              "status": "affected",
              "version": "6.1.16",
              "versionType": "semver"
            },
            {
              "lessThan": "6.2.4",
              "status": "affected",
              "version": "6.2.3",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "block/blk-cgroup.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.3"
            },
            {
              "lessThan": "6.3",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.17",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.4.*",
              "status": "unaffected",
              "version": "6.4.12",
              "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": "6.1.17",
                  "versionStartIncluding": "6.1.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.4",
                  "versionStartIncluding": "6.2.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4.12",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.5",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nblk-cgroup: hold queue_lock when removing blkg-\u003eq_node\n\nWhen blkg is removed from q-\u003eblkg_list from blkg_free_workfn(), queue_lock\nhas to be held, otherwise, all kinds of bugs(list corruption, hard lockup,\n..) can be triggered from blkg_destroy_all()."
        }
      ],
      "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 bug is in the block cgroup layer (block/blk-cgroup.c) and is reached only through local operations \u2014 cgroup v2 mkdir/rmdir, block I/O to a device, and writes to io.* cgroup control files or disk teardown. No network-facing code path touches q-\u003eblkg_list.\nAC:L - The attacker drives both sides of the race: cgroup rmdir plus prior I/O queues many blkg_free_workfn() instances that do the unlocked list_del_init(\u0026blkg-\u003eq_node), while a concurrent io.latency write (blk_iolatency_init -\u003e blkcg_activate_policy) or disk teardown (blkg_destroy_all) walks q-\u003eblkg_list under queue_lock only. The window can be widened arbitrarily by creating thousands of blkgs and freeing them in bulk, and pd_free_fn() work inside the mutex lengthens it further.\nPR:L - An unprivileged local user suffices in the standard deployment where a cgroup v2 subtree is delegated (systemd user@.service, rootless containers): the user owns the io.* files in cgroups they create, so they can create/destroy blkgs and trigger policy activation. No real root or CAP_SYS_ADMIN in the init namespace is needed.\nUI:N - The race is triggered entirely by the attacker\u0027s own processes issuing I/O and manipulating their cgroups; no victim action is required.\nS:U - Corruption stays within the kernel\u0027s own security authority \u2014 this is a standard kernel memory-corruption/privilege-escalation primitive with no crossing of a VM, IOMMU, or hypervisor boundary.\nC:H - The unsynchronized list_del_init() lets list_for_each_entry_safe() in blkg_destroy_all() and the walkers in blkcg_activate_policy() follow stale next pointers into a blkcg_gq that blkg_free_workfn() then kfree()s, so the kernel reads and dereferences attacker-sprayable reclaimed slab contents \u2014 a use-after-free read that yields an arbitrary kernel-memory disclosure primitive.\nI:H - After the list is corrupted the kernel writes through the dangling entry: blkg-\u003epd[pol-\u003eplid] = pd, pd-\u003eonline = false, radix_tree_delete(), hlist_del_init_rcu(), rcu_assign_pointer(blkcg-\u003eblkg_hint, NULL) and percpu_ref_kill() all operate on freed/reallocated memory, giving controlled pointer writes and indirect calls suitable for privilege escalation.\nA:H - The commit message states that list corruption and hard lockup are directly triggerable from blkg_destroy_all(); a corrupted doubly-linked list walked under spin_lock_irq loops forever or oopses, panicking the machine."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:17:07.550Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b5dae1cd0d8368b4338430ff93403df67f0b8bcc"
        },
        {
          "url": "https://git.kernel.org/stable/c/083b58373463a6e5ee60ecb135269348f68ad7df"
        },
        {
          "url": "https://git.kernel.org/stable/c/cd4ffdf56791eec95af01f06bee1ec7665ca75c4"
        },
        {
          "url": "https://git.kernel.org/stable/c/c164c7bc9775be7bcc68754bb3431fce5823822e"
        }
      ],
      "title": "blk-cgroup: hold queue_lock when removing blkg-\u003eq_node",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54088",
    "datePublished": "2025-12-24T13:06:18.216Z",
    "dateReserved": "2025-12-24T13:02:52.515Z",
    "dateUpdated": "2026-08-05T09:17:07.550Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-54088",
      "date": "2026-09-18",
      "epss": "0.0016",
      "percentile": "0.05649"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "block/blk-cgroup.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "b5dae1cd0d8368b4338430ff93403df67f0b8bcc",
                    "status": "affected",
                    "version": "81c1188905f88b77743d1fdeeedfc8cb7b67787d",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "083b58373463a6e5ee60ecb135269348f68ad7df",
                    "status": "affected",
                    "version": "bfe46d2efe46c5c952f982e2ca94fe2ec5e58e2a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "cd4ffdf56791eec95af01f06bee1ec7665ca75c4",
                    "status": "affected",
                    "version": "f1c006f1c6850c14040f8337753a63119bba39b9",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c164c7bc9775be7bcc68754bb3431fce5823822e",
                    "status": "affected",
                    "version": "f1c006f1c6850c14040f8337753a63119bba39b9",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6.1.17",
                    "status": "affected",
                    "version": "6.1.16",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "6.2.4",
                    "status": "affected",
                    "version": "6.2.3",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "block/blk-cgroup.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.3"
                  },
                  {
                    "lessThan": "6.3",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.17",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.2.*",
                    "status": "unaffected",
                    "version": "6.2.4",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.4.*",
                    "status": "unaffected",
                    "version": "6.4.12",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.5",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nblk-cgroup: hold queue_lock when removing blkg-\u003eq_node\n\nWhen blkg is removed from q-\u003eblkg_list from blkg_free_workfn(), queue_lock\nhas to be held, otherwise, all kinds of bugs(list corruption, hard lockup,\n..) can be triggered from blkg_destroy_all()."
          }
        ],
        "id": "CVE-2023-54088",
        "lastModified": "2026-08-04T10:19:28.350",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2025-12-24T13:16:10.667",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/083b58373463a6e5ee60ecb135269348f68ad7df"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b5dae1cd0d8368b4338430ff93403df67f0b8bcc"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c164c7bc9775be7bcc68754bb3431fce5823822e"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/cd4ffdf56791eec95af01f06bee1ec7665ca75c4"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Deferred"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T22:54:17+00:00",
      "cve": "CVE-2023-54088",
      "id": "CVE-2023-54088",
      "initial_release_date": "2023-01-01T00:00:00+00:00",
      "product_status:known_affected": "122",
      "product_status:known_not_affected": "152",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: blk-cgroup: hold queue_lock when removing blkg-\u003eq_node",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54088.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-15T02:24:51Z",
      "cve": "CVE-2023-54088",
      "id": "CVE-2023-54088",
      "initial_release_date": "2025-12-25T00:55:55Z",
      "product_status:known_affected": "427",
      "product_status:known_not_affected": "405",
      "product_status:recommended": "241",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2023-54088",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2023-54088.json",
      "version": "46"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…