CVE-2026-16514: bounds in zephyrproject zephyr
gptp_mi_qualify_announce() in subsys/net/l2/ethernet/gptp/gptp_mi.c walks the Path Trace TLV of a received IEEE 802.1AS Announce message, comparing each clock identity against the local one. The loop bound was taken solely from the attacker-controlled wire field announce->steps_removed (accepted up to 254), never from announce->tlv.len, which is the field that states how many identities the TLV actually carries. Because path_sequence is the flexible member of the wire TLV (struct gptp_path_trace_tlv) and GPTP_ANNOUNCE() yields a raw pointer into the received packet buffer, the memcmp() inside the loop can address memory well past the end of the received frame. The stack's only length validation, GPTP_ANNOUNCE_CHECK_LEN(), requires the received gPTP payload to be exactly 68 + tlv.len bytes — so it does not constrain the loop, it guarantees the data is absent. An unauthenticated attacker on the same Ethernet segment can send a single Announce frame declaring tlv.len = 0 with steps_removed = 254; the frame passes the length check and reception path (net_gptp_recv() → gptp_handle_msg() → gptp_mi_qualify_announce()), which performs no authentication, and the loop then reads 255 entries of 8 bytes each — about 2 KB — beyond the end of the network buffer. The impact is an out-of-bounds read. The bytes read are only used as a memcmp() operand and are never returned to the attacker, so there is no meaningful information disclosure; the practical risk is that the overread crosses a network buffer pool boundary into unmapped or MPU-protected memory and faults the networking RX thread, causing a denial of service. Exposure is limited to builds that enable the opt-in, experimental CONFIG_NET_GPTP (TSN/AVB deployments) and to attackers with layer-2 adjacency, since gPTP frames are sent to a link-local multicast address and are not routed. The fix computes the true entry count as tlv.len / GPTP_CLOCK_ID_LEN and rejects the announce when steps_removed + 1 exceeds it, so the loop can no longer run past the data the packet-length check proved present.
AI Analysis
Technical Summary
The vulnerability resides in the gptp_mi_qualify_announce() function of Zephyr's gPTP implementation, where the loop iterating over the Path Trace TLV entries uses the attacker-controlled announce->steps_removed field as the loop bound instead of the actual length announce->tlv.len. This causes the loop to read memory beyond the received packet buffer during a memcmp() operation. Although the data read is not returned to the attacker, the out-of-bounds read can cross memory boundaries and cause a fault in the networking RX thread, resulting in denial of service. The vulnerability requires layer-2 adjacency and affects builds with the experimental CONFIG_NET_GPTP enabled. The patch fixes the issue by computing the true entry count from tlv.len and rejecting packets where steps_removed exceeds the valid range.
Potential Impact
The vulnerability causes an out-of-bounds read that can lead to a denial of service by crashing the networking receive thread. There is no information disclosure or code execution risk. The attack requires an unauthenticated attacker on the same Ethernet segment and affects only systems with the experimental gPTP feature enabled.
Mitigation Recommendations
A fix is available that properly validates the loop bounds by computing the true entry count from tlv.len and rejecting malformed Announce frames where steps_removed exceeds this count. Users should upgrade to Zephyr version 4.4.2 or later where this vulnerability is patched. No additional mitigations are indicated.
CVE-2026-16514: bounds in zephyrproject zephyr
Description
gptp_mi_qualify_announce() in subsys/net/l2/ethernet/gptp/gptp_mi.c walks the Path Trace TLV of a received IEEE 802.1AS Announce message, comparing each clock identity against the local one. The loop bound was taken solely from the attacker-controlled wire field announce->steps_removed (accepted up to 254), never from announce->tlv.len, which is the field that states how many identities the TLV actually carries. Because path_sequence is the flexible member of the wire TLV (struct gptp_path_trace_tlv) and GPTP_ANNOUNCE() yields a raw pointer into the received packet buffer, the memcmp() inside the loop can address memory well past the end of the received frame. The stack's only length validation, GPTP_ANNOUNCE_CHECK_LEN(), requires the received gPTP payload to be exactly 68 + tlv.len bytes — so it does not constrain the loop, it guarantees the data is absent. An unauthenticated attacker on the same Ethernet segment can send a single Announce frame declaring tlv.len = 0 with steps_removed = 254; the frame passes the length check and reception path (net_gptp_recv() → gptp_handle_msg() → gptp_mi_qualify_announce()), which performs no authentication, and the loop then reads 255 entries of 8 bytes each — about 2 KB — beyond the end of the network buffer. The impact is an out-of-bounds read. The bytes read are only used as a memcmp() operand and are never returned to the attacker, so there is no meaningful information disclosure; the practical risk is that the overread crosses a network buffer pool boundary into unmapped or MPU-protected memory and faults the networking RX thread, causing a denial of service. Exposure is limited to builds that enable the opt-in, experimental CONFIG_NET_GPTP (TSN/AVB deployments) and to attackers with layer-2 adjacency, since gPTP frames are sent to a link-local multicast address and are not routed. The fix computes the true entry count as tlv.len / GPTP_CLOCK_ID_LEN and rejects the announce when steps_removed + 1 exceeds it, so the loop can no longer run past the data the packet-length check proved present.
CVSS v3.1
Score 4.3medium
Affected software
zephyrproject
zephyr
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability resides in the gptp_mi_qualify_announce() function of Zephyr's gPTP implementation, where the loop iterating over the Path Trace TLV entries uses the attacker-controlled announce->steps_removed field as the loop bound instead of the actual length announce->tlv.len. This causes the loop to read memory beyond the received packet buffer during a memcmp() operation. Although the data read is not returned to the attacker, the out-of-bounds read can cross memory boundaries and cause a fault in the networking RX thread, resulting in denial of service. The vulnerability requires layer-2 adjacency and affects builds with the experimental CONFIG_NET_GPTP enabled. The patch fixes the issue by computing the true entry count from tlv.len and rejecting packets where steps_removed exceeds the valid range.
Potential Impact
The vulnerability causes an out-of-bounds read that can lead to a denial of service by crashing the networking receive thread. There is no information disclosure or code execution risk. The attack requires an unauthenticated attacker on the same Ethernet segment and affects only systems with the experimental gPTP feature enabled.
Mitigation Recommendations
A fix is available that properly validates the loop bounds by computing the true entry count from tlv.len and rejecting malformed Announce frames where steps_removed exceeds this count. Users should upgrade to Zephyr version 4.4.2 or later where this vulnerability is patched. No additional mitigations are indicated.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-07-21T21:42:59.661Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6aad6b0955bf5e2cf5419294
Added to database: 09/18/2026, 16:47:05 UTC
Last enriched: 09/18/2026, 17:02:02 UTC
Last updated: 09/18/2026, 22:12:51 UTC
Views: 8
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.