{"id":6797,"date":"2026-09-04T18:49:17","date_gmt":"2026-09-04T10:49:17","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72135"},"modified":"2026-09-04T18:49:17","modified_gmt":"2026-09-04T10:49:17","slug":"cve-2026-72135","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72135","title":{"rendered":"CVE-2026-72135 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntpm: Make the TPM cha"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tpm: Make the TPM character devices non-seekable<\/p>\n<p>The TPM character devices expose a sequential command\/response<br \/>\ninterface, but their open handlers leave FMODE_PREAD and FMODE_PWRITE<br \/>\nenabled.<\/p>\n<p>After a command leaves a response pending, pread(fd, buf, 16, 0x1400)<br \/>\npasses 0x1400 as *off to tpm_common_read(). The transfer length is<br \/>\nbounded by response_length, but the offset is used unchecked when<br \/>\nforming data_buffer + *off. A sufficiently large offset therefore causes<br \/>\nan out-of-bounds heap read through copy_to_user() and, if the copy<br \/>\nsucceeds, an out-of-bounds zero-write through the following memset().<\/p>\n<p>Positional I\/O does not provide coherent semantics for this interface.<br \/>\nAn arbitrary pread offset cannot represent how much of a response has<br \/>\nbeen consumed sequentially. The write callback always stores a command<br \/>\nat the start of data_buffer, while pwrite() does not update file-&gt;f_pos<br \/>\nand can leave the sequential read cursor stale.<\/p>\n<p>Call nonseekable_open() from both open handlers. This removes<br \/>\nFMODE_PREAD and FMODE_PWRITE, causing positional reads and writes to<br \/>\nfail with -ESPIPE before reaching the TPM callbacks, and explicitly<br \/>\nmarks the files non-seekable. Normal read() and write() continue to use<br \/>\nthe existing sequential f_pos cursor, leaving the response state machine<br \/>\nunchanged.<\/p>\n<p>Tested on Linux 6.12 with KASAN and a swtpm TPM2 device:<\/p>\n<p> &#8211; sequential partial reads returned the complete response<br \/>\n &#8211; pread() and preadv() with offset 0x1400 returned -ESPIPE<br \/>\n &#8211; pwrite() and pwritev() with offset zero returned -ESPIPE<br \/>\n &#8211; the pending response remained intact after the rejected operations<br \/>\n &#8211; a subsequent normal command\/response cycle completed normally<br \/>\n &#8211; no KASAN report was produced.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tpm: Make the TPM character devices non-seekable<\/p>\n<p>The TPM character devices expose a sequential command\/response<br \/>\ninterface, but the<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6797","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}