{"id":27236,"date":"2026-09-22T04:30:45","date_gmt":"2026-09-21T20:30:45","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-17052"},"modified":"2026-09-22T04:30:45","modified_gmt":"2026-09-21T20:30:45","slug":"cve-2026-17052","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-17052","title":{"rendered":"CVE-2026-17052 [HIGH] &#8211; The Time-aware GPIO syscall verification handler z_vrfy_tgpio_pin_read_ts_ec() in drivers\/"},"content":{"rendered":"<p>The Time-aware GPIO syscall verification handler z_vrfy_tgpio_pin_read_ts_ec() in drivers\/timeaware_gpio\/timeaware_gpio_handlers.c validated only the port device object and passed the caller-supplied timestamp and event_count output pointers to the driver without a K_SYSCALL_MEMORY_WRITE() check. The other handlers in the same file (z_vrfy_tgpio_port_get_time(), z_vrfy_tgpio_port_get_cycles_per_second()) already performed that check, so the omission left one syscall unguarded.<\/p>\n<p>tgpio_pin_read_ts_ec() is declared __syscall, so with CONFIG_USERSPACE=y an unprivileged user-mode thread that has been granted access to the TGPIO device object can invoke it with arbitrary pointer values. tgpio_intel_read_ts_ec() in drivers\/timeaware_gpio\/timeaware_gpio_intel.c bounds-checks only the pin index and then unconditionally performs timestamp = &#8230; and event_count = &#8230;, executing two 8-byte stores in supervisor mode at addresses chosen by the user-mode caller.<\/p>\n<p>The result is a write-what-where primitive that crosses the userspace\/kernel boundary: the target address is fully attacker-chosen and the stored values are the hardware time-capture and event-counter register contents. Corrupting kernel data structures this way can escalate the calling thread to supervisor privilege or crash the system; the device-object permission required is a narrow capability that is not intended to confer any kernel-memory access. The fix adds the two missing K_SYSCALL_MEMORY_WRITE() validations before the driver call.<\/p>\n<p>Exposure is narrow in practice. Only builds with CONFIG_USERSPACE=y and CONFIG_TIMEAWARE_GPIO=y compile the affected file, and from v3.6.0 onward the file additionally referenced a relocated header () and removed Z_SYSCALL_* macros, so such a configuration failed to build until those were repaired after v4.4.0. Downstream trees that locally corrected that breakage, and v3.5.0 builds where it did not exist, are the exposed population.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Time-aware GPIO syscall verification handler z_vrfy_tgpio_pin_read_ts_ec() in drivers\/timeaware_gpio\/timeaware_gpio_handlers.c validated only the port device object and passed the caller-supplied <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-27236","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/27236","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=27236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=27236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=27236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}