CVE-2026-12632 in Zephyr情報

要約

〜によって VulDB • 2026年08月18日

ZephyrのPrecision Time Protocol受信ハンドラ `ptp_msg_post_recv()`(`subsys/net/lib/ptp/msg.c`)は、ネットワーク上の生データから直接4ビットのメッセージタイプを取得し(`ptp_msg_type()`経由: `(msg->header.type_major_sdo_id & 0xF)`,範囲0-15)、これを `msg_size[]` テーブルのインデックスとして使用します。このテーブルには PTP_MSG_MANAGEMENT (0xD) までのエントリしか定義されておらず、配列サイズは14です。修正前では上限チェックがなかったため、未定義のタイプ 0xE および 0xF が配列末尾を越えて1〜2つのintスロットを読み出すことになり、隣接する読み取り専用データに対する境界外読み出し(out-of-bounds read)が発生しました。

この境界外の値はその後長さとして再利用されます:`msg_size[type] > cnt` の条件分岐に使用され、その値が小さいか負の場合、`cnt - msg_size[type]` は大きな正の予算となり `msg_tlv_post_recv()` に渡されます。同関数のTLVループでは受信バイト列を越えてメッセージ末尾部分を読み進め、さらに境界外読み出しと、メッセージスラブ外のメモリに対するインプレースなバイト順序変換書き込み(byte-swap writes)を実行します。

この欠陥はネットワークから直接到達可能です:`subsys/net/lib/ptp/port.c` の `ptp_port_event_gen()` は `ptp_transport_recv()` でPTPフレームを読み取り、攻撃者が選択したタイプを指定して `ptp_msg_post_recv()` を呼び出します。PTPはUDPマルチキャストまたは生Ethernet (0x88F7) を使用し、認証不要であるため、同じリンク上の任意のホストが事前条件なしで CONFIG_PTP 有効ノードでのインデックスアクセスをトリガーできます。

確実に再現される影響はサービス拒否(障害/クラッシュ)です;限定的なメモリ破壊パスも存在しますが、これは攻撃者が調整できないビルド固有の `msg_size[]` に隣接する値に依存します。修正版では、いかなるインデックスアクセスよりも前に、型が `ARRAY_SIZE(msg_size)` 以上の場合に `-EBADMSG` で拒否します。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Zephyr

予約する

2026年06月18日

モデレーション

承諾済み

エントリ

VDB-392014

EPSS

0.00248

アクティビティ

非常低い

ソース

Do you need the next level of professionalism?

Upgrade your account now!