← Back to CVE Explorer

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.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-18 16:17:22.097000
Last modified
2026-10-30 13:21:18.240000
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"
    }
  ]
}