blob: 97fe0e74751ed6226972096d76cab244299130a1 [file] [log] [blame] [view]
Tom Cosgrove0b86ac12022-07-29 13:44:01 +01001## Reporting Vulnerabilities
Manuel Pégourié-Gonnarda21abf22021-02-25 11:41:38 +01002
3If you think you have found an Mbed TLS security vulnerability, then please
4send an email to the security team at
5<mbed-tls-security@lists.trustedfirmware.org>.
6
7## Security Incident Handling Process
8
Shaun Case8b0ecbc2021-12-20 21:14:10 -08009Our security process is detailed in our
Gilles Peskinea23df132021-03-16 12:04:44 +010010[security
Manuel Pégourié-Gonnarda21abf22021-02-25 11:41:38 +010011center](https://developer.trustedfirmware.org/w/mbed-tls/security-center/).
12
13Its primary goal is to ensure fixes are ready to be deployed when the issue
14goes public.
15
16## Maintained branches
17
Gilles Peskinea23df132021-03-16 12:04:44 +010018Only the maintained branches, as listed in [`BRANCHES.md`](BRANCHES.md),
19get security fixes.
Manuel Pégourié-Gonnarda21abf22021-02-25 11:41:38 +010020Users are urged to always use the latest version of a maintained branch.
Janos Follath18d41732023-02-24 16:00:21 +000021
22## Threat model
23
Janos Follathc51a4132023-03-14 12:47:27 +000024We classify attacks based on the capabilities of the attacker.
Janos Follath18d41732023-02-24 16:00:21 +000025
Janos Follath18d41732023-02-24 16:00:21 +000026### Remote attacks
27
Janos Follath9ec195c2023-03-06 14:54:59 +000028The attacker can observe and modify data sent over the network. This includes
29observing the content and timing of individual packets, as well as suppressing
30or delaying legitimate messages, and injecting messages.
31
Janos Follath144dd7d2023-03-03 14:56:38 +000032Mbed TLS aims to fully protect against remote attacks and to enable the user
33application in providing full protection against remote attacks. Said
34protection is limited to providing security guarantees offered by the protocol
Janos Follathc51a4132023-03-14 12:47:27 +000035being implemented. (For example Mbed TLS alone won't guarantee that the
36messages will arrive without delay, as the TLS protocol doesn't guarantee that
37either.)
Janos Follath18d41732023-02-24 16:00:21 +000038
Janos Follathc51a4132023-03-14 12:47:27 +000039**Warning!** Block ciphers do not yet achieve full protection against attackers
40who can measure the timing of packets with sufficient precision. For details
41and workarounds see the [Block Ciphers](#block-ciphers) section.
Janos Follath3d377602023-03-08 16:53:50 +000042
Janos Follathfef82fd2023-03-08 16:10:39 +000043### Local attacks
44
Janos Follathd5a09402023-03-08 19:58:29 +000045The attacker can run software on the same machine. The attacker has
46insufficient privileges to directly access Mbed TLS assets such as memory and
47files.
Janos Follathfef82fd2023-03-08 16:10:39 +000048
49#### Timing attacks
Janos Follath18d41732023-02-24 16:00:21 +000050
Janos Follath4317a9e2023-03-14 14:49:34 +000051The attacker is able to observe the timing of instructions executed by Mbed TLS
52by leveraging shared hardware that both Mbed TLS and the attacker have access
53to. Typical attack vectors include cache timings, memory bus contention and
54branch prediction.
Janos Follathfef82fd2023-03-08 16:10:39 +000055
Janos Follath144dd7d2023-03-03 14:56:38 +000056Mbed TLS provides limited protection against timing attacks. The cost of
57protecting against timing attacks widely varies depending on the granularity of
58the measurements and the noise present. Therefore the protection in Mbed TLS is
Janos Follathfef82fd2023-03-08 16:10:39 +000059limited. We are only aiming to provide protection against **publicly
Janos Follath4317a9e2023-03-14 14:49:34 +000060documented attack techniques**.
61
62As attacks keep improving, so does Mbed TLS's protection. Mbed TLS is moving
63towards a model of fully timing-invariant code, but has not reached this point
64yet.
Janos Follath042e4332023-03-08 20:07:59 +000065
66**Remark:** Timing information can be observed over the network or through
67physical side channels as well. Remote and physical timing attacks are covered
68in the [Remote attacks](remote-attacks) and [Physical
69attacks](physical-attacks) sections respectively.
Janos Follath18d41732023-02-24 16:00:21 +000070
Janos Follath24792d02023-03-03 14:16:12 +000071**Warning!** Block ciphers do not yet achieve full protection. For
Janos Follath3d377602023-03-08 16:53:50 +000072details and workarounds see the [Block Ciphers](#block-ciphers) section.
Janos Follath18d41732023-02-24 16:00:21 +000073
Janos Follathfef82fd2023-03-08 16:10:39 +000074#### Local non-timing side channels
75
76The attacker code running on the platform has access to some sensor capable of
77picking up information on the physical state of the hardware while Mbed TLS is
Janos Follathc51a4132023-03-14 12:47:27 +000078running. This could for example be an analogue-to-digital converter on the
Janos Follathfef82fd2023-03-08 16:10:39 +000079platform that is located unfortunately enough to pick up the CPU noise. (See
80for example the [Leaky Noise
81paper](https://tches.iacr.org/index.php/TCHES/article/view/8297).)
82
Janos Follathc51a4132023-03-14 12:47:27 +000083Mbed TLS doesn't make any security guarantees against local non-timing-based
Janos Follathfef82fd2023-03-08 16:10:39 +000084side channel attacks. If local non-timing attacks are present in a use case or
Janos Follathc51a4132023-03-14 12:47:27 +000085a user application's threat model, they need to be mitigated by the platform.
Janos Follathfef82fd2023-03-08 16:10:39 +000086
87#### Local fault injection attacks
88
89Software running on the same hardware can affect the physical state of the
90device and introduce faults. (See for example the [Row Hammer
91paper](https://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf).)
92
Janos Follathc51a4132023-03-14 12:47:27 +000093Mbed TLS doesn't make any security guarantees against local fault injection
Janos Follathfef82fd2023-03-08 16:10:39 +000094attacks. If local fault injection attacks are present in a use case or a user
Janos Follathc51a4132023-03-14 12:47:27 +000095application's threat model, they need to be mitigated by the platform.
Janos Follathfef82fd2023-03-08 16:10:39 +000096
Janos Follath18d41732023-02-24 16:00:21 +000097### Physical attacks
98
Janos Follath9ec195c2023-03-06 14:54:59 +000099The attacker has access to physical information about the hardware Mbed TLS is
Janos Follathc51a4132023-03-14 12:47:27 +0000100running on and/or can alter the physical state of the hardware (e.g. power
Janos Follathfef82fd2023-03-08 16:10:39 +0000101analysis, radio emissions or fault injection).
Janos Follath9ec195c2023-03-06 14:54:59 +0000102
Janos Follathc51a4132023-03-14 12:47:27 +0000103Mbed TLS doesn't make any security guarantees against physical attacks. If
Janos Follath144dd7d2023-03-03 14:56:38 +0000104physical attacks are present in a use case or a user application's threat
Janos Follathc51a4132023-03-14 12:47:27 +0000105model, they need to be mitigated by physical countermeasures.
Janos Follathecaa2932023-03-08 16:38:07 +0000106
107### Caveats
108
Janos Follathc51a4132023-03-14 12:47:27 +0000109#### Out-of-scope countermeasures
Janos Follathecaa2932023-03-08 16:38:07 +0000110
111Mbed TLS has evolved organically and a well defined threat model hasn't always
112been present. Therefore, Mbed TLS might have countermeasures against attacks
113outside the above defined threat model.
114
115The presence of such countermeasures don't mean that Mbed TLS provides
116protection against a class of attacks outside of the above described threat
117model. Neither does it mean that the failure of such a countermeasure is
118considered a vulnerability.
Janos Follath3d377602023-03-08 16:53:50 +0000119
120#### Block ciphers
121
122Currently there are four block ciphers in Mbed TLS: AES, CAMELLIA, ARIA and
123DES. The pure software implementation in Mbed TLS implementation uses lookup
124tables, which are vulnerable to timing attacks.
125
126These timing attacks can be physical, local or depending on network latency
127even a remote. The attacks can result in key recovery.
128
129**Workarounds:**
130
131- Turn on hardware acceleration for AES. This is supported only on selected
132 architectures and currently only available for AES. See configuration options
133 `MBEDTLS_AESCE_C`, `MBEDTLS_AESNI_C` and `MBEDTLS_PADLOCK_C` for details.
134- Add a secure alternative implementation (typically hardware acceleration) for
135 the vulnerable cipher. See the [Alternative Implementations
136Guide](docs/architecture/alternative-implementations.md) for more information.
137- Use cryptographic mechanisms that are not based on block ciphers. In
138 particular, for authenticated encryption, use ChaCha20/Poly1305 instead of
139 block cipher modes. For random generation, use HMAC\_DRBG instead of CTR\_DRBG.