CVE-2026-72135 is a heap corruption vulnerability in the Linux kernel's TPM character device driver that exposes a class-level API design failure, not an isolated TPM defect. The root cause is straightforward: the TPM interface is a sequential command/response stream built around cursor-based response consumption, but the open handler never called nonseekable_open(), leaving FMODE_PREAD and FMODE_PWRITE enabled when they should have been impossible. An attacker with an active TPM session can trigger out-of-bounds heap writes by exploiting the offset computation against the data_buffer pointer while the kernel copies response data to userspace. The KASAN reports confirm the heap corruption; the EPSS score of 0.00164 reflects the specific preconditions required (active session, address guessing), not the severity of the potential outcome.
The one-line fix—adding nonseekable_open() to the TPM open handler—touches no TPM-specific code because the problem was never in the TPM implementation. The sequential state machine logic is correct; only the VFS layer API surface was misconfigured. This is precisely the failure mode that occurs when subsystem authors inherit framework defaults without auditing them against their specific interface semantics.
What makes this CVE analytically significant is the historical pattern. The same sequential-protocol-through-positional-interface failure appeared in CVE-2009-2692 and multiple subsequent CVEs across tty subsystems and other character devices. Each instance triggers a fresh one-line fix commit, treating rediscovery as discovery. The kernel has lost institutional memory of this vulnerability class at least four times in fifteen years, not because the fix is unknown, but because the genealogy of the flaw class is never documented. The real risk isn't the TPM exposure—it's that dozens of other character device drivers likely inherit the same positional I/O defaults for protocols that never supported random access. The fix is trivial; the detection gap is the systemic problem. Audit your character device drivers for nonseekable_open() compliance if you haven't already.