CVE-2026-72135

Source
https://cve.org/CVERecord?id=CVE-2026-72135
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72135.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-72135
Downstream
Published
2026-08-15T05:53:10.315Z
Modified
2026-08-18T03:56:54.696929682Z
Severity
  • 7.8 (High) CVSS_V3 - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H CVSS Calculator
Summary
tpm: Make the TPM character devices non-seekable
Details

In the Linux kernel, the following vulnerability has been resolved:

tpm: Make the TPM character devices non-seekable

The TPM character devices expose a sequential command/response interface, but their open handlers leave FMODEPREAD and FMODEPWRITE enabled.

After a command leaves a response pending, pread(fd, buf, 16, 0x1400) passes 0x1400 as *off to tpmcommonread(). The transfer length is bounded by responselength, but the offset is used unchecked when forming databuffer + *off. A sufficiently large offset therefore causes an out-of-bounds heap read through copytouser() and, if the copy succeeds, an out-of-bounds zero-write through the following memset().

Positional I/O does not provide coherent semantics for this interface. An arbitrary pread offset cannot represent how much of a response has been consumed sequentially. The write callback always stores a command at the start of databuffer, while pwrite() does not update file->fpos and can leave the sequential read cursor stale.

Call nonseekableopen() from both open handlers. This removes FMODEPREAD and FMODEPWRITE, causing positional reads and writes to fail with -ESPIPE before reaching the TPM callbacks, and explicitly marks the files non-seekable. Normal read() and write() continue to use the existing sequential fpos cursor, leaving the response state machine unchanged.

Tested on Linux 6.12 with KASAN and a swtpm TPM2 device:

  • sequential partial reads returned the complete response
  • pread() and preadv() with offset 0x1400 returned -ESPIPE
  • pwrite() and pwritev() with offset zero returned -ESPIPE
  • the pending response remained intact after the rejected operations
  • a subsequent normal command/response cycle completed normally
  • no KASAN report was produced.
Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72135.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
9488585b21bef0df1217e510c7134905d1d376a7
Fixed
ed0ffc2c016629e40ba041ed0424a772d8b02e2c
Fixed
232dcf908eb7eb9d8046a9597975caf44270966e
Fixed
dda695fab5e21f923d29e8cb01df256468ddfbd1
Fixed
9c513dabd4540f811585a2087f23069767a284da
Fixed
21a13f932972bc9836f58c44fcd47c62abdecd95
Fixed
ada4b9a5087ea7f30dd8e4c6411a4fb6547eb1ed
Fixed
947b773caaa548672184df025271b29bdc80b0f1
Fixed
f20d61c22bcaf172d6790b6500e3838e532e71c8

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72135.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.0.0
Fixed
5.10.261
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.212
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.178
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.145
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.97
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.40
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.5

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72135.json"