Skip to content

Commit 8a06592

Browse files
committed
Merge branch 'update-android-security-docs'
2 parents 439b08d + df9cedc commit 8a06592

File tree

1 file changed

+36
-19
lines changed

1 file changed

+36
-19
lines changed

docs/security.md

+36-19
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,48 @@ secure as possible with the limitations of the OS APIs.
2424

2525
### Android
2626

27-
On Android, the only way an app can filter network traffic is essentially via the VPN service API.
28-
This API allows all traffic, except some [exempt by the system](#exempt-traffic), to and from the
29-
phone to flow though a third party app. This API is of course what the app uses for the tunnel
30-
itself as well, but apart from that it is also what the leak protection is built on.
31-
32-
An app with permission to act as a VPN service can request to open a VPN tunnel on the device and
33-
provide a set of IP networks it would like to have routed via itself. Doing so and specifying
34-
the routes `0/0` and `::0/0` forces all traffic, except some
35-
[exempt by the system](#exempt-traffic), to go via the app. That is what this app does both when it
36-
has a VPN tunnel up, but also when in a state where it would like to block all network traffic. Such
37-
as the [connecting], [disconnecting] and [error] states. In these states, all outgoing packets are
38-
simply dropped, but incoming traffic is still allowed due to the limitations of Android.
27+
> ⚠️ When we say *all traffic* in this chapter it does not include traffic exempt by the system
28+
or traffic affected by known issues.
29+
30+
The only way an android app can filter network traffic is via the VPN Service API. This API allows
31+
*all traffic* to and from the device to be routed through a third party app. This API is what the
32+
Mullvad VPN app uses for the tunnel itself and for leak protection.
33+
34+
When establishing a VPN connection using the default settings* the app will set the routes `0/0` and
35+
`::0/0` in order to force *all traffic* to be routed through the app. This also applies when the app is
36+
in a state where it blocks *all traffic*, such as the [connecting], [disconnecting] and [error]
37+
states. Additionally the android system has a setting called *Block connections without VPN* that
38+
enables the Android OS to block *all traffic* that is not routed through the Mullvad VPN.
39+
40+
> **\*:** Local Network Sharing affects the routes and Split Tunneling will allow apps to bypass the
41+
tunnel.
3942

4043
#### Exempt traffic
4144

42-
Even though not being properly documented by Google, some traffic is exempt by the system from using
43-
the VPN, which means that the traffic will leak and therefore potentially impact user privacy. This
44-
applies even if *Block connections without VPN* is enabled. The exempt traffic includes:
45-
* Connectivity checks (DNS lookups and HTTP(S) connections)
46-
* Network provided time (NTP)
45+
Even though not being properly documented by Google, some traffic is exempt by the system from
46+
using the VPN, which means that the traffic will leak and therefore potentially impact user
47+
privacy. This applies even if Block connections without VPN is enabled. The exempt traffic includes:
48+
49+
- Connectivity checks (DNS lookups and HTTP(S) connections)
50+
- Network provided time (NTP)
51+
- Traffic to and from hotspot clients.
4752

4853
The following issues have been reported by Mullvad in the Android issue tracker in order to improve
4954
documentation and user privacy:
50-
* [Incorrect VPN lockdown documentation](https://issuetracker.google.com/issues/249990229)
51-
* [Add option to disable connectivity checks when VPN lockdown is enabled](https://issuetracker.google.com/issues/250529027)
55+
56+
- [Incorrect VPN lockdown documentation](https://issuetracker.google.com/issues/249990229)
57+
- [Add option to disable connectivity checks when VPN lockdown is enabled](https://issuetracker.google.com/issues/250529027)
58+
59+
#### Known issues
60+
61+
Notable security related issues reported to Google:
62+
63+
- [VPN leaks DNS traffic outside the tunnel](https://issuetracker.google.com/issues/337961996)
64+
- [Broadcast traffic bypasses VPN](https://issuetracker.google.com/issues/146484540)
65+
66+
Besides these known issues Android has many variants and flavors that may introduce variances to
67+
the default [Android Open Source Project](https://source.android.com/) behavior. This means that
68+
the Mullvad VPN app, like all other VPN apps, is subject to the limitations of the VPN Service API.
5269

5370
### iOS
5471

0 commit comments

Comments
 (0)