CVE-2026-13734 in Zephyr
要約
〜によって VulDB • 2026年08月29日
ZephyrのWireGuard VPNデータプレーン受信ハンドラwg_process_data_message()(subsys/net/lib/wireguard/wg_crypto.c内)は、アンチリプレイカウンターを検証するのが遅すぎた。MESSAGE_TRANSPORT_DATAパケットのAEAD復号が成功した後、コードはいくつかのピア状態変更—update_peer_addr()(エンドポイントローミング更新)、keypair->last_rx/peer->last_rxライブネスタイマー、およびkeypair_update()(次→現在のキーペアへの昇格と以前のキーペアの破棄)—を実行し、その後でwg_check_replay()を呼び出した。リプレイされたパケットの場合、リプレイチェックは-EINVALを返したが、先行する状態変更はいずれもロールバックされなかった。
AEADタグはコンテンツの認証を行うが、鮮度(freshness)までは保証しないため、リプレイされた正当なトランスポートパケットは正しく復号される。攻撃者はネットワーク上から有効な暗号文を1つ傍受する(パス内または共有メディア上の観測者として)だけでよく、任意のなりすまし送信元アドレスからそれを再注入できる。このハンドラに到達するには認証情報が必要ない:subsys/net/lib/wireguard/wg.c内のディスパッチを通じて、着信UDPデータグラムによって直接駆動されるためである。
リプレイチェックの前にコミットされた状態変更のため、リプレイはピアエンドポイントを攻撃者が選んだ送信元アドレスへ向ける(ローミングハイジャック)、これにより被害者のその後のアウトバウンドトンネルトラフィックが正当なピアの次パケットが届くまで再方向付けされる;また、以前のキーペアを早期に破棄し、RXライブネスタイマーを更新する。トンネリングペイロードはセッションキーペアの下で暗号化されたままのため、これは機密性ではなく整合性と可用性への影響(トラフィックのリダイレクトとセッションの中断)である。修正ではwg_check_replay()を成功した復号直後、いかなるピア状態変更の前へ移動させ、WireGuard仕様およびLinuxリファレンス実装に一致させている。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.