| タイトル | Zephyr ProjectのZephyrにおける解放済みメモリの使用に関する脆弱性 |
|---|---|
| 概要 | ZephyrのIPv6近隣探索送信パス(subsys/net/ip/ipv6_nbr.c内のnet_ipv6_send_na、net_ipv6_send_ns、net_ipv6_send_rs)では、net_send_data(pkt)が正常に戻った後にnet_pkt_iface(pktを呼び出してインターフェイスごとのICMP送信統計を更新していました。成功時のパスではネットワークスタックがパケットの参照を所有し、解放します(L2/ドライバの送信時にunref、例: ethernet_send - net_pkt_unref)。そのため、参照カウント1の新たに割り当てられたパケットは統計更新処理が実行される前にnet_pktスラブブロックが解放される可能性があります(TXキュースレッドが無い場合は同期的に、ある場合は同時並行で実行されます)。その後のnet_pkt_iface(pkt)は解放されたスラブブロックからpkt-ifaceを読み取り、CONFIG_NET_STATISTICS_PER_INTERFACEが有効であればそのポインタを逆参照してiface-stats.icmp.sentをインクリメントし、Use-After-Free(CWE-416)が発生します。途中でスラブブロックが再割り当てされていた場合、読み取りやインクリメントは無関係または攻撃者に操作されたメモリを対象としており、統計の破損、故障やクラッシュ(サービス拒否)、限定的なメモリ破損を引き起こす可能性があります。脆弱なNeighbor Advertisement送信の経路はネイティブIPv6が有効なZephyrノードにICMPv6 Neighbor Solicitationを送信する任意の認証されていないオンリンクノードから到達可能です(handle_ns_input - net_ipv6_send_na)。v3.3.0からv4.4.0まで影響を受けており、修正では送信パケットを触る代わりに既存のiface引数を使用しています。インターフェイスごとの統計を持たない設定ではグローバルカウンタのみを逆参照しており、メモリ安全性の問題は発生しません。 |
| 想定される影響 | ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報の一部が書き換えられる可能性があります。 ・当該ソフトウェアが完全に停止する可能性があります。 |
| 対策 | ベンダ情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年6月16日0:00 |
| 登録日 | 2026年6月29日11:21 |
| 最終更新日 | 2026年6月29日11:21 |
| CVSS3.0 : 重要 | |
| スコア | 7.1 |
|---|---|
| ベクター | CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H |
| Zephyr Project |
| Zephyr 3.3.0 以上 4.5.0 未満 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年06月29日] 掲載 |
2026年6月29日11:21 |
| 概要 | Zephyr's IPv6 Neighbor Discovery send paths (net_ipv6_send_na, net_ipv6_send_ns, net_ipv6_send_rs in subsys/net/ip/ipv6_nbr.c) updated the per-interface ICMP-sent statistics by calling net_pkt_iface(pkt) after net_send_data(pkt) had already returned successfully. On the success path the network stack owns and releases the packet's reference (the L2/driver send unrefs it, e.g. ethernet_send - net_pkt_unref), so for a freshly allocated packet with refcount 1 the net_pkt slab block can be freed before the statistics line runs (synchronously when no TX queue thread is configured, or via a concurrent TX thread otherwise). The subsequent net_pkt_iface(pkt) reads pkt-iface from the freed slab block, and with CONFIG_NET_STATISTICS_PER_INTERFACE enabled that loaded pointer is dereferenced to increment iface-stats.icmp.sent, a use-after-free (CWE-416). If the slab block was reallocated in the meantime the read/increment targets unrelated or attacker-influenced memory, yielding corrupted statistics, a fault/crash (denial of service), or potential limited memory corruption. The vulnerable Neighbor Advertisement path is reachable by any unauthenticated on-link node simply by sending ICMPv6 Neighbor Solicitations to a Zephyr node with native IPv6 enabled (handle_ns_input - net_ipv6_send_na). Affected from v3.3.0 through v4.4.0; the fix uses the already-available iface argument instead of touching the sent packet. Configurations without per-interface statistics dereference only a global counter and are not affected by the memory-safety aspect. |
|---|---|
| 公表日 | 2026年6月17日0:16 |
| 登録日 | 2026年6月17日4:18 |
| 最終更新日 | 2026年6月17日0:23 |