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

CVE-2025-40216 (GCVE-0-2025-40216)

Vulnerability from cvelistv5 – Published: 2025-12-04 14:14 – Updated: 2026-08-05 12:08
VLAI
Title
io_uring/rsrc: don't rely on user vaddr alignment
Summary
In the Linux kernel, the following vulnerability has been resolved: io_uring/rsrc: don't rely on user vaddr alignment There is no guaranteed alignment for user pointers, however the calculation of an offset of the first page into a folio after coalescing uses some weird bit mask logic, get rid of it.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: a8edbb424b1391b077407c75d8f5d2ede77aa70d , < 50998b0ae7d9d552e96d8b7239981cf05f65eff5 (git)
Affected: a8edbb424b1391b077407c75d8f5d2ede77aa70d , < f16769241594be59387b56ab525e327f54377e60 (git)
Affected: a8edbb424b1391b077407c75d8f5d2ede77aa70d , < 3a3c6d61577dbb23c09df3e21f6f9eda1ecd634b (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.12
Unaffected: 0 , < 6.12 (semver)
Unaffected: 6.12.36 , ≤ 6.12.* (semver)
Unaffected: 6.15.5 , ≤ 6.15.* (semver)
Unaffected: 6.16 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "io_uring/rsrc.c",
            "io_uring/rsrc.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "50998b0ae7d9d552e96d8b7239981cf05f65eff5",
              "status": "affected",
              "version": "a8edbb424b1391b077407c75d8f5d2ede77aa70d",
              "versionType": "git"
            },
            {
              "lessThan": "f16769241594be59387b56ab525e327f54377e60",
              "status": "affected",
              "version": "a8edbb424b1391b077407c75d8f5d2ede77aa70d",
              "versionType": "git"
            },
            {
              "lessThan": "3a3c6d61577dbb23c09df3e21f6f9eda1ecd634b",
              "status": "affected",
              "version": "a8edbb424b1391b077407c75d8f5d2ede77aa70d",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "io_uring/rsrc.c",
            "io_uring/rsrc.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.12"
            },
            {
              "lessThan": "6.12",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.36",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.15.*",
              "status": "unaffected",
              "version": "6.15.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.16",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.36",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15.5",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.16",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nio_uring/rsrc: don\u0027t rely on user vaddr alignment\n\nThere is no guaranteed alignment for user pointers, however the\ncalculation of an offset of the first page into a folio after coalescing\nuses some weird bit mask logic, get rid of it."
        }
      ],
      "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 vulnerable code is reached only through io_uring syscalls (io_uring_setup/io_uring_register with IORING_REGISTER_BUFFERS), which require local access; there is no network reachability.\nAC:L - The attacker fully controls the trigger \u2014 allocating a multi-page folio (mTHP/hugetlb) and creating a VA-vs-folio misalignment, then registering it \u2014 with no race or externally-determined condition, making it deterministically reproducible.\nPR:L - IORING_REGISTER_BUFFERS has no capability check and io_uring is available to unprivileged users by default; a basic local user can register a coalescable large-folio buffer.\nUI:N - The entire flow (map memory, register buffer, submit fixed I/O) is performed by the attacker\u0027s own process with no victim interaction.\nS:U - The corruption stays within the kernel\u0027s own security scope; there is no VM/IOMMU/sandbox boundary being crossed.\nC:H - The wrong bv_offset plus mis-driven seg_skip/nr_segs arithmetic can read out of the bvec array and at unintended folio offsets (including shared file-backed folios), disclosing kernel heap and cross-mapping memory.\nI:H - WRITE_FIXED with the miscomputed offset writes attacker-supplied I/O data at wrong offsets and potential wild page pointers, giving an out-of-bounds write / memory-corruption primitive.\nA:H - Dereferencing a garbage bio_vec / wild bv_page during fixed-buffer I/O readily oopses or panics the kernel."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:08:41.986Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/50998b0ae7d9d552e96d8b7239981cf05f65eff5"
        },
        {
          "url": "https://git.kernel.org/stable/c/f16769241594be59387b56ab525e327f54377e60"
        },
        {
          "url": "https://git.kernel.org/stable/c/3a3c6d61577dbb23c09df3e21f6f9eda1ecd634b"
        }
      ],
      "title": "io_uring/rsrc: don\u0027t rely on user vaddr alignment",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-40216",
    "datePublished": "2025-12-04T14:14:14.690Z",
    "dateReserved": "2025-04-16T07:20:57.179Z",
    "dateUpdated": "2026-08-05T12:08:41.986Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-40216",
      "date": "2026-09-18",
      "epss": "0.00142",
      "percentile": "0.03885"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "io_uring/rsrc.c",
                  "io_uring/rsrc.h"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "50998b0ae7d9d552e96d8b7239981cf05f65eff5",
                    "status": "affected",
                    "version": "a8edbb424b1391b077407c75d8f5d2ede77aa70d",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "f16769241594be59387b56ab525e327f54377e60",
                    "status": "affected",
                    "version": "a8edbb424b1391b077407c75d8f5d2ede77aa70d",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3a3c6d61577dbb23c09df3e21f6f9eda1ecd634b",
                    "status": "affected",
                    "version": "a8edbb424b1391b077407c75d8f5d2ede77aa70d",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "io_uring/rsrc.c",
                  "io_uring/rsrc.h"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.12"
                  },
                  {
                    "lessThan": "6.12",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.36",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.15.*",
                    "status": "unaffected",
                    "version": "6.15.5",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.16",
                    "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\nio_uring/rsrc: don\u0027t rely on user vaddr alignment\n\nThere is no guaranteed alignment for user pointers, however the\ncalculation of an offset of the first page into a folio after coalescing\nuses some weird bit mask logic, get rid of it."
          }
        ],
        "id": "CVE-2025-40216",
        "lastModified": "2026-07-30T06:24:18.843",
        "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-04T15:15:57.300",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3a3c6d61577dbb23c09df3e21f6f9eda1ecd634b"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/50998b0ae7d9d552e96d8b7239981cf05f65eff5"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f16769241594be59387b56ab525e327f54377e60"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Deferred"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T08:37:32+00:00",
      "cve": "CVE-2025-40216",
      "id": "CVE-2025-40216",
      "initial_release_date": "2025-12-04T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: io_uring/rsrc: don\u0027t rely on user vaddr alignment",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-40216.json",
      "version": "3"
    }
  }
}



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…