{"id":26428,"date":"2026-09-19T00:31:36","date_gmt":"2026-09-18T16:31:36","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-16512"},"modified":"2026-09-19T00:31:36","modified_gmt":"2026-09-18T16:31:36","slug":"cve-2026-16512","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-16512","title":{"rendered":"CVE-2026-16512 [LOW] &#8211; gptp_handle_msg() in subsys\/net\/l2\/ethernet\/gptp\/gptp.c dereferenced the gPTP header retur"},"content":{"rendered":"<p>gptp_handle_msg() in subsys\/net\/l2\/ethernet\/gptp\/gptp.c dereferenced the gPTP header returned by GPTP_HDR() and switched on hdr-&gt;message_type without first checking that the received frame carries at least sizeof(struct gptp_hdr) (34) bytes of payload. The header accessor gptp_get_hdr() deliberately never fails for a short buffer \u2014 it returns pkt-&gt;frags-&gt;data and leaves validation to its callers \u2014 so a truncated frame produced a header pointer covering memory beyond the received data. The per-message-type checks that follow do not compensate: GPTP_VALID_LEN() reduces to len &gt; 60 once the Ethernet header has been pulled, which is false for every fixed-size gPTP message, so GPTP_CHECK_LEN() never rejects a truncated SYNC, FOLLOWUP, PDELAY_RESP or SIGNALING message.<\/p>\n<p>The defect is reached by an unauthenticated peer on the same link sending an Ethernet frame with ethertype 0x88F7 to the PTP multicast address on an interface configured as a gPTP port, with CONFIG_NET_GPTP enabled. Because conformant Ethernet pads frames to 60 bytes, a payload shorter than 34 bytes generally requires a link that can deliver sub-minimum frames \u2014 for example the native_sim TAP driver (drivers\/ethernet\/eth_native_tap.c), which forwards whatever length the host device supplies, or a MAC configured to accept undersized frames.<\/p>\n<p>The short packet is retained (net_pkt_ref() into rcvd_sync_ptr, rcvd_follow_up_ptr, rcvd_pdelay_resp_ptr or rcvd_announce_ptr) and later parsed by the media-dependent and media-independent state machines in subsys\/net\/l2\/ethernet\/gptp\/gptp_md.c and subsys\/net\/l2\/ethernet\/gptp\/gptp_mi.c, which read tens of further bytes and copy some of them (the announce priority vector, hdr-&gt;port_id) into state that is subsequently transmitted. Under the default fixed-size buffer allocator (CONFIG_NET_BUF_FIXED_DATA_SIZE, 128-byte fragments) the accesses stay inside the allocated fragment and disclose stale recycled buffer contents; under the experimental CONFIG_NET_BUF_VARIABLE_DATA_SIZE allocator, where fragments are heap-allocated at the exact frame length, they are genuine out-of-bounds reads. There is no write and no availability impact.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>gptp_handle_msg() in subsys\/net\/l2\/ethernet\/gptp\/gptp.c dereferenced the gPTP header returned by GPTP_HDR() and switched on hdr-&gt;message_type without first checking that the received frame carries at <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-26428","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/26428","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=26428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}