{"id":"CVE-2026-80747","state":"PUBLISHED","title":"drm/amdkfd: Add bounds check for CRAT subtype length","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdkfd: Add bounds check for CRAT subtype length\n\nThe CRAT parser validates that the subtype header fits within the image,\nbut does not verify that the advertised subtype length fits. A malformed\nCRAT table with an oversized length field causes out-of-bounds reads when\nkfd_parse_subtype() casts the header to specific subtype structures.\n\nAdd validation that sub_type_hdr + length does not exceed the image\nboundary before parsing the subtype contents.\n\n(cherry picked from commit 48e1d1e6e8798aef0312e68d8e586021b5b3cf4d)","publishedAt":"2026-09-03T08:26:28.938Z","updatedAt":"2026-10-30T12:31:04.327Z","severity":{"score":8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"1f9cc5375916b57acb1ad4443af7b4dbf347638a","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"fef8c8afcb85dce5ff115f82a148cdf87a9617b9","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"77b659fb104eb069ea7a61960699e4d1eea6567a","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"69164d6bdad5d6657e51436a3f602822f620a46a","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"ca91e0cc8087568e4b791648a7c01e804f48cb73","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"6e7566ba4739dd573c331adde1c96690f7a567bd","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/amdkfd/kfd_crat.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.19","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.10","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/amdkfd/kfd_crat.c"]}],"references":["https://git.kernel.org/stable/c/1f9cc5375916b57acb1ad4443af7b4dbf347638a","https://git.kernel.org/stable/c/fef8c8afcb85dce5ff115f82a148cdf87a9617b9","https://git.kernel.org/stable/c/77b659fb104eb069ea7a61960699e4d1eea6567a","https://git.kernel.org/stable/c/69164d6bdad5d6657e51436a3f602822f620a46a","https://git.kernel.org/stable/c/ca91e0cc8087568e4b791648a7c01e804f48cb73","https://git.kernel.org/stable/c/6e7566ba4739dd573c331adde1c96690f7a567bd"],"weaknesses":[],"ingestedAt":"2026-10-30T12:50:04.827Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/80xxx/CVE-2026-80747.json","commit":"1f312381e38164a43607eebab851b151dd16861e","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-80747","state":"PUBLISHED","datePublished":"2026-09-03T08:26:28.938Z","dateUpdated":"2026-10-30T12:31:04.327Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-26T14:34:25.790Z"},"containers":{"cna":{"title":"drm/amdkfd: Add bounds check for CRAT subtype length","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdkfd: Add bounds check for CRAT subtype length\n\nThe CRAT parser validates that the subtype header fits within the image,\nbut does not verify that the advertised subtype length fits. A malformed\nCRAT table with an oversized length field causes out-of-bounds reads when\nkfd_parse_subtype() casts the header to specific subtype structures.\n\nAdd validation that sub_type_hdr + length does not exceed the image\nboundary before parsing the subtype contents.\n\n(cherry picked from commit 48e1d1e6e8798aef0312e68d8e586021b5b3cf4d)"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"1f9cc5375916b57acb1ad4443af7b4dbf347638a","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"fef8c8afcb85dce5ff115f82a148cdf87a9617b9","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"77b659fb104eb069ea7a61960699e4d1eea6567a","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"69164d6bdad5d6657e51436a3f602822f620a46a","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"ca91e0cc8087568e4b791648a7c01e804f48cb73","versionType":"git"},{"version":"5b5c4e40a37e858e2bff8cd91be8e972256392c4","status":"affected","lessThan":"6e7566ba4739dd573c331adde1c96690f7a567bd","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/amdkfd/kfd_crat.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.19","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.10","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/amdkfd/kfd_crat.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/1f9cc5375916b57acb1ad4443af7b4dbf347638a"},{"url":"https://git.kernel.org/stable/c/fef8c8afcb85dce5ff115f82a148cdf87a9617b9"},{"url":"https://git.kernel.org/stable/c/77b659fb104eb069ea7a61960699e4d1eea6567a"},{"url":"https://git.kernel.org/stable/c/69164d6bdad5d6657e51436a3f602822f620a46a"},{"url":"https://git.kernel.org/stable/c/ca91e0cc8087568e4b791648a7c01e804f48cb73"},{"url":"https://git.kernel.org/stable/c/6e7566ba4739dd573c331adde1c96690f7a567bd"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H","baseScore":8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable kfd_parse_crat_table() runs only during amdgpu/amdkfd bring-up (kfd_topology_init at module load and kfd_topology_add_device on GPU probe). On affected kernels, ACPI CRAT is copied from firmware via acpi_get_table(\"CRAT\"); there is no network, ioctl, or /dev/kfd path to this parser.\nAC:L - A malicious ACPI CRAT can set subtype length so only the 8-byte generic header fits in the remaining image while kfd_parse_subtype() casts to larger structs (cache, CU, iolink). The out-of-bounds read is deterministic at boot with no races or attacker-uncontrollable memory layout.\nPR:N - Exploitation requires only a crafted ACPI CRAT in platform firmware/UEFI parsed automatically at boot via kfd_create_crat_image_acpi(). No Linux user account, capability, or /dev/kfd access is needed; only control of firmware-supplied CRAT contents before KFD topology initialization.\nUI:N - CRAT parsing occurs automatically during kernel boot and amdgpu/KFD module initialization when topology is built. No user mount, file open, or other discretionary action is required beyond powering on hardware that contains the malicious ACPI table.\nS:U - Impact is confined to kernel heap out-of-bounds reads and corrupted topology metadata within the host kernel security domain. This is not a guest/host VM escape, container sandbox breakout, or IOMMU/DMA boundary bypass.\nC:H - kfd_parse_subtype() casts the generic header to large subtype structures and reads past the CRAT buffer boundary (e.g., cache sibling_map[32], iolink, computeunit fields). Leaked adjacent kernel heap bytes populate topology objects exposed via world-readable /sys/class/kfd/kfd/topology/ attributes (0444).\nI:L - Out-of-bounds read values (sizes, proximity domains, sibling maps, bandwidth fields) are stored into kmalloc'd kernel topology structures (mem_props, cache_props, io_link_props), modifying kernel metadata with attacker-influenced data derived from reads past the allocation.\nA:H - Out-of-bounds reads during early init can dereference unmapped pages and trigger a kernel oops or panic during amdgpu/KFD bring-up. Related malformed-CRAT parser bugs at the same code path also cause infinite-loop denial of service, confirming high availability impact from CRAT parsing flaws."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:31:04.327Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.6.160"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.12.114"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.18.57"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"7.1.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}