{"id":"CVE-2026-98728","kind":"vulnerability","aliases":["CVE-2026-98728"],"related":[],"title":"Linux kernel TPM driver: off-by-four check leaks stale memory into random bytes","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ntpm: fix off-by-four bounds check in tpm2_get_random()\n\nWhen the response carries the TPM2_ST_SESSIONS tag, tpm2_get_random()\nskips the 4-byte parameter size field before locating the random data,\nbut the bounds check still validates the response length against\nTPM_HEADER_SIZE.  A truncated response can pass the check and make\nmemcpy() read up to 4 bytes past the response end, so stale buffer\ncontents end up in the caller's random bytes.\n\nFix this by checking the response length against 'offset', which\nalready includes the skipped parameter size field.","summary":"The Linux kernel's TPM random-number path checks the response length against the wrong offset, so a truncated TPM response lets memcpy() read up to 4 bytes past the buffer end. The stale bytes end up in the random data handed to the caller.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["linux-kernel","runtime","self-hosted","tpm"],"not_affected_if":["no-tpm-hardware"],"how_to_check":"- unknown","fix":"- Update to a Linux kernel release that includes the tpm2_get_random() bounds-check fix (version unknown from sources)","status":"open","published_at":"2026-10-18T16:17:26+00:00","first_seen_at":"2026-10-23T21:57:16+00:00","triaged_at":"2026-10-25T05:17:16+00:00","updated_at":"2026-10-25T05:17:16+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-25T05:17:16Z","model":"claude-haiku-5-5","output":{"fix":"- Update to a Linux kernel release that includes the tpm2_get_random() bounds-check fix (version unknown from sources)","reach":"local","title":"Linux kernel TPM driver: off-by-four check leaks stale memory into random bytes","impact":"low","summary":"The Linux kernel's TPM random-number path checks the response length against the wrong offset, so a truncated TPM response lets memcpy() read up to 4 bytes past the buffer end. The stale bytes end up in the random data handed to the caller.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","tpm","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"stale kernel memory bytes leak into caller's random output","analyst_note":"Check the kernel fix commit and affected stable version ranges, since the sources only give the NVD description.","how_to_check":"- unknown","needs_analyst":true,"not_affected_if":["no-tpm-hardware"],"who_is_affected":"Systems running a Linux kernel with a TPM 2.0 chip whose driver calls tpm2_get_random(), where a malformed or truncated TPM response can occur. Impact is limited to information disclosure of kernel memory bytes in random output. Systems without a TPM or with an unaffected kernel can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000589,"input_tokens":3428,"output_tokens":493,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':17A,20A '-98728':18A,21A '4':57B,112C,148C 'alreadi':176C 'bound':92C,124C 'buffer':61B,156C 'byte':15A,58B,65B,113C,149C,165C 'caller':75B,162C 'carri':101C 'check':9A,39B,93C,125C,141C,169C 'content':157C 'cve':16A,19A 'data':71B,121C 'driver':4A 'end':62B,66B,153C,158C 'field':116C,182C 'fix':87C,166C 'follow':81C 'four':8A,91C 'get':96C,108C 'hand':72B 'header':133C 'host':28B 'includ':177C 'kernel':2A,24B,32B,79C 'leak':10A 'length':42B,130C,172C 'let':52B 'linux':1A,23B,31B,78C 'linux-kernel':22B 'locat':118C 'make':143C 'memcpi':53B,144C 'memori':12A 'number':37B 'off-by-four':5A,88C 'offset':46B,174C 'paramet':114C,180C 'pass':139C 'past':59B,150C 'path':38B 'random':14A,36B,70B,97C,109C,120C,164C 'random-numb':35B 'read':54B,145C 'resolv':85C 'respons':41B,51B,100C,129C,137C,152C,171C 'runtim':25B 'self':27B 'self-host':26B 'session':105C 'size':115C,134C,181C 'skip':110C,179C 'st':104C 'stale':11A,64B,155C 'still':126C 'tag':106C 'tpm':3A,29B,34B,50B,86C,132C 'tpm2':95C,103C,107C 'truncat':49B,136C 'valid':127C 'vulner':82C 'wrong':45B","nicknames":[],"mitigations":[],"who_affected":"Systems running a Linux kernel with a TPM 2.0 chip whose driver calls tpm2_get_random(), where a malformed or truncated TPM response can occur. Impact is limited to information disclosure of kernel memory bytes in random output. Systems without a TPM or with an unaffected kernel can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T16:17:26+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98728","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98728","severity":null,"published_at":"2026-10-18T16:17:26+00:00","modified_at":"2026-10-19T10:19:36+00:00","first_seen_at":"2026-10-23T21:57:16+00:00","fetched_at":"2026-10-23T22:28:56+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}