CVE-2026-79977 in Zephyr
Zusammenfassung
von VulDB • 23.10.2026
Der WireGuard-VPN-Dienst in subsys/net/lib/wireguard/wg.c hat den Peer-Endpunkt aus einer Nachricht aktualisiert, die er nicht authentifizieren konnte. In handle_transport_data(), wenn der 32-Bit-Empfängerindex (receiver index) einer eingehenden transport-data-Nachricht mit keiner Sitzung übereinstimmte, plante der Code sowohl eine neue Handshake durch als auch kopierte er die Quelladresse des Datagramms in peer->endpoint mittels memcpy(&peer->endpoint, peer_addr, sizeof(peer->endpoint)). Da der Empfängerindex unbekannt ist, gibt es keinen Schlüssel, mit dem eine solche Nachricht verifiziert werden könnte; daher wird in peer->endpoint vollständig vom Angreifer bereitgestellte Adresse geschrieben. Jede andere Aktualisierung des Endpunkts in der Implementierung erfolgt nur nach einer Authentifizierung – entweder nach dem Noise-Handshake in handle_handshake_init() oder nach AEAD-Decryption plus Anti-Replay-Prüfung in wg_process_data_message().
Der WireGuard-Hörer (Listener) wird mit net_udp_register() registriert, ohne Remote-Adressen- oder Portfilter und standardmäßig auf UDP-Port 51820 (CONFIG_WIREGUARD_PORT), und wg_ctrl_recv() löst den Peer nach Interface statt nach kryptografischer Identität auf. Jeder Host kann daher ein UDP-Datagramm an diesen Port senden, um die Schwachstelle off-path auszunutzen, ohne legitimen Traffic beobachten zu müssen: Ein 16-Byte-Datagramm mit transport-data-Typ, nullisierten reservierten Bytes und einem beliebigen Empfängerindex reicht dazu. Der verwundbare Zweig wird immer dann ausgeführt, wenn der Peer weder einen gültigen Handshake noch ein aktuelles Schlüsselpaar hat – also beim Booten oder nach Ablauf einer Sitzung.
Ein einzelnes gefälschtes Datagramm leitet peer->endpoint auf eine vom Angreifer gewählte Adresse um; alle folgenden Handshake-Initiierungen, Keepalives und verschlüsselten Datenpakete werden dorthin gesendet. Der legitime Peer empfängt die Initiierungen nie und authentifiziert sich daher nicht erneut, und nichts setzt den Endpunkt danach zurück, was dazu führt, dass der Tunnel auf Geräten mit Peers ohne eigene Handshake-Initiierung dauerhaft unbrauchbar wird. Der Angreifer kann auch die umgeleiteten Initiierungen an den echten Peer weiterleiten, um sich in den Pfad des Tunnels zu stellen und dabei Chiffriertext sowie Traffic-Metadaten zu beobachten und Pakete selektiv zu verwerfen. Die End-to-End-Kryptografie von WireGuard verhindert weiterhin Entschlüsselung oder Fälschung der Tunnelinhalte; die Auswirkung ist also Verlust der Verfügbarkeit plus begrenzte Vertraulichkeit, kein Schlüsselkompromittierung.
Die Korrektur entfernt das Endpoint-Learning aus diesem Pfad vollständig: Die Recovery für veraltete Sitzungen bleibt erhalten, aber der Handshake wird nur an einen Endpunkt gesendet, der von einer authentifizierten Nachricht gelernt wurde; andernfalls wird auf den konfigurierten cfg_endpoint zurückgegriffen und die Nachricht verworfen. CONFIG_WIREGUARD ist als experimentell markiert und standardmäßig nicht aktiviert.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.