348 lines
18 KiB
JSON
348 lines
18 KiB
JSON
{
|
||
"dataType": "CVE_RECORD",
|
||
"dataVersion": "5.2",
|
||
"cveMetadata": {
|
||
"cveId": "CVE-2026-64475",
|
||
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
|
||
"state": "PUBLISHED",
|
||
"assignerShortName": "Linux",
|
||
"dateReserved": "2026-07-19T15:36:31.791Z",
|
||
"datePublished": "2026-07-25T08:51:38.154Z",
|
||
"dateUpdated": "2026-10-19T20:48:36.746Z"
|
||
},
|
||
"containers": {
|
||
"cna": {
|
||
"providerMetadata": {
|
||
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
|
||
"shortName": "Linux",
|
||
"dateUpdated": "2026-08-17T04:56:21.493Z"
|
||
},
|
||
"descriptions": [
|
||
{
|
||
"lang": "en",
|
||
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvfio/pci: Release the VGA arbiter client on register_device() failure\n\nThe re-order in the Fixes commit below displaced vfio_pci_vga_init() as\nthe last failure point of what is now vfio_pci_core_register_device()\nwithout introducing an unwind for the VGA arbiter registration.\n\nIn current kernels this is mostly benign because vfio_pci_set_decode()\nonly uses pci_dev state, but the original failure path could leave a\ncallback with a freed vdev cookie. The stale registration also becomes\nunsafe again once the callback follows drvdata to the vfio device.\n\nAdd the required VGA unwind callout."
|
||
}
|
||
],
|
||
"metrics": [
|
||
{
|
||
"cvssV3_1": {
|
||
"version": "3.1",
|
||
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
|
||
"baseScore": 8.8,
|
||
"baseSeverity": "HIGH"
|
||
},
|
||
"scenarios": [
|
||
{
|
||
"lang": "en",
|
||
"value": "AV:L - The flaw is triggered through local `/dev/vga_arbiter` operations or accesses to a delegated VFIO VGA region; it is not directly network-reachable. The VGA-arbiter character-device interface is documented in the [kernel documentation](https://docs.kernel.org/gpu/vgaarbiter.html).\nAC:L - Once failed VFIO registration leaves the stale callback, a single first-use VGA lock or legacy VGA access invokes it. No race must be won, and the attacker controls the triggering access.\nPR:L - The failed bind may arise from boot or privileged orchestration, but the subsequent callback path has no capability check and can be triggered by a video-group user, delegated VFIO process, or VM tenant. Real host-root privileges are therefore not required in a reasonable deployment.\nUI:N - The attacker directly performs the VGA-arbiter or VFIO-region access, with no victim action required during exploitation. Prior system configuration or automated device binding is not user interaction.\nS:C - With VFIO GPU passthrough, QEMU translates guest legacy-VGA accesses into VFIO `pread()` and `pwrite()` operations, allowing a guest to activate the stale host callback and potentially compromise the host kernel across the VM boundary, as shown by [QEMU’s VFIO VGA implementation](https://gitlab.com/qemu-project/qemu/-/blob/e5b3a241 81ea0cebf1c5b20f44d016311b7048f0/hw/vfio/pci.c).\nC:H - Historical affected branches retain a callback cookie pointing to a freed `struct vfio_pci_device`; reclaiming that allocation can control its embedded `pdev` pointer and redirect kernel pointer dereferences. Under conservative UAF assessment, this can enable disclosure of arbitrary host memory.\nI:H - The dangling object and potentially stale module callback create exploitable memory-lifetime corruption that can be heap-shaped toward control-flow hijacking or arbitrary kernel modification. Successful exploitation can therefore execute code in the host kernel.\nA:H - An invalid reclaimed `pdev` or unloaded callback target can immediately produce a kernel page fault, oops, or panic. The trigger requires only one attacker-controlled VGA access after the stale registration exists."
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"affected": [
|
||
{
|
||
"product": "Linux",
|
||
"vendor": "Linux",
|
||
"defaultStatus": "unaffected",
|
||
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
|
||
"programFiles": [
|
||
"drivers/vfio/pci/vfio_pci_core.c"
|
||
],
|
||
"versions": [
|
||
{
|
||
"version": "87856f9af04eaacf9848710625a4ffee1d020fa9",
|
||
"lessThan": "0f2a35a0c7ea7da347b814750eaa78adf3582381",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "8d65decde9afd2bd78bcfffdc0df73b82a0b5509",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "ef4c38d30b3744e89eb5048218904bb629ea8d47",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "9e0a3f642e607848669235f5069f35640abbfc88",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "42d758a09d2c46c42357ecde9a5492f015bde2e5",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "52adb2dff7ce3d8430e2bdc5988b618a430def85",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "278a5659c391fe5afe5f9ce1bad1fd24e90144f1",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "4aeec3984ddc853f7c65903bde472ffdef738bae",
|
||
"lessThan": "daedde7f024ecf88bc8e832ed40cf2c795f0796a",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "d62dccb417cf972c978bf3c68a7d5e846bcf953e",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "6694b8daffac5a8661071f085608afc78f7acd08",
|
||
"status": "affected",
|
||
"versionType": "git"
|
||
},
|
||
{
|
||
"version": "5.10.37",
|
||
"lessThan": "5.10.261",
|
||
"status": "affected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "5.11.21",
|
||
"lessThan": "5.12",
|
||
"status": "affected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "5.12.4",
|
||
"lessThan": "5.13",
|
||
"status": "affected",
|
||
"versionType": "semver"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"product": "Linux",
|
||
"vendor": "Linux",
|
||
"defaultStatus": "affected",
|
||
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
|
||
"programFiles": [
|
||
"drivers/vfio/pci/vfio_pci_core.c"
|
||
],
|
||
"versions": [
|
||
{
|
||
"version": "5.13",
|
||
"status": "affected"
|
||
},
|
||
{
|
||
"version": "0",
|
||
"lessThan": "5.13",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "5.10.261",
|
||
"lessThanOrEqual": "5.10.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "5.15.212",
|
||
"lessThanOrEqual": "5.15.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "6.1.178",
|
||
"lessThanOrEqual": "6.1.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "6.6.145",
|
||
"lessThanOrEqual": "6.6.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "6.12.96",
|
||
"lessThanOrEqual": "6.12.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "6.18.39",
|
||
"lessThanOrEqual": "6.18.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "7.1.4",
|
||
"lessThanOrEqual": "7.1.*",
|
||
"status": "unaffected",
|
||
"versionType": "semver"
|
||
},
|
||
{
|
||
"version": "7.2",
|
||
"lessThanOrEqual": "*",
|
||
"status": "unaffected",
|
||
"versionType": "original_commit_for_fix"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"cpeApplicability": [
|
||
{
|
||
"nodes": [
|
||
{
|
||
"operator": "OR",
|
||
"negate": false,
|
||
"cpeMatch": [
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.10.37",
|
||
"versionEndExcluding": "5.10.261"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "5.15.212"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "6.1.178"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "6.6.145"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "6.12.96"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "6.18.39"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "7.1.4"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.13",
|
||
"versionEndExcluding": "7.2"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.11.21"
|
||
},
|
||
{
|
||
"vulnerable": true,
|
||
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
||
"versionStartIncluding": "5.12.4"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"references": [
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/0f2a35a0c7ea7da347b814750eaa78adf3582381"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/8d65decde9afd2bd78bcfffdc0df73b82a0b5509"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/ef4c38d30b3744e89eb5048218904bb629ea8d47"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/9e0a3f642e607848669235f5069f35640abbfc88"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/42d758a09d2c46c42357ecde9a5492f015bde2e5"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/52adb2dff7ce3d8430e2bdc5988b618a430def85"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/278a5659c391fe5afe5f9ce1bad1fd24e90144f1"
|
||
},
|
||
{
|
||
"url": "https://git.kernel.org/stable/c/daedde7f024ecf88bc8e832ed40cf2c795f0796a"
|
||
}
|
||
],
|
||
"title": "vfio/pci: Release the VGA arbiter client on register_device() failure",
|
||
"x_generator": {
|
||
"engine": "bippy-1.2.0"
|
||
}
|
||
},
|
||
"adp": [
|
||
{
|
||
"metrics": [
|
||
{
|
||
"other": {
|
||
"type": "ssvc",
|
||
"content": {
|
||
"id": "CVE-2026-64475",
|
||
"role": "CISA Coordinator",
|
||
"options": [
|
||
{
|
||
"Exploitation": "none"
|
||
},
|
||
{
|
||
"Automatable": "no"
|
||
},
|
||
{
|
||
"Technical Impact": "total"
|
||
}
|
||
],
|
||
"version": "2.0.3",
|
||
"timestamp": "2026-10-16T15:41:16.888282Z"
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"problemTypes": [
|
||
{
|
||
"descriptions": [
|
||
{
|
||
"lang": "en",
|
||
"type": "CWE",
|
||
"cweId": "CWE-416",
|
||
"description": "CWE-416 Use After Free"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"title": "CISA ADP Vulnrichment",
|
||
"providerMetadata": {
|
||
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
|
||
"shortName": "CISA-ADP",
|
||
"dateUpdated": "2026-10-19T20:48:36.746Z"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
} |