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 | |
| 26 | - **Remote Attacks:** The attacker can observe and modify data sent over the |
| 27 | network. This includes observing timing of individual packets and potentially |
| 28 | delaying legitimate messages. |
| 29 | - **Timing Attacks:** The attacker can gain information about the time certain |
| 30 | sets of instructions in Mbed TLS operations take. |
| 31 | - **Physical Attacks:** The attacker has access to physical information about |
| 32 | the hardware Mbed TLS is running on and/or can alter the physical state of |
| 33 | the hardware. |
| 34 | |
| 35 | ### Remote attacks |
| 36 | |
| 37 | Mbed TLS aims to fully protect against remote attacks. Mbed Crypto aims to |
| 38 | enable the user application in providing full protection against remote |
| 39 | attacks. Said protection is limited to providing security guarantees offered by |
| 40 | the protocol in question. (For example Mbed TLS alone won't guarantee that the |
| 41 | messages will arrive without delay, as the TLS protocol doesn't guarantee that |
| 42 | either.) |
| 43 | |
| 44 | ### Timing attacks |
| 45 | |
| 46 | Mbed TLS and Mbed Crypto provide limited protection against timing attacks. The |
| 47 | cost of protecting against timing attacks widely varies depending on the |
| 48 | granularity of the measurements and the noise present. Therefore the protection |
| 49 | in Mbed TLS and Mbed Crypto is limited. We are only aiming to provide protection |
| 50 | against publicly documented attacks. |
| 51 | |
| 52 | **Warning!** Block ciphers constitute an exception from this protection. For |
| 53 | details and workarounds see the section below. |
| 54 | |
| 55 | #### Block Ciphers |
| 56 | |
| 57 | Currently there are 4 block ciphers in Mbed TLS: AES, CAMELLIA, ARIA and DES. |
| 58 | The Mbed TLS implementation uses lookup tables, which are vulnerable to timing |
| 59 | attacks. |
| 60 | |
| 61 | **Workarounds:** |
| 62 | |
| 63 | - Turn on hardware acceleration for AES. This is supported only on selected |
| 64 | architectures and currently only available for AES. See configuration options |
| 65 | `MBEDTLS_AESCE_C`, `MBEDTLS_AESNI_C` and `MBEDTLS_PADLOCK_C` for details. |
| 66 | - Add a secure alternative implementation (typically bitslice implementation or |
| 67 | hardware acceleration) for the vulnerable cipher. See the [Alternative |
| 68 | Implementations Guide](docs/architecture/alternative-implementations.md) for |
| 69 | more information. |
| 70 | - Instead of a block cipher, use ChaCha20/Poly1305 for encryption and data |
| 71 | origin authentication. |
| 72 | |
| 73 | ### Physical attacks |
| 74 | |
| 75 | Physical attacks are out of scope. Any attack using information about or |
| 76 | influencing the physical state of the hardware is considered physical, |
| 77 | independently of the attack vector. (For example Row Hammer and Screaming |
| 78 | Channels are considered physical attacks.) If physical attacks are present in a |
| 79 | use case or a user application's threat model, it needs to be mitigated by |
| 80 | physical countermeasures. |