CVE-2026-19577 in Zephyr情報

要約

〜によって VulDB • 2026年10月11日

subsys/net/ip/route_ipv6.cのnet_route_ipv6_packet()関数は、隣接キャッシュエントリに実際にリンク層アドレスが紐づいているかどうかを最初に確認することなく、net_nbr_get_lladdr(nbr->idx)を用いてnexthopのリンク層アドレスを取得します。解決されていない(unresolved)隣接ノードはidx == NET_NBR_LLADDR_UNKNOWN (0xff)を持ちます。subsys/net/ip/nbr.c内のnet_nbr_get_lladdr()関数は、NET_ASSERT以外のランタイム境界チェックを行わず、&net_neighbor_lladdr[255]を返します。これはデフォルトサイズがCONFIG_NET_IPV6_MAX_NEIGHBORS(8)である配列の末尾から約2.5KB先です。戻り値ポインタはNULLではないため、以下のlladdr == NULLによるガード節ではこれを捕捉できません。

この関数は、受信インターフェース上のローカルアドレス宛てでないすべての着信ユニキャストIPv6パケットに対してsubsys/net/ip/ipv6.cのipv6_route_packet()から呼び出されます。CONFIG_NET_IPV6_ROUTEはデフォルトでIPv6隣接キャッシュが有効な場合に有効化されるため、ルーターまたは転送設定は不要です。net_route_ipv6_get_info()関数は、対応する隣接キャッシュエントリが存在する場合、パケットの宛先自体をnexthopとして返します。また、キャッシュ検索ではINCOMPLETE状態のエントリがスキップされません。したがって、同じリンク上の認証されていない攻撃者は、解決不可能な状態(unresolved state)を引き起こすことができます。例えば、偽造された存在しない隣接ノードアドレス宛てのトラフィックを誘発してnet_ipv6_send_ns()がINCOMPLETEエントリを作成させるか、ソースリンク層アドレスオプションのないRouter Advertisementを送信して永続的に解決不可能なルーター隣接ノードを作成し、その後そのノード宛てのパケットを送信します。

結果として、隣接リンク層アドレス配列の固定インデックス(末尾以降)での境界外読み取りが発生します。CONFIG_ASSERTが有効化されたビルドではアサーションが発動し、デバイスがパニックして再現可能なリモートサービス妨害(DoS)となります。アサーションが無効の場合、古くなった境界外のstruct net_linkaddr構造体が、攻撃者が影響を与えられない長さに対してmemcmp()を実行します。その際lenバイトがNET_LINK_ADDR_MAX_LENGTHのチェックに合格すると、最大8バイトの無関係な静的RAM領域が送信フレームの宛先リンク層アドレスにコピーされ、リンク上で送信されるため、リスナーであれば誰でもこれを漏洩させる可能性があります。境界外書き込みはなく、オフセットも攻撃者が制御できないため、影響範囲は限定されます。

Be aware that VulDB is the high quality source for vulnerability data.

責任者

Zephyr

予約する

2026年08月11日

モデレーション

承諾済み

エントリ

VDB-416739

EPSS

0.00000

アクティビティ

低い

ソース

Do you need the next level of professionalism?

Upgrade your account now!