Files
vuln-cve/data/2026/45xxx/CVE-2026-45945.json
T

211 lines
11 KiB
JSON

{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-45945",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-05-13T15:03:33.088Z",
"datePublished": "2026-05-27T12:18:01.345Z",
"dateUpdated": "2026-10-19T19:26:40.294Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-05T12:28:52.094Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/vt-d: Fix race condition during PASID entry replacement\n\nThe Intel VT-d PASID table entry is 512 bits (64 bytes). When replacing\nan active PASID entry (e.g., during domain replacement), the current\nimplementation calculates a new entry on the stack and copies it to the\ntable using a single structure assignment.\n\n struct pasid_entry *pte, new_pte;\n\n pte = intel_pasid_get_entry(dev, pasid);\n pasid_pte_config_first_level(iommu, &new_pte, ...);\n *pte = new_pte;\n\nBecause the hardware may fetch the 512-bit PASID entry in multiple\n128-bit chunks, updating the entire entry while it is active (Present\nbit set) risks a \"torn\" read. In this scenario, the IOMMU hardware\ncould observe an inconsistent state — partially new data and partially\nold data — leading to unpredictable behavior or spurious faults.\n\nFix this by removing the unsafe \"replace\" helpers and following the\n\"clear-then-update\" flow, which ensures the Present bit is cleared and\nthe required invalidation handshake is completed before the new\nconfiguration is applied."
}
],
"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 vulnerable replace path is reached only through local IOMMUFD/VFIO ioctls (`/dev/iommu` device PASID domain replacement); there is no network or remote-peer path to this code.\nAC:L - Although it is a hardware/software race on the 128-bit-chunked entry fetch, the attacker controls both sides — driving continuous device DMA (forcing frequent entry fetches) while repeatedly issuing the replacement ioctl — so the torn-entry window is reliably reachable through repetition.\nPR:L - Triggering domain replacement requires IOMMUFD/VFIO access to an assigned device, which is gated by device-file permissions rather than an init-namespace root capability check; a confined VMM/user granted passthrough suffices.\nUI:N - The replacement and concurrent DMA are entirely attacker-driven; no action by another user is needed.\nS:C - The flaw is in the IOMMU DMA-isolation structure, and a torn PASID entry can let a device's DMA escape its assigned domain — an IOMMU/DMA boundary bypass that crosses the security authority of the affected component.\nC:H - A torn page-table-pointer field can cause the IOMMU to translate device DMA through stale/corrupt tables, allowing the device to read host or other-domain physical memory across the isolation boundary.\nI:H - The same mistranslation gives the device a write primitive into memory outside its domain, enabling corruption of host/other-domain memory.\nA:H - The commit explicitly notes the torn entry causes \"unpredictable behavior or spurious faults,\" which can manifest as IOMMU faults, device failures, or kernel crashes."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/iommu/intel/iommu.c",
"drivers/iommu/intel/nested.c",
"drivers/iommu/intel/pasid.c",
"drivers/iommu/intel/pasid.h"
],
"versions": [
{
"version": "7543ee63e8113aa34b07df3b16b3b9d2c5f73939",
"lessThan": "4718007870547e1efebbdd6745d9fce58f008fef",
"status": "affected",
"versionType": "git"
},
{
"version": "7543ee63e8113aa34b07df3b16b3b9d2c5f73939",
"lessThan": "66a7aff480a82b8642b3991fed5fdc9780022157",
"status": "affected",
"versionType": "git"
},
{
"version": "7543ee63e8113aa34b07df3b16b3b9d2c5f73939",
"lessThan": "c3b1edea3791fa91ab7032faa90355913ad9451b",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/iommu/intel/iommu.c",
"drivers/iommu/intel/nested.c",
"drivers/iommu/intel/pasid.c",
"drivers/iommu/intel/pasid.h"
],
"versions": [
{
"version": "6.13",
"status": "affected"
},
{
"version": "0",
"lessThan": "6.13",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.39",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.19.4",
"lessThanOrEqual": "6.19.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.0",
"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": "6.13",
"versionEndExcluding": "6.18.39"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.13",
"versionEndExcluding": "6.19.4"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.13",
"versionEndExcluding": "7.0"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/4718007870547e1efebbdd6745d9fce58f008fef"
},
{
"url": "https://git.kernel.org/stable/c/66a7aff480a82b8642b3991fed5fdc9780022157"
},
{
"url": "https://git.kernel.org/stable/c/c3b1edea3791fa91ab7032faa90355913ad9451b"
}
],
"title": "iommu/vt-d: Fix race condition during PASID entry replacement",
"x_generator": {
"engine": "bippy-1.2.0"
}
},
"adp": [
{
"metrics": [
{
"other": {
"type": "ssvc",
"content": {
"id": "CVE-2026-45945",
"role": "CISA Coordinator",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-10-16T15:18:33.300582Z"
}
}
}
],
"problemTypes": [
{
"descriptions": [
{
"lang": "en",
"type": "CWE",
"cweId": "CWE-362",
"description": "CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')"
}
]
}
],
"title": "CISA ADP Vulnrichment",
"providerMetadata": {
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP",
"dateUpdated": "2026-10-19T19:26:40.294Z"
}
}
]
}
}