Skip to content

Commit e2136a6

Browse files
committed
Merge branch 'improve-secure-development-documentation'
2 parents 7511b16 + 59ad117 commit e2136a6

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

README.md

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ the current state of the latest code in git, not necessarily any existing releas
7171

7272
[DAITA]: https://mullvad.net/en/blog/introducing-defense-against-ai-guided-traffic-analysis-daita
7373

74-
## Security and anonymity
74+
## User security, privacy and anonymity
7575

7676
This app is a privacy preserving VPN client. As such it goes to great lengths to stop traffic
7777
leaks. And basically all settings default to the more secure/private option. The user has to
@@ -80,6 +80,35 @@ on what the app blocks and allows, as well as how it does it.
8080

8181
[dedicated security document]: docs/security.md
8282

83+
## Secure development
84+
85+
Since the security of the users of the app is a top priority, by extension the security
86+
of the development and release process also becomes a top priority. This is something we work
87+
actively on.
88+
89+
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9411/badge)](https://www.bestpractices.dev/projects/9411)
90+
91+
### Git signatures
92+
93+
All merge commits to the main branch must be PGP (gpg) signed in git. This signs off the entire
94+
feature branch. The individual commits in the feature branch do not need to be signed,
95+
unless they change one or more of the files deemed extra important.
96+
97+
The list of files requiring signatures to every commit that change them is defined in the
98+
[`verify-locked-down-signatures`](.github/workflows/verify-locked-down-signatures.yml)
99+
workflow.
100+
101+
### Audits, pentests and external security reviews
102+
103+
This app is audited by external security experts and penetration testers every second year.
104+
We also carry out feature specific audits for certain security critical features and changes.
105+
106+
The results of these audits are always made public in their unredacted original form, for
107+
full transparency towards the users. See the [audits readme](./audits/README.md) for this.
108+
109+
Moreover, we welcome any individual to review the security of this app and submit any found
110+
issue to us. See [SECURITY.md](SECURITY.md) for more.
111+
83112
## Checking out the code
84113

85114
This repository contains submodules needed for building the app. However, some of those submodules
@@ -98,8 +127,9 @@ git submodule update --init wireguard-go-rs/libwg/wireguard-go
98127
```
99128
Further details on why this is necessary can be found in the [wireguard-go-rs crate](./wireguard-go-rs/README.md).
100129

101-
We sign every commit on the `main` branch as well as our release tags. If you would like to verify
102-
your checkout, you can find our developer keys on [Mullvad's Open Source page].
130+
We sign every merge commit to the `main` branch as well as our release tags.
131+
If you would like to verify your checkout, you can find our developer keys on
132+
[Mullvad's Open Source page].
103133

104134
### Binaries submodule
105135

@@ -433,11 +463,6 @@ For instructions specific to the Android app, see [here](./android/README.md).
433463

434464
For instructions specific to the iOS app, see [here](./ios/translation/README.md).
435465

436-
## Audits, pentests and external security reviews
437-
438-
Mullvad has used external pentesting companies to carry out security audits of this VPN app. Read
439-
more about them in the [audits readme](./audits/README.md).
440-
441466
# License
442467

443468
Copyright (C) 2026 Mullvad VPN AB

0 commit comments

Comments
 (0)