【活用ガイド】

JVNDB-2026-021975

Zephyr ProjectのZephyrにおける解放済みメモリの使用に関する脆弱性

概要

ZephyrのネイティブIPv4スタックにおいて、subsys/net/ip/icmpv4.c内のicmpv4_handle_echo_request()関数はエコー応答パケット(reply)を構築し、net_try_send_data()に渡します。送信が成功すると、net_stats_update_icmp_sent(net_pkt_iface(reply))を呼び出します。net_try_send_data()はreplyの所有権をTXパス(net_if_try_queue_tx - net_if_tx - L2/ドライバ送信、または非同期のnet_if_tx_thread)に移し、TXパスはrefcountを0にしてstruct net_pktをスラブに返却(net_pkt_unref - k_mem_slab_free)する可能性があります。そのため、統計情報更新の行が実行される前に解放されてしまうことがあります。net_core.cにはこの契約が明記されており(「pktはすでにガベージを含む可能性があるため…その後pktを使用しないこと」)、これに該当します。したがって、送信後のnet_pkt_iface(reply)は解放済み(かつ再利用されている可能性がある)net_pktからreply-ifaceを読み取っており、use-after-freeの読み込みにつながります。CONFIG_NET_STATISTICS_PER_INTERFACEが有効な場合、統計マクロはさらにこの値を通じてカウンタをインクリメントするため、解放済みまたは再利用されたポインタを介したデリファレンスや書き込みが発生します。このパスは、リモートホストが認証なしにデバイスにpingを送るだけで到達可能であり(net_icmpv4_input - net_icmp_call_ipv4_handlers - icmpv4_handle_echo_request)、CONFIG_NET_STATISTICS_ICMPの設定に依存します。影響としては、再利用されたパケットメモリの確率的な読み込みとタイミングレースによる可能性のあるワイルドポインタ書き込みが発生し、主にインターフェース統計の破損やリモートからの攻撃によるクラッシュ(DoS)につながります。この欠陥は2019年(v1.14)に導入され、v4.4.0まで存在しました。net_icmpv4_send_error()の関連変更は、送信中も生存している呼び出し元所有の受信パケットnet_pkt_iface(orig)を読み取るため、use-after-freeは発生しません。修正内容は、送信前に生存中の受信パケットからインターフェースポインタをキャッシュし、送信後の統計更新にそれを使用することです。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 4.8 (警告) [NVD値]
  • 攻撃元区分: ネットワーク
  • 攻撃条件の複雑さ: 高
  • 攻撃に必要な特権レベル: 不要
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): 低
  • 可用性への影響(A): 低
影響を受けるシステム


Zephyr Project
  • Zephyr 1.14.0 以上 4.5.0 未満

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う情報の一部が書き換えられる可能性があります。
・当該ソフトウェアの一部が停止する可能性があります。
対策

ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

GitHub
CWEによる脆弱性タイプ一覧  CWEとは?

  1. 解放済みメモリの使用(CWE-416) [その他]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-10639
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-10639
  2. 関連文書 : net: ip: icmpv4: fix use-after-free  zephyrproject-rtos/zephyr@86e2166  GitHub
更新履歴

  • [2026年07月02日]
      掲載