In einem Coffeeshop-Szenario können Angreifer "sichere" VPN-Sitzungen von Personen entführen, die an einem entfernten Standort arbeiten, und Daten in ihre TCP-Streams injizieren.
Es wurde eine Schwachstelle in den meisten Linux-Distributionen aufgedeckt, die es einem Angreifer im Netzwerk ermöglicht, VPN-Verbindungen zu kapern und abtrünnige Daten in die sicheren Tunnel zu injizieren, die die Opfer zur Kommunikation mit entfernten Servern verwenden.
Laut Forschern der University of New Mexico und Breakpointing Bad erlaubt der Fehler (CVE-2019-14899) "einem Angreifer ... festzustellen, ob ... ein Benutzer mit einem VPN verbunden ist, welche virtuelle IP-Adresse ihm vom VPN-Server zugewiesen wurde und ob eine aktive Verbindung zu einer bestimmten Website besteht oder nicht".
In einem diese Woche veröffentlichten Advisory stellten sie fest, dass sie, sobald ein Proof-of-Concept-Exploit es ihnen erlaubt, die virtuelle IP-Adresse eines VPN-Clients zu bestimmen und Rückschlüsse auf aktive Verbindungen zu ziehen, dann in der Lage waren, anhand verschlüsselter Antworten auf unerwünschte Pakete die Reihenfolge und die Bestätigungsnummern der Verbindungen zu bestimmen. Diese erlaubten es ihnen, TCP-Sitzungen zu entführen und Daten in den TCP-Stream einzuspeisen.
Bei einem Angriff müsste ein Benutzer davon überzeugt werden, sich mit einem abtrünnigen drahtlosen Zugangspunkt (oder einer anderen Internetverbindung) unter der Kontrolle des Gegners zu verbinden (stellen Sie sich zum Beispiel ein Coffeeshop-Szenario vor). Der Angreifer kann dann mit dem Zugriffspunkt verbundene Geräte für aktive VPN-Sitzungen scannen.
Zu diesem Zweck kann der Access Point SYN-ACK-Pakete an beliebige angeschlossene Geräte senden, wobei er den gesamten virtuellen IP-Raum durchkämmt. Wenn ein SYN-ACK an die richtige virtuelle IP auf dem Opfergerät gesendet wird, antwortet das Gerät; wenn das SYN-ACK an die falsche virtuelle IP gesendet wird, empfängt der Angreifer nichts. Ein automatisiertes Skript würde diesen Prozess vermutlich für den Gegner schmerzlos machen.
Sobald der Angreifer feststellt, dass der Benutzer eine aktive TCP-Verbindung zu einem externen Server hat, besteht der nächste Schritt darin, die nächste Sequenznummer und die Bestätigungsnummer im Fenster zu erschnüffeln, die benötigt werden, um gefälschte Pakete in die Verbindung einzuspeisen.
Um die entsprechende Sequenz und ACK-Nummern zu finden, kann der Angreifer kontinuierlich zurückgesetzte Pakete in die aktive Verbindung fälschen, bis er ACKs herausfindet.
"Das Gerät des Opfers löst bei jedem empfangenen Reset ein TCP-Herausforderungs-ACK aus, das eine fensterinterne Sequenznummer für eine bestehende Verbindung hat", so der Hinweis. "Wenn der Client zum Beispiel OpenVPN verwendet, um verschlüsselte Pakete mit dem VPN-Server auszutauschen, wird der Client immer mit einem SSL-Paket der Länge 79 antworten, wenn ein Challenge-ACK ausgelöst wird".
Wenn er mit der Paket-Spoofing und der ACK-Analyse (die in der Beratung ausführlich beschrieben wird) fortfährt, kann ein Angreifer auf die restlichen Informationen schließen, die erforderlich sind, um beliebige Nutzlasten in die aktive VPN-Sitzung des Opfers zu injizieren.
Der Fehler betrifft MacOS, iOS und Android, die meisten Linux-Distributionen einschließlich Ubuntu, Fedora und Debian sowie Unix-ähnliche Betriebssysteme wie FreeBSD und OpenBSD. Besonders gefährdet sind jene Linux-Distributionen, die eine Version von systemd verwenden, die nach dem 28. November letzten Jahres gezogen wurde und die die Filterung des umgekehrten Pfades deaktiviert hat, warnten die Forscher. Die IPv4-Version von CentOS wurde als nicht betroffen bestätigt.
Was die VPN-Technologie betrifft, so fanden die Forscher heraus, dass ein Proof-of-Concept-Exploit gegen OpenVPN, WireGuard und IKEv2/IPSec funktioniert, und sie sind dabei, Tor zu testen.
"Die verwendete VPN-Technologie scheint keine Rolle zu spielen, und wir sind in der Lage, alle unsere Schlussfolgerungen zu ziehen, obwohl die Antworten des Opfers verschlüsselt sind, indem wir die Größe der Pakete und die Anzahl der gesendeten Pakete (im Fall von Challenge-ACKs zum Beispiel) verwenden, um festzustellen, welche Art von Paketen durch den verschlüsselten VPN-Tunnel gesendet werden", so der Ratgeber.
Der Fehler wurde an Distros und das Linux-Kernel-Sicherheitsteam sowie an andere Betroffene wie Systemd, Google, Apple, OpenVPN und WireGuard gemeldet.
"Das Hinzufügen einer Vorab-Regel zum Verwerfen von Paketen, die für die virtuelle IP-Adresse des Kunden bestimmt sind, ist auf einigen Systemen eine effektive [Abschwächung]", so der Ratschlag. "Es gibt andere mögliche Lösungen, die von den Kernel-Betreuern in Betracht gezogen werden, aber ich kann nicht über ihren aktuellen Status sprechen.