Tom Cosgrove | 0b86ac1 | 2022-07-29 13:44:01 +0100 | [diff] [blame] | 1 | ## Reporting Vulnerabilities |
Manuel Pégourié-Gonnard | a21abf2 | 2021-02-25 11:41:38 +0100 | [diff] [blame] | 2 | |
| 3 | If you think you have found an Mbed TLS security vulnerability, then please |
| 4 | send an email to the security team at |
| 5 | <mbed-tls-security@lists.trustedfirmware.org>. |
| 6 | |
| 7 | ## Security Incident Handling Process |
| 8 | |
Shaun Case | 8b0ecbc | 2021-12-20 21:14:10 -0800 | [diff] [blame] | 9 | Our security process is detailed in our |
Gilles Peskine | a23df13 | 2021-03-16 12:04:44 +0100 | [diff] [blame] | 10 | [security |
Manuel Pégourié-Gonnard | a21abf2 | 2021-02-25 11:41:38 +0100 | [diff] [blame] | 11 | center](https://developer.trustedfirmware.org/w/mbed-tls/security-center/). |
| 12 | |
| 13 | Its primary goal is to ensure fixes are ready to be deployed when the issue |
| 14 | goes public. |
| 15 | |
| 16 | ## Maintained branches |
| 17 | |
Gilles Peskine | a23df13 | 2021-03-16 12:04:44 +0100 | [diff] [blame] | 18 | Only the maintained branches, as listed in [`BRANCHES.md`](BRANCHES.md), |
| 19 | get security fixes. |
Manuel Pégourié-Gonnard | a21abf2 | 2021-02-25 11:41:38 +0100 | [diff] [blame] | 20 | Users are urged to always use the latest version of a maintained branch. |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 21 | |
| 22 | ## Threat model |
| 23 | |
| 24 | We use the following classification of attacks: |
| 25 | |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 26 | ### Remote attacks |
| 27 | |
Janos Follath | 9ec195c | 2023-03-06 14:54:59 +0000 | [diff] [blame] | 28 | The attacker can observe and modify data sent over the network. This includes |
| 29 | observing the content and timing of individual packets, as well as suppressing |
| 30 | or delaying legitimate messages, and injecting messages. |
| 31 | |
Janos Follath | 144dd7d | 2023-03-03 14:56:38 +0000 | [diff] [blame] | 32 | Mbed TLS aims to fully protect against remote attacks and to enable the user |
| 33 | application in providing full protection against remote attacks. Said |
| 34 | protection is limited to providing security guarantees offered by the protocol |
| 35 | in question. (For example Mbed TLS alone won't guarantee that the messages will |
| 36 | arrive without delay, as the TLS protocol doesn't guarantee that either.) |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 37 | |
Janos Follath | fef82fd | 2023-03-08 16:10:39 +0000 | [diff] [blame^] | 38 | ### Local attacks |
| 39 | |
| 40 | The attacker is capable of running code on the same hardware as Mbed TLS, but |
| 41 | there is still a security boundary between them (ie. the attacker can't for |
| 42 | example read secrets from Mbed TLS' memory directly). |
| 43 | |
| 44 | #### Timing attacks |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 45 | |
Janos Follath | 9ec195c | 2023-03-06 14:54:59 +0000 | [diff] [blame] | 46 | The attacker can gain information about the time taken by certain sets of |
Janos Follath | fef82fd | 2023-03-08 16:10:39 +0000 | [diff] [blame^] | 47 | instructions in Mbed TLS operations. (See for example the [Flush+Reload |
| 48 | paper](https://eprint.iacr.org/2013/448.pdf).) |
| 49 | |
| 50 | (Technically, timing information can be observed over the network or through |
| 51 | physical side channels as well. Network timing attacks are less powerful than |
| 52 | local and countermeasures protecting against local attacks prevent network |
| 53 | attacks as well. If the timing information is gained through physical side |
| 54 | channels, we consider them physical attacks and as such they are out of scope.) |
Janos Follath | 9ec195c | 2023-03-06 14:54:59 +0000 | [diff] [blame] | 55 | |
Janos Follath | 144dd7d | 2023-03-03 14:56:38 +0000 | [diff] [blame] | 56 | Mbed TLS provides limited protection against timing attacks. The cost of |
| 57 | protecting against timing attacks widely varies depending on the granularity of |
| 58 | the measurements and the noise present. Therefore the protection in Mbed TLS is |
Janos Follath | fef82fd | 2023-03-08 16:10:39 +0000 | [diff] [blame^] | 59 | limited. We are only aiming to provide protection against **publicly |
| 60 | documented** attacks, and this protection is not currently complete. |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 61 | |
Janos Follath | 24792d0 | 2023-03-03 14:16:12 +0000 | [diff] [blame] | 62 | **Warning!** Block ciphers do not yet achieve full protection. For |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 63 | details and workarounds see the section below. |
| 64 | |
Janos Follath | 24792d0 | 2023-03-03 14:16:12 +0000 | [diff] [blame] | 65 | Currently there are four block ciphers in Mbed TLS: AES, CAMELLIA, ARIA and DES. |
Janos Follath | 144dd7d | 2023-03-03 14:56:38 +0000 | [diff] [blame] | 66 | The pure software implementation in Mbed TLS implementation uses lookup tables, |
| 67 | which are vulnerable to timing attacks. |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 68 | |
| 69 | **Workarounds:** |
| 70 | |
| 71 | - Turn on hardware acceleration for AES. This is supported only on selected |
| 72 | architectures and currently only available for AES. See configuration options |
| 73 | `MBEDTLS_AESCE_C`, `MBEDTLS_AESNI_C` and `MBEDTLS_PADLOCK_C` for details. |
Janos Follath | 144dd7d | 2023-03-03 14:56:38 +0000 | [diff] [blame] | 74 | - Add a secure alternative implementation (typically hardware acceleration) for |
| 75 | the vulnerable cipher. See the [Alternative Implementations |
| 76 | Guide](docs/architecture/alternative-implementations.md) for more information. |
| 77 | - Use cryptographic mechanisms that are not based on block ciphers. In |
| 78 | particular, for authenticated encryption, use ChaCha20/Poly1305 instead of |
| 79 | block cipher modes. For random generation, use HMAC\_DRBG instead of CTR\_DRBG. |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 80 | |
Janos Follath | fef82fd | 2023-03-08 16:10:39 +0000 | [diff] [blame^] | 81 | #### Local non-timing side channels |
| 82 | |
| 83 | The attacker code running on the platform has access to some sensor capable of |
| 84 | picking up information on the physical state of the hardware while Mbed TLS is |
| 85 | running. This can for example be any analogue to digital converter on the |
| 86 | platform that is located unfortunately enough to pick up the CPU noise. (See |
| 87 | for example the [Leaky Noise |
| 88 | paper](https://tches.iacr.org/index.php/TCHES/article/view/8297).) |
| 89 | |
| 90 | Mbed TLS doesn't offer any security guarantees against local non-timing based |
| 91 | side channel attacks. If local non-timing attacks are present in a use case or |
| 92 | a user application's threat model, it needs to be mitigated by the platform. |
| 93 | |
| 94 | #### Local fault injection attacks |
| 95 | |
| 96 | Software running on the same hardware can affect the physical state of the |
| 97 | device and introduce faults. (See for example the [Row Hammer |
| 98 | paper](https://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf).) |
| 99 | |
| 100 | Mbed TLS doesn't offer any security guarantees against local fault injection |
| 101 | attacks. If local fault injection attacks are present in a use case or a user |
| 102 | application's threat model, it needs to be mitigated by the platform. |
| 103 | |
Janos Follath | 18d4173 | 2023-02-24 16:00:21 +0000 | [diff] [blame] | 104 | ### Physical attacks |
| 105 | |
Janos Follath | 9ec195c | 2023-03-06 14:54:59 +0000 | [diff] [blame] | 106 | The attacker has access to physical information about the hardware Mbed TLS is |
Janos Follath | fef82fd | 2023-03-08 16:10:39 +0000 | [diff] [blame^] | 107 | running on and/or can alter the physical state of the hardware (eg. power |
| 108 | analysis, radio emissions or fault injection). |
Janos Follath | 9ec195c | 2023-03-06 14:54:59 +0000 | [diff] [blame] | 109 | |
Janos Follath | fef82fd | 2023-03-08 16:10:39 +0000 | [diff] [blame^] | 110 | Mbed TLS doesn't offer any security guarantees against physical attacks. If |
Janos Follath | 144dd7d | 2023-03-03 14:56:38 +0000 | [diff] [blame] | 111 | physical attacks are present in a use case or a user application's threat |
| 112 | model, it needs to be mitigated by physical countermeasures. |