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

CVE-2026-64588 (GCVE-0-2026-64588)

Vulnerability from cvelistv5 – Published: 2026-08-06 07:13 – Updated: 2026-08-17 04:58
VLAI
Title
fuse-uring: fix data races on ring->ready
Summary
In the Linux kernel, the following vulnerability has been resolved: fuse-uring: fix data races on ring->ready On weakly-ordered architectures, the store to fiq->ops can be reordered past the store to ring->ready, allowing a CPU that sees ring->ready == true via fuse_uring_ready() to dispatch requests through a stale fiq->ops pointer. Upgrade the store to smp_store_release() and the load in fuse_uring_ready() to smp_load_acquire() so that the preceding WRITE_ONCE(fiq->ops, ...) is visible to any CPU that observes ring->ready == true. Additionally, fuse_uring_do_register() publishes ring->ready with WRITE_ONCE() but the fast-path check reads it with a plain load. This is a marked-vs-unmarked access that KCSAN will flag. Wrap it in READ_ONCE() to mark it without adding unnecessary ordering. Also wrap the fc->ring load in fuse_uring_ready() in READ_ONCE() to prevent the compiler from reloading it between the NULL check and the dereference.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: c2c9af9a0b13261c36909036057a116f2edb5e1a , < b156bb9966972122b148acab8bdf415cdb8176a3 (git)
Affected: c2c9af9a0b13261c36909036057a116f2edb5e1a , < d01a09b442cb786cd44ccc7c84d57e2856d6737c (git)
Affected: c2c9af9a0b13261c36909036057a116f2edb5e1a , < 46725a0056c884cf58a6897f222892807327d82d (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.14
Unaffected: 0 , < 6.14 (semver)
Unaffected: 6.18.39 , ≤ 6.18.* (semver)
Unaffected: 7.1.4 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/fuse/dev_uring.c",
            "fs/fuse/dev_uring_i.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b156bb9966972122b148acab8bdf415cdb8176a3",
              "status": "affected",
              "version": "c2c9af9a0b13261c36909036057a116f2edb5e1a",
              "versionType": "git"
            },
            {
              "lessThan": "d01a09b442cb786cd44ccc7c84d57e2856d6737c",
              "status": "affected",
              "version": "c2c9af9a0b13261c36909036057a116f2edb5e1a",
              "versionType": "git"
            },
            {
              "lessThan": "46725a0056c884cf58a6897f222892807327d82d",
              "status": "affected",
              "version": "c2c9af9a0b13261c36909036057a116f2edb5e1a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/fuse/dev_uring.c",
            "fs/fuse/dev_uring_i.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.14"
            },
            {
              "lessThan": "6.14",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.39",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.4",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfuse-uring: fix data races on ring-\u003eready\n\nOn weakly-ordered architectures, the store to fiq-\u003eops can be\nreordered past the store to ring-\u003eready, allowing a CPU that sees\nring-\u003eready == true via fuse_uring_ready() to dispatch requests\nthrough a stale fiq-\u003eops pointer. Upgrade the store to\nsmp_store_release() and the load in fuse_uring_ready() to\nsmp_load_acquire() so that the preceding WRITE_ONCE(fiq-\u003eops, ...)\nis visible to any CPU that observes ring-\u003eready == true.\n\nAdditionally, fuse_uring_do_register() publishes ring-\u003eready with\nWRITE_ONCE() but the fast-path check reads it with a plain load.\nThis is a marked-vs-unmarked access that KCSAN will flag. Wrap it in\nREAD_ONCE() to mark it without adding unnecessary ordering.\n\nAlso wrap the fc-\u003ering load in fuse_uring_ready() in READ_ONCE() to\nprevent the compiler from reloading it between the NULL check and the\ndereference."
        }
      ],
      "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 reached locally by mounting FUSE with io-uring and submitting IORING_OP_URING_CMD registration while other local threads generate FUSE requests; no network protocol path invokes fuse_uring_ready() or fuse_uring_do_register().\nAC:L - The attacker controls both sides of the race by registering ring entries on /dev/fuse while concurrently issuing filesystem operations on the same mount, so the publish window on weakly ordered CPUs can be driven and retried without relying on victim state.\nPR:L - FUSE is FS_USERNS_MOUNT, so an ordinary user can create a user-namespace mount, open /dev/fuse, and enable FUSE_OVER_IO_URING without init-namespace root privileges.\nUI:N - The attacker can run both the FUSE daemon that registers io-uring queues and the client threads that generate requests on that mount, so no separate victim action is required.\nS:U - Impact is confined to the host kernel authority as a local FUSE/io-uring memory-safety failure, not a VM, IOMMU, or guest-to-host boundary escape.\nC:H - Missing acquire on ring-\u003eready lets CPUs observe readiness while fiq-\u003eops and related ring publication are stale, and the unfixed fc-\u003ering reload in fuse_uring_ready() is a check-then-use UAF window against ring teardown, enabling disclosure of reclaimed kernel memory.\nI:H - Dispatching through inconsistent ops/ring state and the concurrent ring reload UAF allow writes and list/queue operations on stale or reallocated fuse_ring objects, which is exploitable for heap corruption and control-flow hijacking.\nA:H - The same races can NULL-dereference or use a freed fuse_ring in fuse_uring_task_to_queue()/fuse_uring_ready(), hang requests on the wrong queue path, and trigger WARN/oops or panic under panic_on_warn."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T04:58:09.400Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b156bb9966972122b148acab8bdf415cdb8176a3"
        },
        {
          "url": "https://git.kernel.org/stable/c/d01a09b442cb786cd44ccc7c84d57e2856d6737c"
        },
        {
          "url": "https://git.kernel.org/stable/c/46725a0056c884cf58a6897f222892807327d82d"
        }
      ],
      "title": "fuse-uring: fix data races on ring-\u003eready",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64588",
    "datePublished": "2026-08-06T07:13:46.688Z",
    "dateReserved": "2026-07-19T15:36:31.798Z",
    "dateUpdated": "2026-08-17T04:58:09.400Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-64588",
      "date": "2026-09-18",
      "epss": "0.00119",
      "percentile": "0.01985"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/fuse/dev_uring.c",
                  "fs/fuse/dev_uring_i.h"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "b156bb9966972122b148acab8bdf415cdb8176a3",
                    "status": "affected",
                    "version": "c2c9af9a0b13261c36909036057a116f2edb5e1a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "d01a09b442cb786cd44ccc7c84d57e2856d6737c",
                    "status": "affected",
                    "version": "c2c9af9a0b13261c36909036057a116f2edb5e1a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "46725a0056c884cf58a6897f222892807327d82d",
                    "status": "affected",
                    "version": "c2c9af9a0b13261c36909036057a116f2edb5e1a",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/fuse/dev_uring.c",
                  "fs/fuse/dev_uring_i.h"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.14"
                  },
                  {
                    "lessThan": "6.14",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.39",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.4",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "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\nfuse-uring: fix data races on ring-\u003eready\n\nOn weakly-ordered architectures, the store to fiq-\u003eops can be\nreordered past the store to ring-\u003eready, allowing a CPU that sees\nring-\u003eready == true via fuse_uring_ready() to dispatch requests\nthrough a stale fiq-\u003eops pointer. Upgrade the store to\nsmp_store_release() and the load in fuse_uring_ready() to\nsmp_load_acquire() so that the preceding WRITE_ONCE(fiq-\u003eops, ...)\nis visible to any CPU that observes ring-\u003eready == true.\n\nAdditionally, fuse_uring_do_register() publishes ring-\u003eready with\nWRITE_ONCE() but the fast-path check reads it with a plain load.\nThis is a marked-vs-unmarked access that KCSAN will flag. Wrap it in\nREAD_ONCE() to mark it without adding unnecessary ordering.\n\nAlso wrap the fc-\u003ering load in fuse_uring_ready() in READ_ONCE() to\nprevent the compiler from reloading it between the NULL check and the\ndereference."
          }
        ],
        "id": "CVE-2026-64588",
        "lastModified": "2026-08-17T05:18:05.207",
        "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": "2026-08-06T08:16:34.123",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/46725a0056c884cf58a6897f222892807327d82d"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b156bb9966972122b148acab8bdf415cdb8176a3"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/d01a09b442cb786cd44ccc7c84d57e2856d6737c"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-17T16:31:05Z",
      "cve": "CVE-2026-64588",
      "id": "CVE-2026-64588",
      "initial_release_date": "2026-08-06T23:55:51Z",
      "product_status:known_not_affected": "296",
      "product_status:recommended": "4",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-64588",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-64588.json",
      "version": "4"
    }
  }
}



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…