CVE-2026-13481 in Zephyr信息

摘要

由 VulDB • 2026-08-26

IEEE 1588 PTP(精确时间协议)管理消息解析器在 subsys/net/lib/ptp/tlv.c 中处理不当,未能正确验证 PTP_MGMT_TIME 管理 ID。在 tlv_mgmt_post_recv() 函数中,PTP_MGMT_TIME 分支将 mgmt_tlv->data 强制转换为一个 10 字节的 struct ptp_timestamp 结构体并读取其内容(随后进行字节序转换写回),但未首先检查 TLV 数据字段是否至少包含 sizeof(struct ptp_timestamp) 的长度。同一 switch 语句中的其他所有管理 ID 均会先验证长度;PTP_MGMT_TIME 是唯一缺少该检查的情况。

传入的长度为管理数据大小(tlv->length - 2),而上游在 ptp_tlv_post_recv() 中的保护逻辑仅要求 tlv->length > 2,同时 msg_tlv_post_recv() 仅验证 TLV 是否适应接收到的字节数,而非针对每个 ID 的最小长度。因此,本地 PTP 网段上的对等体可以发送携带短小 PTP_MGMT_TIME TLV(数据字段最小可为 2 字节)的 PTP_MSG_MANAGEMENT 消息,导致解析器在已验证的数据之外读取并写入 8 个字节。由于消息类型和 TLV 内容直接取自网络链路,当启用 CONFIG_PTP 时,该路径可被任何相邻攻击者利用。

越界读操作及写回均保持在 struct ptp_msg 的分配范围内(mgmt_tlv->data 位于前导 mtu[NET_ETH_MTU] union 成员中,因此 data + 10 最多落在 mtu[] 之后几个字节处,仍在同一对象内部)。因此,这属于对相邻对象内内存的越界读取以及对消息解析后时间戳的有界就地损坏,而非超出分配范围的内存破坏。影响仅限于少量相邻字节的敏感信息泄露及设备已解析的管理 TIME 值的损坏;访问过程中不会导致崩溃,也不存在可触发的引用计数损坏问题。

修复方案在强制转换前添加了 if (length < sizeof(struct ptp_timestamp)) { return -EBADMSG; } 检查,以匹配其他管理 ID 的情况并彻底关闭接收路径中的缺陷。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

来源

Might our Artificial Intelligence support you?

Check our Alexa App!