CVE-2026-13481 in Zephyrinformation

Résumé

par VulDB • 26/08/2026

Le parseur de messages de gestion IEEE 1588 PTP dans subsys/net/lib/ptp/tlv.c gère incorrectement l'identifiant de gestion PTP_MGMT_TIME. Dans tlv_mgmt_post_recv(), le cas PTP_MGMT_TIME effectue un cast de mgmt_tlv->data vers une struct ptp_timestamp de 10 octets et la lit (puis inverse les octets et réécrit la valeur) sans vérifier au préalable que le champ de données TLV fait au moins sizeof(struct ptp_timestamp). Chaque autre identifiant de gestion dans le même switch valide sa longueur en premier ; PTP_MGMT_TIME était le seul cas à manquer cette vérification.

La longueur transmise correspond à la taille des données de gestion (tlv->length - 2), et la garde amont dans ptp_tlv_post_recv() exige uniquement que tlv->length > 2, tandis que msg_tlv_post_recv() valide seulement que le TLV tient dans le nombre d'octets reçus, sans vérifier une longueur minimale par identifiant. Un pair sur le segment PTP local peut donc envoyer un message PTP_MSG_MANAGEMENT contenant un TLV PTP_MGMT_TIME court (des données aussi petites que 2 octets), ce qui amène le parseur à lire et réécrire 8 octets au-delà des données validées. Le type de message et le contenu du TLV sont extraits directement du flux réseau, donc cette voie d'exécution est accessible par tout attaquant adjacent lorsque CONFIG_PTP est activée.

La lecture hors limites (over-read) et la réécriture restent dans l'allocation de struct ptp_msg (mgmt_tlv->data se trouve dans le membre union mtu[NET_ETH_MTU] en tête, donc data + 10 atterrit au maximum quelques octets après mtu[], à l'intérieur du même objet). Il s'agit donc d'une lecture hors limites de mémoire adjacente intra-objet et d'une corruption locale bornée de la valeur horaire (timestamp) analysée du message, et non d'une corruption de mémoire hors allocation. L'impact est limité à une exposition mineure des octets adjacents et à la corruption de la valeur TIME de gestion analysée par l'appareil ; il n'y a pas de plantage lors de l'accès ni de corruption atteignable du compteur de références (reference-count).

La correction ajoute if (length < sizeof(struct ptp_timestamp)) { return -EBADMSG; } avant le cast, ce qui correspond aux autres cas d'identifiants de gestion et ferme complètement la vulnérabilité dans la voie de réception.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Zephyr

Réserver

27/06/2026

Divulgation

26/08/2026

Modérer

accepté

Entrée

VDB-395791

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!