Skip to content

Commit 2a64b5a

Browse files
committed
Update the issue of android reconfiguration leaks
Broaden the known issue of leaks on android, describing more in detail what may leak during VPN tunnel configuration change.
1 parent 57c47ee commit 2a64b5a

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

docs/known-issues.md

+20-11
Original file line numberDiff line numberDiff line change
@@ -102,25 +102,34 @@ is not really possible, or hard to implement on some operating systems. See the
102102
[split tunneling documentation]: ./split-tunneling.md#dns
103103

104104

105-
### Temporary DNS leaks while tunnel is being reconfigured on Android
105+
### Temporary leaks while tunnel is being reconfigured on Android
106106

107-
DNS lookups performed directly with the C function `getaddrinfo` can leak for a short period
108-
of time while an android VPN app is being re-configured (reconnecting, force-stopped etc).
109-
These leaks happens even when the system setting "Block connections without VPN" is
110-
enabled.
107+
Android may leak for a short period of time while a VPN tunnel is being re-configured
108+
(reconnecting, force-stopped etc), sending traffic outside the tunnel that is supposed to be inside
109+
the tunnel. Packets sent may have the source IP of the internal tunnel interface. Some of these
110+
leaks can happen even when the system setting "Block connections without VPN" is enabled.
111+
112+
The known leaks include, but may not be limited to, the following type of traffic:
113+
- Any traffic sent by the current VPN app (e.g API requests).
114+
- DNS lookups performed directly with the C function `getaddrinfo`.
115+
- Private DNS traffic (e.g DNS-over-TLS).
116+
- [OS connectivity checks](https://issuetracker.google.com/issues/250529027).
111117

112-
We have not found any leaks from apps that only use Android API:s such as [DnsResolver]. The Chrome browser is an example of an app that can use getaddrinfo [directly](https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/aw_pac_processor.cc;l=197;drc=133b2d903fa57cfda1317bc589b349cf4c284b7c).
118+
Multiple reports with variants of this behaviour have surfaced over the years, however the problems
119+
still persist. Mullvad is not aware of any mitigation to these leaks.
113120

114-
Mullvad is not aware of any mitigation to this leak. It has been reported upstream to Google,
115-
and we wait for their response.
121+
- [A few packets leak to the public network at VPN reconnection](https://issuetracker.google.com/issues/37343051)
122+
- [Android's VPN does not provide a seamless routing transition across VPN reconfigurations.](https://issuetracker.google.com/issues/117288570)
123+
- [Android 10 Private DNS breaks VPN](https://issuetracker.google.com/issues/141674015)
124+
- [Packets leak to the public network when VPN reconnection using seamless handover](https://issuetracker.google.com/issues/172141171)
125+
- [VPN leaks DNS traffic outside the tunnel](https://issuetracker.google.com/issues/337961996)
116126

117127
#### Timeline
118128

119-
* April 22, 2024 - Mullvad became aware of the leaks, via a [reddit post](https://www.reddit.com/r/mullvadvpn/comments/1c9p96y/dns_leak_with_block_connections_without_vpn_on/)
129+
* April 22, 2024 - Mullvad became aware that Android could leak DNS when getaddrinfo was being used.
120130
* April 30, 2024 - Mullvad [report the issue](https://issuetracker.google.com/issues/337961996) upstream to Google.
121131
* May 3, 2024 - Mullvad [blog](https://mullvad.net/blog/dns-traffic-can-leak-outside-the-vpn-tunnel-on-android) about the findings. This post contains more details.
122-
123-
[DnsResolver]: https://developer.android.com/reference/android/net/DnsResolver
132+
* Mar 12, 2025 - Mullvad realize the leaks are about much more than just DNS. This document is updated accordingly.
124133

125134

126135
### Broadcast traffic to the LAN bypass the VPN on Android

0 commit comments

Comments
 (0)