Quelle: michaelhorowitz.com (Englisch)
Sicherheitsforscher Michael Horowitz
TL;DR
VPNs auf iOS sind kaputt. Zunächst scheinen sie gut zu funktionieren. Das iOS-Gerät erhält eine neue öffentliche IP-Adresse und neue DNS-Server. Daten werden an den VPN-Server gesendet. Aber mit der Zeit zeigt eine detaillierte Untersuchung der Daten, die das iOS-Gerät verlassen, dass der VPN-Tunnel undicht ist. Die Daten verlassen das iOS-Gerät außerhalb des VPN-Tunnels. Dabei handelt es sich nicht um ein klassisches DNS-Leck, sondern um ein Datenleck. Ich habe dies mit verschiedenen VPN-Typen und Software von verschiedenen VPN-Anbietern bestätigt. Die neueste Version von iOS, die ich getestet habe, ist 15.6. Dieses Datenleck wurde erstmals veröffentlicht von ProtonVPN im März 2020 und iOS v13. (Dieser Abschnitt wurde am 5. August 2022 hinzugefügt)
Update 17. August 2022: Ars Technica hat dies aufgegriffen: VPN security - iOS VPNs have leaked traffic for more than 2 years, researcher claims. Das Gleiche gilt für Hacker News, wo zum Zeitpunkt der Erstellung dieses Artikels 218 Kommentare eingegangen sind. Die Zugriffe auf diese Seite stiegen von etwa 2.000 auf etwa 76.000.
Einleitung
Die VPN-Seite meiner DefensiveComputingChecklist.com hat einen Abschnitt mit verschiedenen Tests, die man durchführen kann, um zu überprüfen, ob ein VPN funktioniert. Einige Dinge sind offensichtlich, wie die Überprüfung auf eine neue öffentliche IP-Adresse, neue DNS-Server und die Überprüfung, ob WebRTC deaktiviert ist. In diesem Blog geht es um einen weniger offensichtlichen VPN-Test, für den ein Router der Profiklasse erforderlich ist, um ihn zu bestätigen.
Die Grundlage dafür ist recht einfach. Sobald eine VPN-Verbindung (der offizielle Begriff lautet "Tunnel") hergestellt ist, sollen alle Daten, die von dem mit dem VPN verbundenen Gerät kommen und gehen, durch das VPN laufen. Stimmt das? Genau das wollte ich überprüfen. Sicherlich gehen die meisten Daten durch den VPN-Tunnel, aber ich wollte wissen, ob alle Daten durchgehen.
Zugegeben, manche VPN-Software unterstützt eine Option namens Split-Tunneling, die diese einfache Regel umgeht, aber das interessiert mich nicht. Bei allen VPN-Clients, die ich gesehen habe und die Split-Tunneling anbieten, ist es standardmäßig deaktiviert. Bei den drei VPN-Anwendungen, die ich getestet habe, war die Option standardmäßig ausgeschaltet, und ich habe sie nicht aktiviert.
Ich habe mich davon überzeugt, dass der VPN-Tunnel das ist, was er sein soll. Dass Widerstand gegen ihn zwecklos ist. Dass der Tunnel alle Bits und Bytes aufnimmt, die zwischen dem betreffenden Gerät und dem Internet ein- und ausgehen :-)
Ich bin nicht zufällig auf das Thema gestoßen. Bei der Recherche zu meinem Artikel Defensive Computing with a VPN stieß ich auf einen Blog von ProtonVPN vom März 2020, VPN bypass vulnerability in Apple iOS, der einen Fehler in iOS 13 und 14 beschreibt. Der Fehler besteht darin, dass der VPN-Tunnel nicht alle Bits assimiliert. Einige entkommen. Die Borg wären darüber nicht erfreut.
Update. 19. August 2022: Im Mai 2020, als iOS auf Version 13.3.1 war, hatte Mullvad ebenfalls davor gewarnt: [iOS-Sicherheitslücke gefährdet VPN-Verkehr] (https://mullvad.net/en/blog/2020/5/4/ios-vulnerability-puts-vpn-traffic-risk/).
Bei dem, was ProtonVPN schrieb, handelt es sich um ein Datenleck und nicht um ein DNS-Leck. Verbindungen, die zum Zeitpunkt der Erstellung des VPN-Tunnels bestehen, sollten beendet und neu gestartet werden, damit sie durch den VPN-Tunnel laufen. In iOS 13 und 14 geschieht dies nicht, zumindest nicht standardmäßig.
Interessanterweise hat die Windscribe Desktop-VPN-Client-Software eine Option dafür, die "TCP-Sockets nach der Verbindung beenden" heißt (siehe TCP Socket Termination). Diese Option gibt es jedoch nicht in der iOS-Software. Ich habe eine Handvoll iOS-VPN-Clients für andere VPN-Anbieter überprüft und keinen mit einer Option zum Beenden bestehender Verbindungen/Sockets beim Aufbau des VPN-Tunnels gefunden.
Ich verfolge den Blog von ProtonVPN aus mehreren Gründen. Zum einen wurde er zuletzt im Oktober 2020 aktualisiert, als iOS 14 zum ersten Mal veröffentlicht wurde. iOS ist jetzt auf Version 15. Und das letzte Update besagte, dass bald eine neue iOS-Funktion in die App integriert werden würde, um das Problem zu beheben. Aber ProtonVPN hat dies nie nachgeholt. Haben sie diese neue Funktion hinzugefügt? Behebt sie das Problem? Sie haben das Problem in der Schwebe gelassen.
Update 17. August 2022: Nachdem dieser Blogeintrag von Ars Technica aufgegriffen wurde, hörte ich von Matt Volante, der darüber geschrieben hatte, dass iOS ein VPN in einem anderen Anwendungsfall nicht verwendet. Siehe Trust broken when using VPN on iOS Exchange ActiveSync system client (Feb 12, 2018). Er fand heraus, dass iOS Version 11.2.5 eine Mobilfunkverbindung für die Exchange ActiveSync-Kommunikation verwendet, selbst wenn ein Gerät über VPN mit Wi-Fi verbunden war. Wie ich war auch er der Meinung, dass das Problem in iOS und nicht in den beiden VPN-Client-Apps liegt, die er getestet hat.
STAND DER DINGE
- Juli 2022: Ich habe Apple erstmals Ende Mai 2022 in dieser Angelegenheit kontaktiert. Seitdem gab es eine Reihe von E-Mails zwischen mir und dem Unternehmen (ja, ganz normale, unverschlüsselte E-Mails - ohne jegliche Sicherheit). Bis heute, etwa fünf Wochen später, hat Apple mir praktisch nichts gesagt. Sie haben nicht gesagt, ob sie versucht haben, das Problem erneut zu verursachen. Sie haben nicht gesagt, ob sie der Meinung sind, dass es sich um einen Fehler handelt. Sie haben nichts über eine Lösung gesagt.
Es kostet so wenig Zeit und Mühe, das Problem neu zu erstellen, und das Problem ist so konsistent, dass sie es, wenn sie es überhaupt versucht haben, hätten neu erstellen können. Das geht mich nichts an. Vielleicht hoffen sie, dass ich, wie ProtonVPN, einfach weiterziehe und es fallen lasse. Ich weiß es nicht.
-
Juli 2022: iOS 15.6 wurde vor ein paar Tagen veröffentlicht. Meine Tests mit dieser neuen Version finden Sie unten. Außerdem habe ich kürzlich erfahren, dass Apple alle IP-Adressen besitzt, die mit 17 beginnen.
-
August 2022: Ich habe CISA sechsmal eine E-Mail zu diesem Thema geschickt. Keine Antwort.
-
August 2022: Ich habe schließlich einen anderen Trace durchgeführt. Diesmal habe ich einen pcWRT-Router verwendet, der über eine Kindersicherung verfügt. Teil der Kindersicherung ist eine Funktion, die die Domänen anzeigt, auf die jedes an den Router angeschlossene Gerät zugreift. Ich habe das eingerichtet, dann mein iOS 15.6 iPad mit dem pcWRT-Router verbunden und eine WireGuard-Verbindung mit ProtonVPN hergestellt. Während ich das iPad benutzte, zeigte der pcWRT-Router zunehmende Anfragen an apple.com, auch nachdem das VPN eingerichtet war. Wenn ich die Gelegenheit habe, werde ich hier Screenshots hinzufügen.
-
August 2022: Ich hatte den technischen Support von Windscribe diesbezüglich kontaktiert. Yegor Sak, der Mitbegründer von Windscribe, antwortete, dass sie sich dieses Problems bewusst sind und mehrere Berichte an Apple geschickt haben. Das war meine erste Bestätigung, dass es nicht nur mich betrifft, dass mein iPad nicht von Sonnenflecken getroffen wurde und das einzige auf dem Planeten ist, das sich so verhält.
-
August 2022: Apple hat mir gestern geantwortet.
Seltsames Timing, denn es geschah kurz nachdem dieses Thema in der Öffentlichkeit bekannt wurde. Das erinnert sehr daran, wie Facebook kurz nach der schlechten Publicity im Zusammenhang mit dem Durchsickern von Abtreibungsnachrichten geantwortet hat.
Die Apple-Antwort begann mit "Das Verhalten, das Sie beobachten, wird erwartet". Nehmen Sie sich eine Sekunde Zeit, um das zu begreifen. Mindestens drei VPN-Anbieter sind anderer Meinung. Sie hätten dies auch schon im Mai, Juni, Juli oder Anfang dieses Monats sagen können. Dieser Blogeintrag war die ganze Zeit über öffentlich.
Apple sagte auch, dass die Always On VPN-Funktion des MDM eine Lösung bietet. Mobile Device Management ist mir zu hoch. Es wird von großen Unternehmen verwendet, um Hunderte oder Tausende von iOS-Geräten zu verwalten. Das ist so ziemlich alles, was ich darüber weiß. Laut Apple können die IT-Techniker des Unternehmens mit MDM alle Daten, die ein iOS-Gerät verlassen, an das Unternehmen weiterleiten. MDM ist jedoch nicht für Verbraucher verfügbar.
Schließlich erwähnte Apple eine API-Option, die in iOS Version 14 eingeführt wurde, und verwies mich auf die Entwicklerdokumentation unter developer.apple.com. Da ich kein iOS-Entwickler bin, bin ich nicht qualifiziert, dazu Stellung zu nehmen. Dennoch kann ich zusammenfassen.
- Die neue Option ist ein Ein/Aus-Flag, das anzeigt, ob iOS alle Daten durch den VPN-Tunnel sendet oder nicht. iOS 13 und früher waren also eindeutig der Wilde Westen für VPNs. Als sowohl ProtonVPN als auch Mullvad über undichte VPNs bloggten, bezogen sie sich auf iOS Version 13.
- Das Flag ist standardmäßig ausgeschaltet. Interessante Entscheidung für ein Unternehmen, das seine Produkte auf der Grundlage von Sicherheit und Datenschutz vertreibt.
- Wenn das Kennzeichen eingeschaltet ist und die VPN-Verbindung unterbrochen wird, unterbricht iOS den gesamten Netzwerkverkehr. Ein eingebauter Kill Switch. Klingt gut.
Apple schlug vor, dass wir unsere VPN-Anbieter fragen sollten, ob sie dieses Flag verwenden.
Das Flag ist in einem Abschnitt über das NEVPNProtokoll dokumentiert, in dem Einstellungen beschrieben werden, die sowohl für IKEv2- als auch für IPsec-VPN-Konfigurationen gelten: Was ist mit OpenVPN? Was ist mit WireGuard? Diese Frage habe ich heute Apple gestellt.
Um eine Perspektive zu erhalten, schreibt ProtonVPN über iOS Version 14 im Oktober 2020: "Obwohl Apple das Problem der VPN-Umgehung nicht direkt in iOS 14 behoben hat..." Das ist interessant. Apple sagt, das Problem sei in iOS 14 behoben, Proton sagt, das sei es nicht. Proton sagte weiter, dass iOS 14 einen Kill Switch hat, aber sie gaben keine Details an, so dass es nicht klar ist, ob sie sich auf die Flagge beziehen, die Apple gestern erwähnte. Damals ging man jedoch davon aus, dass der Kill Switch bestehende Verbindungen blockieren würde, wenn ein VPN aktiviert ist.