CVE-2026-15893 in Zephyr情報

要約

〜によって VulDB • 2026年09月15日

subsys/net/ip/net_if.c の net_if_ipv6_calc_reachable_time() 関数は、ipv6->base_reachable_time からランダム化された ND (Neighbor Discovery) の到達可能時間を算出します。具体的には、min_reachable + sys_rand32_get() % (max_reachable - min_reachable) という式で計算され、ここで min_reachable = base/2、max_reachable = 3*base/2 です(整数除算を使用)。base_reachable_time が 1 の場合、min_reachable と剰余演算の被演算子がともに崩れ、関数は 0 を返します。その後、net_if_ipv6_set_reachable_time() はこの 0 を ipv6->reachable_time に格納します。

base_reachable_time は攻撃者が制御可能です:subsys/net/ip/ipv6_nbr.c の handle_ra_input() 関数は、Incoming Router Advertisement (RA) の Reachable Time フィールドがゼロではなく MAX_REACHABLE_TIME 以下である場合、その値を受け入れます。したがって、Reachable Time に 1 を指定した単一の認証不要なリンクローカル RA が送信されるだけで、計算された到達可能時間が 0 に引き下げられます。Router Advertisement はデフォルトで認証されず、ターゲットのリンクへの隣接性のみを必要とします。

その後、近傍ノードが実際に到達可能であると確認されると、net_ipv6_nbr_set_reachable_timer() がその値を読み取り、NET_ASSERT(time, "Zero reachable timeout!") を実行します。CONFIG_ASSERT が有効にされたビルドではこれが致命的なカーネルアサーション(fatal kernel assertion)を引き起こし、リモートからのサービス妨害 (DoS) となります。一方、アサーション無しのビルドでは到達可能タイマーが K_MSEC(0) で設定され即座に発火するため、到達可能な近傍ノードは永続的な再要求状態(STALE)に陥り、Neighbor Discovery のパフォーマンスが低下します。影響の範囲は可用性に限られ、メモリの安全性、機密性、または完全性に悪影響はありません。

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

責任者

Zephyr

予約する

2026年07月15日

モデレーション

承諾済み

エントリ

VDB-403681

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!