summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2022-10-20 14:20:19 +0200
committerLinus Färnstrand <linus@mullvad.net>2022-10-20 14:20:19 +0200
commit8df7475bc989276c2841d0fa8c290700b6bb3d91 (patch)
treeb75885bf940ec9c84e5c5cad75c057f0fb64e7c0
parent430f6185a76f6ee1e430b368b23c34c8bc1ae4b4 (diff)
parent19c9d1d6ea012dcd6198817c28dcd4c6e50494aa (diff)
downloadmullvadvpn-8df7475bc989276c2841d0fa8c290700b6bb3d91.tar.xz
mullvadvpn-8df7475bc989276c2841d0fa8c290700b6bb3d91.zip
Merge branch '2022-audit-report'
-rw-r--r--audits/2022-10-14-atredis.md142
-rw-r--r--audits/2022-10-atredis_partners_security_assessment.pdfbin0 -> 638796 bytes
-rw-r--r--audits/README.md4
3 files changed, 146 insertions, 0 deletions
diff --git a/audits/2022-10-14-atredis.md b/audits/2022-10-14-atredis.md
new file mode 100644
index 0000000000..7355f5f18a
--- /dev/null
+++ b/audits/2022-10-14-atredis.md
@@ -0,0 +1,142 @@
+# 2022-10-14 - Atredis Partners security assessment of the Mullvad VPN app
+
+Two people from [Atredis Partners](https://www.atredis.com/) performed a penetration test and
+source code audit of the Mullvad VPN app over a four week period between 2022-09-06
+and 2022-10-06, and the final audit report was handed over to Mullvad on 2022-10-14.
+The security assessment included all five supported platforms:
+Windows, Linux, macOS, Android and iOS.
+
+For the desktop app, version [2022.4] was audited. On Android, version [2022.2-beta1]
+was audited and on iOS the Test Flight version [2022.3 (build 1)] was audited.
+
+[2022.4]: ../CHANGELOG.md#20224---2022-08-19
+[2022.2-beta1]: ../CHANGELOG.md#android20222-beta1---2022-08-11
+[2022.3 (build 1)]: https://github.com/mullvad/mullvadvpn-app/commit/b05f9c588f5c88e98a9d36af84765bbd1254be43
+
+Quoting the key conclusions of the report:
+
+> Overall, Atredis Partners found the Mullvad VPN clients to be well-architected from a security
+perspective, with limited attack surface that could be reached by an external malicious party,
+and important protection mechanisms were in place to prevent most unintended traffic leaks.
+Atredis Partners detected a few edge cases where traffic could be accidentally leaked outside
+the VPN tunnel. These leaks were either patched quickly by the Mullvad team or were due to
+the operating system itself, in which case the Mullvad team updated documentation and
+submitted issues to the operating system vendor where appropriate.
+>
+> As in any security assessment, some areas for improvement were noted, but overall Atredis
+Partners would rate the Mullvad VPN clients as sound from a security perspective.
+
+## High-Level Engagement Objectives
+
+Atredis Partners were tasked with the following high-level engagement objectives for the audit:
+
+* Enumerate and define key attack chains against the Mullvad platform
+* Attempt to identify attack scenarios resulting in de-anonymization
+* Valid potential for “fail open” scenarios such as split tunnels / kill switch / etc
+* Attempt to identify scenarios impacting tunnel integrity or confidentiality
+* Ensure Mullvad information assets and customer data are well protected
+* Confirm applications and services are secured with typical industry best practices
+
+## Read the report
+
+The final report is available [on Atredis' website](https://www.atredis.com/s/Atredis-Partners-Mullvad-VPN-Platform-Security-Assessment-Report-v10.pdf)
+as well as in this repository: [2022-10-atredis_partners_security_assessment.pdf](./2022-10-atredis_partners_security_assessment.pdf)
+
+## Overview of findings
+
+This chapter will present Mullvad's response to all the security findings from the report.
+To read what the findings are about, see the report.
+
+Out of the five findings, two are *medium* level, two are *low* level and one is *info* level.
+This means that the auditors did not find anything of high or critical severity. Nothing
+found could easily or substantially compromise the security or privacy of the app users.
+
+Mullvad implemented fixes for two of the findings. Two findings resulted in updated security
+documentation around limitations in Android. The last finding was classified
+as not in scope for us to fix.
+
+All fixes were merged and released before the final report was done and sent over to Mullvad.
+Version `2022.5-beta1` (and newer) of the desktop app includes the fixes.
+
+### __MUL22-01__ (Low): Out-of-Bounds Read in win-split-tunnel (Windows)
+
+The access permissions on the device exposed by the `mullvad-split-tunnel` kernel driver
+requires the connecting process to have administrator privileges. It also only allows a single
+user space process to be connected to it at any point in time. So an attacker would need
+to both have administrator privileges and stop the `mullvad-daemon` service before they
+could connect to the driver and trigger the bug. Mullvad deems this both unlikely to
+happen and not in scope of what the app should try to protect against. If an attacker
+has administrator privileges already, they can do worse stuff than
+exploiting this bug. This bug does not lead to privilege escalation, since administrator
+level is required to use it.
+
+Regardless of the low severity, the bug has been fixed in the kernel driver.
+[This PR](https://github.com/mullvad/win-split-tunnel/pull/34),
+fixes the bug, and the patched driver was included in app version `2022.5-beta1`.
+
+### __MUL22-02__ (Medium): Leak of Traffic During System Shutdown
+
+A while before the audit started, Mullvad engineers discovered that there was a time window
+during boot on both Linux and macOS where traffic could leak, even if "Launch app on start-up"
+and "Auto-connect" was enabled. This was due to the fact that our system service (`mullvad-daemon`)
+was not set up so it must be started before the OS initializes the network. If the OS decided
+to start `mullvad-daemon` late in the boot process, other programs could communicate with the
+network without a VPN for a few seconds. This was reported as known issues to Atredis just
+before the start of the audit, and a fix was developed simultaneously.
+The bootup leak was [fixed on Linux](https://github.com/mullvad/mullvadvpn-app/pull/3904)
+at the same time as the audit started.
+
+Just a week after the bootup leak was fixed, Atredis reported `MUL22-02`, where they found a
+similar potential leak window during shutdown on Unix based platforms. Upon investigation,
+Mullvad concluded that the issue was present on Windows as well.
+The bug was mitigated on all three desktop operating systems in two different PRs.
+[#3940 for Linux and macOS] and [#3942 for Windows]. All fixes were included in
+app version `2022.5-beta1`, including the one for bootup leaks on Linux.
+
+The only issue in this area that we have not been able to fully mitigate is the potential leak
+during bootup on macOS. That is because macOS does not allow a system service to specify
+dependencies or in which order they need to start. So there is no way known to us to force
+macOS to start `mullvad-daemon` before the network is configured. We have [updated our
+security documentation] to reflect this known issue, and we will work towards making it
+more transparent towards our users.
+
+[#3940 for Linux and macOS]: https://github.com/mullvad/mullvadvpn-app/pull/3940
+[#3942 for Windows]: https://github.com/mullvad/mullvadvpn-app/pull/3942
+[updated our security documentation]: https://github.com/mullvad/mullvadvpn-app/pull/4061
+
+### __MUL22-03__ (Medium): Connectivity Checks Bypass VPN (Android)
+
+In general there is not much Mullvad can do to prevent this traffic leak from happening.
+We can only raise awareness of it and try to put pressure on Google to allow the user to disable
+the connectivity check. We have done the following in response to this finding:
+
+* [Blog about the leak more in depth](https://mullvad.net/blog/2022/10/10/android-leaks-connectivity-check-traffic)
+* [Created a guide allowing more technical users to disable the connectivity check](https://mullvad.net/help/configure-connectivity-checks-on-android)
+* [Reported that the Android documentation around *Block connections without VPN* is misleading](https://issuetracker.google.com/issues/249990229)
+* [Requested a user facing setting for disabling the connectivity check](https://issuetracker.google.com/issues/250529027)
+* [Updated our security documentation to mention this limitation](https://github.com/mullvad/mullvadvpn-app/pull/3996)
+
+### __MUL22-04__ (Low): Permissive Inbound Network Filtering (Android)
+
+As far as we can tell, there is nothing Mullvad or any other VPN app can do about this.
+Android will not block incoming connections. However, this is still regarded as a low
+severity issue. The device must actively expose some service to the network for
+there to be anything to connect to.
+
+We have [updated our security documentation](https://github.com/mullvad/mullvadvpn-app/pull/3966)
+to mention this limitation.
+
+### __MUL22-05__ (Info): Siri Shortcuts Susceptible to Manipulation (iOS)
+
+The Siri shortcut integration is opt-in and not enabled by default. On top of that, Mullvad
+thinks that the attack is more of an attack on Siri's authentication than on our app.
+Siri is supposed to only listen to the owner's voice.
+
+If this finding is a concern for any user, we recommend that user to disable the Siri integration
+in the Mullvad app.
+
+
+## Last words
+
+We wish to thank Atredis Partners for the smooth collaboration, good communication and great
+security assessment work!
diff --git a/audits/2022-10-atredis_partners_security_assessment.pdf b/audits/2022-10-atredis_partners_security_assessment.pdf
new file mode 100644
index 0000000000..e7a78925ca
--- /dev/null
+++ b/audits/2022-10-atredis_partners_security_assessment.pdf
Binary files differ
diff --git a/audits/README.md b/audits/README.md
index 5f29ec93e3..737e0032d8 100644
--- a/audits/README.md
+++ b/audits/README.md
@@ -4,5 +4,9 @@ Independent audits help to discover potential security vulnerabilities and fix t
in an even better service. It also gives you the opportunity to judge whether or not we are
technically competent enough to provide a service in which security is paramount.
+We perform these external security audits every two years. Here are all the audits we have
+performed on this app so far:
+
* [2018-09-24 - Assured and Cure53](./2018-09-24-assured-cure53.md)
* [2020-06-12 - Cure53](./2020-06-12-cure53.md)
+* [2022-10-14 - Atredis](./2022-10-14-atredis.md)