CVE-2026-98687
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: thunderbolt: Reject oversized XDomain properties responses tb_xdp_properties_request() allocates room for 45 data dwords in its 252-byte response buffer. The XDomain length field is six bits wide, however, and a malicious peer can set it to 63. After the fixed response fields are subtracted, the driver treats this as 48 data dwords. Commit 322e93448d90 ("thunderbolt: Clamp XDomain response data copy to allocation size") only bounds the copy against data_len. If data_len is at least 48, memcpy() reads 192 bytes from the 180-byte res->data array, causing a 12-byte heap out-of-bounds read. Commit 4db2bd2ed478 ("thunderbolt: Limit XDomain response copy to actual frame size") limits the earlier copy but does not constrain this header-derived length. Reject response data lengths that exceed the allocated source buffer before copying them into the assembled property block.
View original CVE JSON
{
"id": "CVE-2026-98687",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-10-18T16:17:22.097",
"lastModified": "2026-10-30T13:21:18.240",
"vulnStatus": "Received",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nthunderbolt: Reject oversized XDomain properties responses\n\ntb_xdp_properties_request() allocates room for 45 data dwords in its\n252-byte response buffer. The XDomain length field is six bits wide,\nhowever, and a malicious peer can set it to 63. After the fixed response\nfields are subtracted, the driver treats this as 48 data dwords.\n\nCommit 322e93448d90 (\"thunderbolt: Clamp XDomain response data copy to\nallocation size\") only bounds the copy against data_len. If data_len is\nat least 48, memcpy() reads 192 bytes from the 180-byte res->data array,\ncausing a 12-byte heap out-of-bounds read. Commit 4db2bd2ed478\n(\"thunderbolt: Limit XDomain response copy to actual frame size\") limits\nthe earlier copy but does not constrain this header-derived length.\n\nReject response data lengths that exceed the allocated source buffer\nbefore copying them into the assembled property block."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"drivers/thunderbolt/xdomain.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "9fba032802b5858bc6186b34f8e966429ff155ab",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "7c028d2ae85eca86b82cab1163a9ac1187a2e666",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "37ea4304bd9f57ebe719409f010915495467f05c",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "b270c1074860de74da0d6b5250fb06b359b9d509",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "a766a86ff48acee76aeb8e2575771040749e509d",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "2f97f929dad9eb3e1f63b721d2dd49bf9bc68efa",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "737a1d2e9642d5f718bd29aa4a98b9eef3832f0a",
"versionType": "git",
"status": "affected"
},
{
"version": "d1ff70241a275133e1a0258b7c23588b122276c8",
"lessThan": "80756e263846ab694984e749e8c626897331438f",
"versionType": "git",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"drivers/thunderbolt/xdomain.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "4.15",
"status": "affected"
},
{
"version": "0",
"lessThan": "4.15",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "5.10.273",
"lessThanOrEqual": "5.10.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "5.15.224",
"lessThanOrEqual": "5.15.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.1.191",
"lessThanOrEqual": "6.1.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.6.160",
"lessThanOrEqual": "6.6.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.12.113",
"lessThanOrEqual": "6.12.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.18.56",
"lessThanOrEqual": "6.18.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.2.10",
"lessThanOrEqual": "7.2.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.3",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {},
"references": [
{
"url": "https://git.kernel.org/stable/c/2f97f929dad9eb3e1f63b721d2dd49bf9bc68efa",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/37ea4304bd9f57ebe719409f010915495467f05c",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/737a1d2e9642d5f718bd29aa4a98b9eef3832f0a",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/7c028d2ae85eca86b82cab1163a9ac1187a2e666",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/80756e263846ab694984e749e8c626897331438f",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/9fba032802b5858bc6186b34f8e966429ff155ab",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/a766a86ff48acee76aeb8e2575771040749e509d",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/b270c1074860de74da0d6b5250fb06b359b9d509",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
]
}