DNS-Traffic kann außerhalb des VPN-Tunnels auf Android auslaufen
Mehrere DNS-Leck-Szenarien bestätigt
- Kürzlich wurde festgestellt, dass auf Android mehrere DNS-Leaks möglich sind.
- Das Problem geht auf einen Fehler im Android-Betriebssystem selbst zurück und betrifft nur bestimmte Apps.
- Am Montag, den 22. April, wurde der DNS-Leak über eine Meldung eines Reddit-Nutzers bekannt.
- Ein Nutzer entdeckte, dass DNS-Abfragen auslaufen, wenn er bei aktivierter Einstellung „Verbindungen ohne VPN blockieren“ VPN deaktiviert und wieder aktiviert.
- Wir haben sofort mit einer internen Untersuchung begonnen und konnten das Problem verifizieren.
- Die Untersuchung ergab weitere Szenarien, die zu DNS-Leaks auf Android führen können.
Beobachtete Funde
Identifizierte Szenarien, in denen auf Android DNS-Traffic auslaufen kann:
- Wenn ein VPN aktiviert wird, obwohl kein DNS-Server konfiguriert ist.
- Für kurze Zeit, während eine VPN-App den Tunnel neu aufbaut oder zwangsweise gestoppt bzw. abgestürzt wird.
Der Leak scheint auf direkte Aufrufe der C-Funktion getaddrinfo beschränkt zu sein.
- In den oben genannten Szenarien führen Apps, die diese Methode zur DNS-Auflösung verwenden, zu DNS-Leaks.
- Bei Apps, die ausschließlich Android-APIs wie
DnsResolvernutzen, haben wir keine Leaks festgestellt. - Ein Beispiel für eine App, die
getaddrinfodirekt nutzen kann, ist der Chrome-Browser.
Der folgende Abschnitt gilt unabhängig davon, ob Always-on VPN und Block connections without VPN aktiviert sind:
- Dies entspricht nicht dem erwarteten Verhalten des OS und sollte im Upstream des OS behoben werden.
Wir konnten solche Leaks in mehreren Android-Versionen beobachten, einschließlich der neuesten Version Android 14.
Verbesserungen
Aktuell setzt die App im blockierten Zustand keinen DNS-Server:
- Wenn die App den Tunnel nicht auf wiederherstellbare Weise einrichten kann, wechselt sie in den blockierten Zustand.
- In diesem Zustand stoppt sie den ausgehenden Verkehr vom Gerät.
- Da in diesem Zustand kein DNS-Server gesetzt wird, kann es zu dem oben beschriebenen DNS-Leak kommen.
- Wir planen vorübergehend, einen Fake-DNS-Server zu setzen, um den OS-Bug zu umgehen.
- Mit einem Release, das diesen Fix enthält, kann in Kürze gerechnet werden.
DNS-Leaks während einer Tunnel-Reverbindung durch die App zu mildern ist schwieriger:
- Wir suchen weiterhin nach einer Lösung.
- Wir können zwar die Anzahl der Tunnel-Rekonfigurationen reduzieren, aber davon ausgehend, dass wir diesen Leak aktuell nicht vollständig verhindern können.
Es sollte klar sein, dass keine VPN-App Workarounds wie diese benötigen sollte:
- Es ist nicht falsch, wenn eine App
getaddrinfofür die DNS-Auflösung verwendet. - Stattdessen muss dieses Problem vom OS behoben werden, um alle Android-Nutzer zu schützen, unabhängig davon, welche App sie verwenden.
Wir haben das Problem Google gemeldet und Verbesserungsvorschläge gemacht und hoffen auf eine schnelle Lösung.
Reproduktionsschritte
Die folgenden Schritte reproduzieren das zweite oben genannte Szenario, bei dem VPN-Benutzer die Tunnelkonfiguration ändern (z. B. auf einen anderen Server wechseln oder den DNS-Server ändern):
- Die WireGuard-App wird verwendet, da sie die Referenzimplementierung von Android VPN ist.
- Beachten Sie, dass der Leak wahrscheinlich auch mit anderen Android-VPN-Apps reproduziert werden kann.
- Chrome wird verwendet, da es eine der Apps ist, bei denen
getaddrinfoverwendet wird, um den Leak auszulösen.
-
spam_get_requests.htmlherunterladen -
WireGuard-App und Chrome installieren
-
wg1.confundwg2.confin WireGuard importieren -
In der WireGuard-App das
wg1-Tunnel aktivieren und VPN-Berechtigung erteilen -
In den Android-VPN-Einstellungen für WireGuard „Always-on VPN“ und „Block connections without VPN“ aktivieren
-
Auf dem Router mit
tcpdumpden Datenverkehr erfassen
$ tcpdump -i <INTERFACE> host <IP of android device> -
WireGuard und Chrome nebeneinander anzeigen lassen
-
Öffnen Sie
spam_get_requests.htmlin Chrome und klicken Sie auf „Start“ -
In der WireGuard-App zwischen
wg1undwg2wechseln und diesen Schritt wiederholen, bis der Leak in Schritt 10 sichtbar ist -
Auf dem Router den folgenden DNS-Traffic beobachten:
11:50:27.816359 IP Pixel-Tablet.lan.53353 > OpenWrt.lan.53: 11200+ A? 307lf5rgn6-19282-11-50-27-519z.mullvad.test.lan. (65) 11:50:27.816359 IP Pixel-Tablet.lan.48267 > OpenWrt.lan.53: 44347+ A? 307lf5rgn6-19284-11-50-27-579z.mullvad.test.lan. (65) 11:50:27.816396 IP Pixel-Tablet.lan.16747 > OpenWrt.lan.53: 44584+ A? 307lf5rgn6-19289-11-50-27-729z.mullvad.test. (61) 11:50:27.816458 IP OpenWrt.lan.53 > Pixel-Tablet.lan.53353: 11200 NXDomain 0/0/0 (65) 11:50:27.816476 IP Pixel-Tablet.lan.45727 > OpenWrt.lan.53: 40503+ A? 307lf5rgn6-19290-11-50-27-759z.mullvad.test. (61) 11:50:27.816542 IP OpenWrt.lan.53 > Pixel-Tablet.lan.48267: 44347 NXDomain 0/0/0 (65) 11:50:27.816588 IP Pixel-Tablet.lan.43821 > OpenWrt.lan.53: 36295+ A? 307lf5rgn6-19291-11-50-27-789z.mullvad.test. (61) 11:50:27.816625 IP OpenWrt.lan.53 > Pixel-Tablet.lan.16747: 44584 NXDomain 0/0/0 (61)
Da „Block connections without VPN“ aktiviert war, sollte außer verschlüsseltem WireGuard-Verkehr nichts das Gerät verlassen, hier ist jedoch sichtbar, dass Klartext-DNS aus dem Gerät austritt.
Fazit und Empfehlungen
DNS-Leaks können die Privatsphäre der Nutzer massiv beeinträchtigen und können verwendet werden, um den ungefähren Standort der Nutzer zu bestimmen oder festzustellen, welche Websites und Dienste sie verwenden.
Diese Ergebnisse zeigen erneut, dass „Block connections without VPN“ weder dem Namen noch der Dokumentation entspricht und mehrere Schwachstellen hat:
- Unter den oben genannten Bedingungen können Apps weiterhin DNS-Traffic auslaufen lassen.
- Wie bereits berichtet, tritt weiterhin Verbindungsprüfverkehr aus.
Je nach Bedrohungsmodell müssen Anwender möglicherweise auf Android für sensible Aufgaben verzichten oder zusätzliche Mitigationen ergreifen, um Leaks zu verhindern:
- Da die App nur darauf abzielt, solche Probleme auf App-Ebene teilweise zu mildern, ist es wichtig, die App auf dem neuesten Stand zu halten.
GN⁺-Meinung
- Dieses Problem ist im Kern ein Fehler im Android-Betriebssystem, den Google daher kurzfristig beheben sollte. Es wäre nicht sinnvoll, wenn alle VPN-App-Entwickler versuchen würden, dieses Problem zu beheben.
- Dass die Option „Block connections without VPN“ nicht so funktioniert, wie ihr Name (bzw. die Dokumentation) es nahelegt, und dass es DNS-Leaks gibt, ist aus Nutzersicht ein gravierendes Problem. Ein Hauptgrund für die Nutzung einer VPN-App ist der Datenschutz; DNS-Leaks können deshalb Einblicke in die Webnutzung von Nutzern geben.
- Die Sicherheit von VPN-Tunneling-Technologie bleibt insgesamt hoch, aber um unbeabsichtigte Leaks auf OS-Ebene zu verhindern, kann es sinnvoll sein, neben VPN zusätzliche Sicherheits-/Datenschutzlösungen einzusetzen.
- App-Entwickler kompensieren derzeit einen OS-Bug mit kurzfristigen Workarounds in ihren Apps, aber eine nachhaltige Lösung erfordert ein OS-Upgrade im Sinne einer grundlegenden Behebung.
- Mit zunehmender Verbreitung und Reife der VPN-Technologie treten solche Sicherheitsfragen immer stärker in den Vordergrund. Auch künftig werden Sicherheitsprüfungen und kontinuierliche Verbesserungen bei den Netzwerk- und VPN-Funktionen mobiler OSs erforderlich sein.
1 Kommentare
Hacker News Kommentar