blob: 677e68555d2edaf2f9c7e7ac082059c83f1a69f9 [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
24We use the following classification of attacks:
25
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
35in question. (For example Mbed TLS alone won't guarantee that the messages will
36arrive without delay, as the TLS protocol doesn't guarantee that either.)
Janos Follath18d41732023-02-24 16:00:21 +000037
Janos Follath3d377602023-03-08 16:53:50 +000038**Warning!** Depending on network latency, the timing of messages might be
39enough to launch some timing attacks. Block ciphers do not yet achieve full
40protection against these. For details and workarounds see the [Block
41Ciphers](#block-ciphers) section.
42
Janos Follathfef82fd2023-03-08 16:10:39 +000043### Local attacks
44
45The attacker is capable of running code on the same hardware as Mbed TLS, but
46there is still a security boundary between them (ie. the attacker can't for
47example read secrets from Mbed TLS' memory directly).
48
49#### Timing attacks
Janos Follath18d41732023-02-24 16:00:21 +000050
Janos Follath9ec195c2023-03-06 14:54:59 +000051The attacker can gain information about the time taken by certain sets of
Janos Follathfef82fd2023-03-08 16:10:39 +000052instructions in Mbed TLS operations. (See for example the [Flush+Reload
53paper](https://eprint.iacr.org/2013/448.pdf).)
54
55(Technically, timing information can be observed over the network or through
56physical side channels as well. Network timing attacks are less powerful than
57local and countermeasures protecting against local attacks prevent network
58attacks as well. If the timing information is gained through physical side
59channels, we consider them physical attacks and as such they are out of scope.)
Janos Follath9ec195c2023-03-06 14:54:59 +000060
Janos Follath144dd7d2023-03-03 14:56:38 +000061Mbed TLS provides limited protection against timing attacks. The cost of
62protecting against timing attacks widely varies depending on the granularity of
63the measurements and the noise present. Therefore the protection in Mbed TLS is
Janos Follathfef82fd2023-03-08 16:10:39 +000064limited. We are only aiming to provide protection against **publicly
65documented** attacks, and this protection is not currently complete.
Janos Follath18d41732023-02-24 16:00:21 +000066
Janos Follath24792d02023-03-03 14:16:12 +000067**Warning!** Block ciphers do not yet achieve full protection. For
Janos Follath3d377602023-03-08 16:53:50 +000068details and workarounds see the [Block Ciphers](#block-ciphers) section.
Janos Follath18d41732023-02-24 16:00:21 +000069
Janos Follathfef82fd2023-03-08 16:10:39 +000070#### Local non-timing side channels
71
72The attacker code running on the platform has access to some sensor capable of
73picking up information on the physical state of the hardware while Mbed TLS is
74running. This can for example be any analogue to digital converter on the
75platform that is located unfortunately enough to pick up the CPU noise. (See
76for example the [Leaky Noise
77paper](https://tches.iacr.org/index.php/TCHES/article/view/8297).)
78
79Mbed TLS doesn't offer any security guarantees against local non-timing based
80side channel attacks. If local non-timing attacks are present in a use case or
81a user application's threat model, it needs to be mitigated by the platform.
82
83#### Local fault injection attacks
84
85Software running on the same hardware can affect the physical state of the
86device and introduce faults. (See for example the [Row Hammer
87paper](https://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf).)
88
89Mbed TLS doesn't offer any security guarantees against local fault injection
90attacks. If local fault injection attacks are present in a use case or a user
91application's threat model, it needs to be mitigated by the platform.
92
Janos Follath18d41732023-02-24 16:00:21 +000093### Physical attacks
94
Janos Follath9ec195c2023-03-06 14:54:59 +000095The attacker has access to physical information about the hardware Mbed TLS is
Janos Follathfef82fd2023-03-08 16:10:39 +000096running on and/or can alter the physical state of the hardware (eg. power
97analysis, radio emissions or fault injection).
Janos Follath9ec195c2023-03-06 14:54:59 +000098
Janos Follathfef82fd2023-03-08 16:10:39 +000099Mbed TLS doesn't offer any security guarantees against physical attacks. If
Janos Follath144dd7d2023-03-03 14:56:38 +0000100physical attacks are present in a use case or a user application's threat
101model, it needs to be mitigated by physical countermeasures.
Janos Follathecaa2932023-03-08 16:38:07 +0000102
103### Caveats
104
105#### Out of scope countermeasures
106
107Mbed TLS has evolved organically and a well defined threat model hasn't always
108been present. Therefore, Mbed TLS might have countermeasures against attacks
109outside the above defined threat model.
110
111The presence of such countermeasures don't mean that Mbed TLS provides
112protection against a class of attacks outside of the above described threat
113model. Neither does it mean that the failure of such a countermeasure is
114considered a vulnerability.
Janos Follath3d377602023-03-08 16:53:50 +0000115
116#### Block ciphers
117
118Currently there are four block ciphers in Mbed TLS: AES, CAMELLIA, ARIA and
119DES. The pure software implementation in Mbed TLS implementation uses lookup
120tables, which are vulnerable to timing attacks.
121
122These timing attacks can be physical, local or depending on network latency
123even a remote. The attacks can result in key recovery.
124
125**Workarounds:**
126
127- Turn on hardware acceleration for AES. This is supported only on selected
128 architectures and currently only available for AES. See configuration options
129 `MBEDTLS_AESCE_C`, `MBEDTLS_AESNI_C` and `MBEDTLS_PADLOCK_C` for details.
130- Add a secure alternative implementation (typically hardware acceleration) for
131 the vulnerable cipher. See the [Alternative Implementations
132Guide](docs/architecture/alternative-implementations.md) for more information.
133- Use cryptographic mechanisms that are not based on block ciphers. In
134 particular, for authenticated encryption, use ChaCha20/Poly1305 instead of
135 block cipher modes. For random generation, use HMAC\_DRBG instead of CTR\_DRBG.