blob: 8d3678a5ee02018e9684247bccd457b61600c5b1 [file] [log] [blame] [view]
Tom Cosgrovec71bc7b2022-07-29 13:54:52 +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 Case0e7791f2021-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 Follathce2985b2023-02-24 16:00:21 +000021
22## Threat model
23
Janos Follath6ce259d2023-03-14 12:47:27 +000024We classify attacks based on the capabilities of the attacker.
Janos Follathce2985b2023-02-24 16:00:21 +000025
Janos Follathce2985b2023-02-24 16:00:21 +000026### Remote attacks
27
Janos Follath6cd04592023-03-14 15:43:24 +000028In this section, we consider an attacker who can observe and modify data sent
29over the network. This includes observing the content and timing of individual
30packets, as well as suppressing or delaying legitimate messages, and injecting
31messages.
Janos Follath5adb2c22023-03-06 14:54:59 +000032
Janos Follathe57ed982023-03-03 14:56:38 +000033Mbed TLS aims to fully protect against remote attacks and to enable the user
34application in providing full protection against remote attacks. Said
35protection is limited to providing security guarantees offered by the protocol
Janos Follath6ce259d2023-03-14 12:47:27 +000036being implemented. (For example Mbed TLS alone won't guarantee that the
37messages will arrive without delay, as the TLS protocol doesn't guarantee that
38either.)
Janos Follathce2985b2023-02-24 16:00:21 +000039
Janos Follath6ce259d2023-03-14 12:47:27 +000040**Warning!** Block ciphers do not yet achieve full protection against attackers
41who can measure the timing of packets with sufficient precision. For details
42and workarounds see the [Block Ciphers](#block-ciphers) section.
Janos Follath5e68d3b2023-03-08 16:53:50 +000043
Janos Follathadc8a0b2023-03-08 16:10:39 +000044### Local attacks
45
Janos Follath6cd04592023-03-14 15:43:24 +000046In this section, we consider an attacker who can run software on the same
47machine. The attacker has insufficient privileges to directly access Mbed TLS
48assets such as memory and files.
Janos Follathadc8a0b2023-03-08 16:10:39 +000049
50#### Timing attacks
Janos Follathce2985b2023-02-24 16:00:21 +000051
Janos Follath08094b82023-03-14 14:49:34 +000052The attacker is able to observe the timing of instructions executed by Mbed TLS
53by leveraging shared hardware that both Mbed TLS and the attacker have access
54to. Typical attack vectors include cache timings, memory bus contention and
55branch prediction.
Janos Follathadc8a0b2023-03-08 16:10:39 +000056
Janos Follathe57ed982023-03-03 14:56:38 +000057Mbed TLS provides limited protection against timing attacks. The cost of
58protecting against timing attacks widely varies depending on the granularity of
59the measurements and the noise present. Therefore the protection in Mbed TLS is
Janos Follathadc8a0b2023-03-08 16:10:39 +000060limited. We are only aiming to provide protection against **publicly
Janos Follath08094b82023-03-14 14:49:34 +000061documented attack techniques**.
62
63As attacks keep improving, so does Mbed TLS's protection. Mbed TLS is moving
64towards a model of fully timing-invariant code, but has not reached this point
65yet.
Janos Follath8257d8a2023-03-08 20:07:59 +000066
67**Remark:** Timing information can be observed over the network or through
68physical side channels as well. Remote and physical timing attacks are covered
69in the [Remote attacks](remote-attacks) and [Physical
70attacks](physical-attacks) sections respectively.
Janos Follathce2985b2023-02-24 16:00:21 +000071
Janos Follath661c88f2023-03-03 14:16:12 +000072**Warning!** Block ciphers do not yet achieve full protection. For
Janos Follath5e68d3b2023-03-08 16:53:50 +000073details and workarounds see the [Block Ciphers](#block-ciphers) section.
Janos Follathce2985b2023-02-24 16:00:21 +000074
Janos Follathadc8a0b2023-03-08 16:10:39 +000075#### Local non-timing side channels
76
77The attacker code running on the platform has access to some sensor capable of
78picking up information on the physical state of the hardware while Mbed TLS is
Janos Follath6ce259d2023-03-14 12:47:27 +000079running. This could for example be an analogue-to-digital converter on the
Janos Follathe3d677c2023-03-14 14:54:44 +000080platform that is located unfortunately enough to pick up the CPU noise.
Janos Follathadc8a0b2023-03-08 16:10:39 +000081
Janos Follath6ce259d2023-03-14 12:47:27 +000082Mbed TLS doesn't make any security guarantees against local non-timing-based
Janos Follathadc8a0b2023-03-08 16:10:39 +000083side channel attacks. If local non-timing attacks are present in a use case or
Janos Follath6ce259d2023-03-14 12:47:27 +000084a user application's threat model, they need to be mitigated by the platform.
Janos Follathadc8a0b2023-03-08 16:10:39 +000085
86#### Local fault injection attacks
87
88Software running on the same hardware can affect the physical state of the
Janos Follathe3d677c2023-03-14 14:54:44 +000089device and introduce faults.
Janos Follathadc8a0b2023-03-08 16:10:39 +000090
Janos Follath6ce259d2023-03-14 12:47:27 +000091Mbed TLS doesn't make any security guarantees against local fault injection
Janos Follathadc8a0b2023-03-08 16:10:39 +000092attacks. If local fault injection attacks are present in a use case or a user
Janos Follath6ce259d2023-03-14 12:47:27 +000093application's threat model, they need to be mitigated by the platform.
Janos Follathadc8a0b2023-03-08 16:10:39 +000094
Janos Follathce2985b2023-02-24 16:00:21 +000095### Physical attacks
96
Janos Follath6cd04592023-03-14 15:43:24 +000097In this section, we consider an attacker who can attacker has access to
98physical information about the hardware Mbed TLS is running on and/or can alter
99the physical state of the hardware (e.g. power analysis, radio emissions or
100fault injection).
Janos Follath5adb2c22023-03-06 14:54:59 +0000101
Janos Follath6ce259d2023-03-14 12:47:27 +0000102Mbed TLS doesn't make any security guarantees against physical attacks. If
Janos Follathe57ed982023-03-03 14:56:38 +0000103physical attacks are present in a use case or a user application's threat
Janos Follath6ce259d2023-03-14 12:47:27 +0000104model, they need to be mitigated by physical countermeasures.
Janos Follath389cdf42023-03-08 16:38:07 +0000105
106### Caveats
107
Janos Follath6ce259d2023-03-14 12:47:27 +0000108#### Out-of-scope countermeasures
Janos Follath389cdf42023-03-08 16:38:07 +0000109
110Mbed TLS has evolved organically and a well defined threat model hasn't always
111been present. Therefore, Mbed TLS might have countermeasures against attacks
112outside the above defined threat model.
113
114The presence of such countermeasures don't mean that Mbed TLS provides
115protection against a class of attacks outside of the above described threat
116model. Neither does it mean that the failure of such a countermeasure is
117considered a vulnerability.
Janos Follath5e68d3b2023-03-08 16:53:50 +0000118
119#### Block ciphers
120
121Currently there are four block ciphers in Mbed TLS: AES, CAMELLIA, ARIA and
122DES. The pure software implementation in Mbed TLS implementation uses lookup
123tables, which are vulnerable to timing attacks.
124
125These timing attacks can be physical, local or depending on network latency
126even a remote. The attacks can result in key recovery.
127
128**Workarounds:**
129
130- Turn on hardware acceleration for AES. This is supported only on selected
131 architectures and currently only available for AES. See configuration options
132 `MBEDTLS_AESCE_C`, `MBEDTLS_AESNI_C` and `MBEDTLS_PADLOCK_C` for details.
133- Add a secure alternative implementation (typically hardware acceleration) for
134 the vulnerable cipher. See the [Alternative Implementations
135Guide](docs/architecture/alternative-implementations.md) for more information.
136- Use cryptographic mechanisms that are not based on block ciphers. In
137 particular, for authenticated encryption, use ChaCha20/Poly1305 instead of
138 block cipher modes. For random generation, use HMAC\_DRBG instead of CTR\_DRBG.