{
  "schemaVersion": 1,
  "attribution": [
    {
      "source": "CISA Known Exploited Vulnerabilities",
      "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
      "licence": "US government work"
    },
    {
      "source": "GitHub Advisory Database",
      "url": "https://github.com/advisories",
      "licence": "CC BY 4.0"
    },
    {
      "source": "Have I Been Pwned",
      "url": "https://haveibeenpwned.com/",
      "licence": "CC BY 4.0"
    },
    {
      "source": "CVE Program (CVE records)",
      "url": "https://www.cve.org/Legal/TermsOfUse",
      "licence": "CVE Terms of Use",
      "notice": "Copyright © 1999-2026, The MITRE Corporation. CVE is a trademark and the CVE logo is a registered trademark of The MITRE Corporation.",
      "terms": "CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE™). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy."
    },
    {
      "source": "FIRST EPSS",
      "url": "https://www.first.org/epss/",
      "licence": "free to use; FIRST requests attribution"
    }
  ],
  "record": {
    "id": "CVE-2026-74580",
    "sourceURL": "https://www.cve.org/CVERecord?id=CVE-2026-74580",
    "idYear": 2026,
    "status": "PUBLISHED",
    "publishedAt": "2026-08-21T16:31:54.076Z",
    "updatedAt": "2026-10-16T19:05:57.882Z",
    "importedAt": "2026-10-24T01:58:30.346Z",
    "snapshot": {
      "id": "cve_2026-10-24_midnight_baseline",
      "at": "2026-10-24T00:00:00.000Z",
      "source": "https://github.com/CVEProject/cvelistV5/releases/tag/cve_2026-10-24_0100Z"
    },
    "facts": {
      "title": "vhost: reset the vring metadata cache on vring reconfiguration",
      "summary": "In the Linux kernel, the following vulnerability has been resolved:\n\nvhost: reset the vring metadata cache on vring reconfiguration\n\nvq->meta_iotlb[] caches the vhost_iotlb_map that backs each vring\nmetadata region, and iotlb_access_ok() returns early on a cache hit,\ntaking the hit as proof that the region has already been validated:\n\n\tif (vhost_vq_meta_fetch(vq, addr, len, type))\n\t\treturn true;\n\nThe cache is reset on VHOST_IOTLB_UPDATE and VHOST_IOTLB_INVALIDATE, on\ndevice IOTLB (re)initialisation and on vq reset, but not when\nVHOST_SET_VRING_ADDR replaces vq->desc, vq->avail and vq->used, nor when\nVHOST_SET_VRING_NUM changes the region sizes.\n\nWith a device IOTLB attached both ioctls are accepted while the vq is\nlive, and neither validates the addresses at ioctl time: vq_access_ok()\nand vq_log_used_access_ok() return true early because the addresses are\nGIOVAs, deferring validation to prefetch time.  Once the cache has been\npopulated that deferred validation no longer runs -- vq_meta_prefetch()\nhits the stale entry and returns true -- and vhost_vq_meta_fetch() keeps\ntranslating through the old mapping as\n\n\tmap->addr + addr - map->start\n\nfor an address the mapping no longer covers.  vhost_copy_to_user() and\nvhost_copy_from_user() consume the result with __copy_to_user() and\n__copy_from_user(), which do not check it either, so a subsequent used\nring update or descriptor fetch accesses memory outside the region the\nIOTLB actually maps.\n\nReset the metadata cache whenever the vring is reconfigured, so the new\naddresses are pushed back through iotlb_access_ok()'s slow path.",
      "affected": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "5224bd37e37d36076a550d99b2aebba33939fd95"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "54617e9119be2eb728ecdd8d977b99c99d4c498a"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "13fa6f32a56a386a82bd7451644c494beed034af"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "cf363a7a02ce132ef1f58084fdb13e1a3b7da7e7"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "6fa3e9b1fe856259555a7e22f3f3082e7827fd9b"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "f1e21108e3ddfcce62f6cad4ebd7b5674543c9e6"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "b70ebe0bba254e093dd5fd4c0c170941ce83eb85"
            },
            {
              "version": "f889491380582b4ba2981cf0b0d7d6a40fb30ab7",
              "status": "affected",
              "versionType": "git",
              "lessThan": "de845981da67a6b049080c87e605130b0c30adc5"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "4.11",
              "status": "affected"
            },
            {
              "version": "0",
              "status": "unaffected",
              "versionType": "semver",
              "lessThan": "4.11"
            },
            {
              "version": "5.10.265",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "version": "5.15.216",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "version": "6.1.183",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "version": "6.6.152",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.6.*"
            },
            {
              "version": "6.12.104",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "version": "6.18.45",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "version": "7.1.9",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "7.1.*"
            },
            {
              "version": "7.2",
              "status": "unaffected",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ]
        }
      ]
    }
  }
}