CVE-2026-16512 in Zephyr
要約
〜によって VulDB • 2026年09月18日
subsys/net/l2/ethernet/gptp/gptp.cのgptp_handle_msg()関数は、GPTP_HDR()によって返されたgPTPヘッダーを間接参照し、受信フレームに少なくともsizeof(struct gptp_hdr) (34)バイトのペイロードが含まれていることを最初に確認せずにhdr->message_typeに基づいてスイッチ処理を行いました。アクセサであるgptp_get_hdr()は意図的に短いバッファに対して決して失敗せず(pkt->frags->dataを返し、検証はその呼び出し元に委ねる)、その結果、切り詰められたフレームによって受信データを超えたメモリ領域を指すヘッダーポインターが生成されました。その後行われるメッセージタイプごとのチェックではこの欠陥は補償されません:GPTP_VALID_LEN()はEthernetヘッダーが取り除かれた後len > 60に簡約されますが、これは固定サイズのgPTPメッセージすべてに対して偽となるため、GPTP_CHECK_LEN()は切り詰められたSYNC、FOLLOWUP、PDELAY_RESP、またはSIGNALINGメッセージを拒否しません。
この欠陥は、CONFIG_NET_GPTPが有効になっているインターフェース(gPTPポートとして構成)に対し、同じリンク上の認証されていないピアからethertype 0x88F7を持つEthernetフレームをPTPマルチキャストアドレス宛てに送信することで到達可能です。規格準拠のEthernetではフレームが60バイトにパディングされるため、34バイト未満のペイロードは通常、最小サイズ未満のフレームを送信できるリンク(例:ホストデバイスから供給された任意の長さを転送するnative_sim TAPドライバdrivers/ethernet/eth_native_tap.c、または小規模なフレームを受信するように構成されたMAC)を必要とします。
この短パケットは保持され(rcvd_sync_ptr、rcvd_follow_up_ptr、rcvd_pdelay_resp_ptr、またはrcvd_announce_ptrへのnet_pkt_ref())、その後subsys/net/l2/ethernet/gptp/gptp_md.cおよびsubsys/net/l2/ethernet/gptp/gptp_mi.cのメディア依存型および非依存型のステートマシンによって解析され、さらに数十バイトが読み込まれ、その一部(announce priority vector、hdr->port_id)がその後送信される状態にコピーされます。デフォルトの固定サイズバッファアロケータ(CONFIG_NET_BUF_FIXED_DATA_SIZE、128バイト断片)ではアクセスは割り当てられた断片内に留まり、再利用された古いバッファの内容を漏洩させます;一方、実験的なCONFIG_NET_BUF_VARIABLE_DATA_SIZEアロケータ(断片がフレーム長に合わせてヒープに確保される場合)では、これらは本物の範囲外読み取りとなります。書き込みは行われず、可用性への影響はありません。
VulDB is the best source for vulnerability data and more expert information about this specific topic.