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

CVE-2025-40051 (GCVE-0-2025-40051)

Vulnerability from cvelistv5 – Published: 2025-10-28 11:48 – Updated: 2026-08-05 12:07
VLAI
Title
vhost: vringh: Modify the return value check
Summary
In the Linux kernel, the following vulnerability has been resolved: vhost: vringh: Modify the return value check The return value of copy_from_iter and copy_to_iter can't be negative, check whether the copied lengths are equal.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 309bba39c945ac8ab8083ac05cd6cfe5822968e0 , < db042925a5ab7a550b710addeadbf6f72e3a8a4b (git)
Affected: 309bba39c945ac8ab8083ac05cd6cfe5822968e0 , < 78dc7362662fedaa1928fb8e4f27401c8322905d (git)
Affected: 309bba39c945ac8ab8083ac05cd6cfe5822968e0 , < baa37b1c7e29546f79c39bef0d18c4edc9f39bb1 (git)
Affected: 309bba39c945ac8ab8083ac05cd6cfe5822968e0 , < cfa0654402c06d086201a9ff167eb95da5844fc3 (git)
Affected: 309bba39c945ac8ab8083ac05cd6cfe5822968e0 , < 82a8d0fda55b35361ee7f35b54fa2b66d7847d2b (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.0
Unaffected: 0 , < 6.0 (semver)
Unaffected: 6.1.156 , ≤ 6.1.* (semver)
Unaffected: 6.6.112 , ≤ 6.6.* (semver)
Unaffected: 6.12.53 , ≤ 6.12.* (semver)
Unaffected: 6.17.3 , ≤ 6.17.* (semver)
Unaffected: 6.18 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/vhost/vringh.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "db042925a5ab7a550b710addeadbf6f72e3a8a4b",
              "status": "affected",
              "version": "309bba39c945ac8ab8083ac05cd6cfe5822968e0",
              "versionType": "git"
            },
            {
              "lessThan": "78dc7362662fedaa1928fb8e4f27401c8322905d",
              "status": "affected",
              "version": "309bba39c945ac8ab8083ac05cd6cfe5822968e0",
              "versionType": "git"
            },
            {
              "lessThan": "baa37b1c7e29546f79c39bef0d18c4edc9f39bb1",
              "status": "affected",
              "version": "309bba39c945ac8ab8083ac05cd6cfe5822968e0",
              "versionType": "git"
            },
            {
              "lessThan": "cfa0654402c06d086201a9ff167eb95da5844fc3",
              "status": "affected",
              "version": "309bba39c945ac8ab8083ac05cd6cfe5822968e0",
              "versionType": "git"
            },
            {
              "lessThan": "82a8d0fda55b35361ee7f35b54fa2b66d7847d2b",
              "status": "affected",
              "version": "309bba39c945ac8ab8083ac05cd6cfe5822968e0",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/vhost/vringh.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.156",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.17.*",
              "status": "unaffected",
              "version": "6.17.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.156",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.112",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.53",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17.3",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvhost: vringh: Modify the return value check\n\nThe return value of copy_from_iter and copy_to_iter can\u0027t be negative,\ncheck whether the copied lengths are equal."
        }
      ],
      "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 vringh IOTLB copy path is driven entirely through local ioctls on the `/dev/vhost-vdpa-N` character device (VHOST_IOTLB_UPDATE, vring setup, kick), with no network-facing consumer. A malicious guest cannot trigger it because it cannot unmap the host-side VA backing, so the attacker must be a local process.\nAC:L - The attacker deterministically forces the short copy by registering an IOTLB mapping over a shared file mapping and then truncating/unmapping it, so `copy_from_user` faults at a chosen offset every time \u2014 no race or unpredictable state is involved. The stale-stack values feeding `hdr.sector` and `struct vring_desc` are groomable with ordinary syscalls.\nPR:L - `vhost_vdpa_open()` and the vhost-vdpa ioctl handlers contain no `capable()`/`CAP_*` checks, so any user holding the device node can drive the full path, and in standard virtualization deployments that node is granted to an unprivileged VMM process. Only device *creation* needs admin, which is the normal host configuration, not an attacker step.\nUI:N - The attacker performs every step itself \u2014 map, truncate, kick the virtqueue \u2014 within its own process. No victim action or interaction is required.\nS:U - The corruption and disclosure occur in the host kernel that already governs the attacking process; this is standard local kernel compromise. No IOMMU, VM, or sandbox authority boundary is crossed by the bug itself.\nC:H - A silently-swallowed short pull causes `vdpasim_net_work()` to push a full PAGE_SIZE of the non-zeroed `kvmalloc` buffer `net-\u003ebuffer` into the attacker\u0027s RX ring, directly disclosing stale kernel heap. Additionally the uninitialized `hdr.sector` drives `vringh_iov_push_iotlb(..., blk-\u003ebuffer + offset, ...)` past the wrapped `VDPASIM_BLK_CAPACITY - start_sector` guard, giving an out-of-bounds kernel heap read echoed back to the attacker.\nI:H - In `vdpasim_blk_handle_req()` the uninitialized stack `hdr.sector` becomes the destination offset for `vringh_iov_pull_iotlb(..., blk-\u003ebuffer + (sector \u003c\u003c SECTOR_SHIFT), to_pull)`, an out-of-bounds kernel heap write of attacker-supplied data at a groomable offset. `__vringh_iov()` likewise builds iov entries whose `iov_base`/`iov_len` come from uninitialized kernel stack, giving further attacker-influenced memory corruption.\nA:H - Descriptors and request headers fabricated from uninitialized kernel stack yield bogus IOVAs and lengths up to 4 GB, and the resulting out-of-bounds heap accesses and invalid `pfn_to_page()`/page translations cause kernel oops or panic. The condition is repeatable at will from a single unprivileged process."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:07:22.761Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/db042925a5ab7a550b710addeadbf6f72e3a8a4b"
        },
        {
          "url": "https://git.kernel.org/stable/c/78dc7362662fedaa1928fb8e4f27401c8322905d"
        },
        {
          "url": "https://git.kernel.org/stable/c/baa37b1c7e29546f79c39bef0d18c4edc9f39bb1"
        },
        {
          "url": "https://git.kernel.org/stable/c/cfa0654402c06d086201a9ff167eb95da5844fc3"
        },
        {
          "url": "https://git.kernel.org/stable/c/82a8d0fda55b35361ee7f35b54fa2b66d7847d2b"
        }
      ],
      "title": "vhost: vringh: Modify the return value check",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-40051",
    "datePublished": "2025-10-28T11:48:27.279Z",
    "dateReserved": "2025-04-16T07:20:57.157Z",
    "dateUpdated": "2026-08-05T12:07:22.761Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-40051",
      "date": "2026-09-15",
      "epss": "0.00154",
      "percentile": "0.0489"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-40051\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-10-28T12:15:39.273\",\"lastModified\":\"2026-07-30T06:24:08.410\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nvhost: vringh: Modify the return value check\\n\\nThe return value of copy_from_iter and copy_to_iter can\u0027t be negative,\\ncheck whether the copied lengths are equal.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/vhost/vringh.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"309bba39c945ac8ab8083ac05cd6cfe5822968e0\",\"lessThan\":\"db042925a5ab7a550b710addeadbf6f72e3a8a4b\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"309bba39c945ac8ab8083ac05cd6cfe5822968e0\",\"lessThan\":\"78dc7362662fedaa1928fb8e4f27401c8322905d\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"309bba39c945ac8ab8083ac05cd6cfe5822968e0\",\"lessThan\":\"baa37b1c7e29546f79c39bef0d18c4edc9f39bb1\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"309bba39c945ac8ab8083ac05cd6cfe5822968e0\",\"lessThan\":\"cfa0654402c06d086201a9ff167eb95da5844fc3\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"309bba39c945ac8ab8083ac05cd6cfe5822968e0\",\"lessThan\":\"82a8d0fda55b35361ee7f35b54fa2b66d7847d2b\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/vhost/vringh.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.0\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.0\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.156\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.112\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.53\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.17.3\",\"lessThanOrEqual\":\"6.17.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/78dc7362662fedaa1928fb8e4f27401c8322905d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/82a8d0fda55b35361ee7f35b54fa2b66d7847d2b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/baa37b1c7e29546f79c39bef0d18c4edc9f39bb1\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/cfa0654402c06d086201a9ff167eb95da5844fc3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/db042925a5ab7a550b710addeadbf6f72e3a8a4b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T08:53:18+00:00",
      "cve": "CVE-2025-40051",
      "id": "CVE-2025-40051",
      "initial_release_date": "2025-10-28T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: vhost: vringh: Modify the return value check",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-40051.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-11T01:56:21Z",
      "cve": "CVE-2025-40051",
      "id": "CVE-2025-40051",
      "initial_release_date": "2025-10-30T00:25:01Z",
      "product_status:first_fixed": "2",
      "product_status:known_affected": "461",
      "product_status:known_not_affected": "323",
      "product_status:recommended": "470",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-40051",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-40051.json",
      "version": "41"
    }
  }
}



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…