Eine Schwachstelle, die das Eindringen in TCP-Verbindungen ermöglicht, die ĂŒber VPN-Tunnel erfolgen

Veröffentlicht Angriffstechnik (CVE-2019-14899), die es ermöglicht, Pakete in TCP-Verbindungen zu manipulieren, die durch VPN-Tunnel geleitet werden. Das Problem betrifft Linux, FreeBSD, OpenBSD, Android, macOS, iOS und andere Unix-Ă€hnliche Systeme. Linux unterstĂŒtzt den Mechanismus rp_filter (Reverse Path Filtering) fĂŒr IPv4, dessen Aktivierung im 'Strict'-Modus dieses Problem neutralisiert.

Die Methode ermöglicht das EinfĂŒgen von Paketen auf der Ebene von TCP-Verbindungen, die innerhalb eines verschlĂŒsselten Tunnels verlaufen, erlaubt jedoch nicht, sich in Verbindungen einzuklinken, die zusĂ€tzliche VerschlĂŒsselungsschichten anwenden (zum Beispiel TLS, HTTPS, SSH). Die in VPN verwendeten VerschlĂŒsselungsalgorithmen sind irrelevant, da die gefĂ€lschten Pakete von der externen Schnittstelle stammen und vom Kernel als Pakete von der VPN-Schnittstelle behandelt werden. Das wahrscheinlichste Ziel des Angriffs ist die Manipulation unverschlĂŒsselter HTTP-Verbindungen, aber es ist nicht auszuschließen dass die Attacke auch verwendet wird, um Antworten im DNS zu manipulieren.

Eine erfolgreiche Paketmanipulation wurde bei Tunnelverbindungen demonstriert, die durch OpenVPN, WireGuard und IKEv2/IPSec erstellt wurden. Tor ist von diesem Problem nicht betroffen, da es SOCKS verwendet, um den Verkehr weiterzuleiten und an die Loopback-Schnittstelle zu binden. FĂŒr IPv4 ist der Angriff möglich, wenn rp_filter in den 'Loose'-Modus versetzt wird (sysctl net.ipv4.conf.all.rp_filter = 2). UrsprĂŒnglich wurde in den meisten Systemen der 'Strict'-Modus verwendet, aber seit systemd 240, das im Dezember des letzten Jahres veröffentlicht wurde, wurde der Standardbetrieb auf 'Loose' geĂ€ndert und diese Änderung spiegelt sich in den Standardeinstellungen vieler Linux-Distributionen wider.

Der Mechanismus rp_filter angewendet dient zur zusĂ€tzlichen PrĂŒfung der Pfade von Paketen, um die QuellenadressenfĂ€lschung zu verhindern. Wenn er auf den Wert 0 gesetzt wird, erfolgt keine ÜberprĂŒfung der Quellenadresse, und jedes Paket kann ohne EinschrĂ€nkung zwischen den Netzwerkschnittstellen umgeleitet werden. Modus 1 'Strict' aktiviert die ÜberprĂŒfung jedes eingehenden Pakets auf Übereinstimmung mit der Routingtabelle, und wenn die Netzwerkschnittstelle, ĂŒber die das Paket empfangen wurde, nicht mit dem optimalen Antwortlieferungsweg verbunden ist, wird das Paket verworfen. Modus 2 'Loose' lockert die PrĂŒfung, um den Betrieb bei Verwendung von Lastverteilern oder asymmetrischer Routing zu ermöglichen.
Der Antwortpfad kann nicht ĂŒber das Netzwerk-Interface fĂŒhren, ĂŒber das das eingehende Paket empfangen wurde.

Im Modus „Loose“ wird das eingehende Paket mit der Routingtabelle abgeglichen, gilt jedoch als zulĂ€ssig, wenn die Quelladresse ĂŒber ein beliebiges verfĂŒgbares Netzwerk-Interface erreichbar ist. Der vorgeschlagene Angriff basiert darauf, dass der Angreifer ein Paket mit einer gefĂ€lschten Quelladresse senden kann, die dem VPN-Interface entspricht, und obwohl dieses Paket ĂŒber das externe Netzwerk-Interface in das System gelangt, und nicht ĂŒber das VPN, wird solch ein Paket im rp_filter-Modus „Loose“ nicht verworfen.

Um einen Angriff durchzufĂŒhren, muss der Angreifer das Gateway kontrollieren, ĂŒber welches der Benutzer ins Netzwerk gelangt (zum Beispiel durch eine MITM-Organisation, wenn das Opfer mit einem vom Angreifer kontrollierten WLAN-Zugangspunkt verbunden ist oder durch Router-Hack). Indem er das Gateway kontrolliert, ĂŒber das der Benutzer mit dem Netzwerk verbunden ist, kann der Angreifer gefĂ€lschte Pakete senden, die im Kontext des VPN-Netzwerk-Interfaces als gĂŒltig angesehen werden, aber die Antworten werden ĂŒber den Tunnel geleitet.

Durch die Generierung eines Stroms gefĂ€lschter Pakete, in denen die IP-Adresse des VPN-Interfaces eingesetzt wird, werden Versuche unternommen, die vom Client hergestellte Verbindung zu beeinflussen. Die Auswirkungen dieser Pakete können jedoch nur durch eine passive Analyse des verschlĂŒsselten Datenstroms, der mit dem Betrieb des Tunnels verbunden ist, beobachtet werden. FĂŒr den Angriff ist es notwendig, die vom VPN-Server zugewiesene IP-Adresse des Tunnel-Netzwerk-Interfaces zu ermitteln und festzustellen, dass derzeit ĂŒber den Tunnel eine aktive Verbindung zu einem bestimmten Host besteht.

Zur Bestimmung der IP-Adresse des virtuellen Netzwerks-Interfaces VPN wird das System des Opfers durch das Senden von SYN-ACK-Paketen abgefragt, wobei der gesamte Bereich virtueller Adressen schrittweise durchlaufen wird (zunĂ€chst werden die in VPN standardmĂ€ĂŸig verwendeten Adressen durchlaufen, z. B. in OpenVPN wird das Subnetz 10.8.0.0/24 verwendet). Ob eine Adresse existiert, kann anhand des Eintreffens einer Antwort mit dem RST-Flag beurteilt werden.

Auf Ă€hnliche Weise wird die Verbindung zu einer bestimmten Website und die Portnummer auf der Client-Seite bestimmt – indem Portnummern durchlaufen werden, wird ein SYN-Paket in Richtung des Benutzers gesendet, wobei die IP der Website als Quelladresse eingesetzt wird und die Zieladresse die virtuelle IP des VPN ist. Der Serverport kann vorhergesagt werden (80 fĂŒr HTTP), wĂ€hrend die Portnummer auf der Client-Seite durch Ausprobieren ermittelt werden kann, indem die IntensitĂ€t von ACK-Antworten fĂŒr verschiedene Nummern analysiert wird in Kombination mit dem Fehlen eines Pakets mit dem RST-Flag.

In diesem Stadium kennt der Angreifer alle vier Elemente der Verbindung (Quell-IP-Adresse/Port und Ziel-IP-Adresse/Port), aber um ein gefÀlschtes Paket zu generieren, das vom Zielsystem akzeptiert wird, muss der Angreifer die Sequenz- und BestÀtigungsnummern (seq und ack) der TCP-Verbindung bestimmen. Um diese Parameter zu ermitteln, sendet der Angreifer kontinuierlich gefÀlschte RST-Pakete, wÀhrend er verschiedene Sequenznummern durchlÀuft, bis er ein Antwort-ACK-Paket erhÀlt, dessen Empfang anzeigt, dass die Nummer innerhalb des TCP-Fensters liegt.

Dann prĂ€zisiert der Angreifer die Richtigkeit der Bestimmung, indem er Pakete mit derselben Nummer sendet und die ACK-Antworten beobachtet, woraufhin er die genaue aktuelle Sequenznummer ermittelt. Die Aufgabe wird dadurch kompliziert, dass die Antworten innerhalb eines verschlĂŒsselten Tunnels gesendet werden und ihre Anwesenheit im abgefangenen Datenstrom nur indirekt analysiert werden kann. Die Tatsache, dass ein an den VPN-Server adressiertes ACK-Paket vom Client gesendet wird, wird anhand der GrĂ¶ĂŸe und der Verzögerung der verschlĂŒsselten Antworten bestimmt, die mit dem Versand gefĂ€lschter Pakete korrelieren. Zum Beispiel erlaubt ein verschlĂŒsseltes Paket mit einer GrĂ¶ĂŸe von 79 fĂŒr OpenVPN eine genaue Schlussfolgerung, dass darin ein ACK-BestĂ€tigung enthalten ist.

Bevor ein Schutz gegen den Angriff in den Kern des Betriebssystems integriert wird, kann vorĂŒbergehend folgendermassen die Problematik blockiert werden. wird empfohlen Durch Verwendung eines Paketfilters in der „preroute“-Kette wird der Durchlauf von Paketen blockiert, bei denen die Zieladresse die virtuelle IP-Adresse des Tunnels ist.

iptables -t raw -I PREROUTING ! -i wg0 -d 10.182.12.8 -m addrtype ! —src-type LOCAL -j DROP

oder fĂŒr nftables

nft add table ip raw
nft add chain ip raw prerouting ‘{ type filter hook prerouting priority 0; }’
nft add rule ip raw prerouting ‘iifname != «wg0» ip daddr 10.182.12.8 fib saddr type != local drop’

Zum Schutz bei der Verwendung von Tunneln mit IPv4-Adressen genĂŒgt es, den rp_filter in den Modus „Streng“ zu versetzen („sysctl net.ipv4.conf.all.rp_filter = 1“). Auf VPN-Seite kann die Methode zur Bestimmung der Sequenznummer blockiert werden, indem den verschlĂŒsselten Paketen FĂŒllmaterial hinzugefĂŒgt wird, das die GrĂ¶ĂŸe aller Pakete gleich macht.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster