CVE-2026-79977 in Zephyr情報

要約

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

WireGuard VPNサービス(subsys/net/lib/wireguard/wg.c)は、認証できないメッセージからピアエンドポイントを更新していました。handle_transport_data()関数内では、着信するtransport-dataメッセージの32ビット受信インデックスがどのセッションにも一致しない場合、コードは新しいハンドシェイクをスケジュールするとともに、memcpy(&peer->endpoint, peer_addr, sizeof(peer->endpoint))を用いてデータグラム送信元アドレスをpeer->endpointにコピーしていました。受信インデックスが不明であるため、そのようなメッセージを検証するためのキーが存在せず、peer->endpointに書き込まれるアドレスは完全に攻撃者によって供給されたものとなります。実装における他のすべてのエンドポイント更新処理は、認証後(handle_handshake_init()内のNoiseハンドシェイク後、またはwg_process_data_message()内でのAEAD復号およびリプレイ防止チェック後)のみ行われます。

WireGuardリスナーはnet_udp_register()を使用して登録されており、リモートアドレスやポートのフィルタリングは一切適用されず、デフォルトではUDPポート51820(CONFIG_WIREGUARD_PORT)を使用します。また、wg_ctrl_recv()関数は暗号的なIDではなくインターフェースに基づいてピアを解決します。そのため、任意のホストがそのポート宛てにUDPデータグラムを送信することで、正当なトラフィックを観測する必要なくオフパスでこの欠陥を利用できます。transport-dataタイプ、ゼロ埋めされた予約バイト、および任意の受信インデックスを含む16バイトのデータグラムがあれば十分です。ピアの有効なハンドシェイクや現在のキーペアがない場合(起動時やセッション期限切れ後)、脆弱な分岐が実行されます。

単一のなりすましデータグラムによりpeer->endpointは攻撃者が指定したアドレスにリダイレクトされ、その後のすべてのハンドシェイク開始、キープアライブ、暗号化されたデータパケットはその宛先に送信されます。正当なピアはこれらの開始を受信しないため再認証せず、エンドポイントがその後でリセットされることもないため、ピア自身がハンドシェイクを開始しないデバイスではトンネルが一貫して使用不可能になります。攻撃者はさらに、リダイレクトされた開始を実際のピアに中継することでトンパスの経路に自身を組み入れ、暗号文やトラフィックメタデータを観察し、パケットを選択的にドロップすることができます。WireGuardのエンドツーエンド暗号化によりトンネルコンテンツの復号や偽造は防止されるため、影響は可用性の喪失と限定的な機密性の低下であり、キーの侵害には至りません。

修正ではこのパスからのエンドポイント学習を完全に削除しました。ステールセッションのリカバリ機能は維持されますが、ハンドシェイクは認証されたメッセージから学習したエンドポイントに対してのみ送信され、該当しない場合は設定済みのcfg_endpointにフォールバックし、どちらも不明な場合はメッセージがドロップされます。CONFIG_WIREGUARDは実験的としてマークされており、デフォルトでは有効化されていません。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Zephyr

予約する

2026年08月25日

モデレーション

承諾済み

エントリ

VDB-426018

EPSS

0.00000

アクティビティ

低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!