2022-07-29 14:44:01 +02:00
|
|
|
## Reporting Vulnerabilities
|
2021-02-25 11:41:38 +01:00
|
|
|
|
|
|
|
If you think you have found an Mbed TLS security vulnerability, then please
|
|
|
|
send an email to the security team at
|
|
|
|
<mbed-tls-security@lists.trustedfirmware.org>.
|
|
|
|
|
|
|
|
## Security Incident Handling Process
|
|
|
|
|
2021-12-21 06:14:10 +01:00
|
|
|
Our security process is detailed in our
|
2021-03-16 12:04:44 +01:00
|
|
|
[security
|
2021-02-25 11:41:38 +01:00
|
|
|
center](https://developer.trustedfirmware.org/w/mbed-tls/security-center/).
|
|
|
|
|
|
|
|
Its primary goal is to ensure fixes are ready to be deployed when the issue
|
|
|
|
goes public.
|
|
|
|
|
|
|
|
## Maintained branches
|
|
|
|
|
2021-03-16 12:04:44 +01:00
|
|
|
Only the maintained branches, as listed in [`BRANCHES.md`](BRANCHES.md),
|
|
|
|
get security fixes.
|
2021-02-25 11:41:38 +01:00
|
|
|
Users are urged to always use the latest version of a maintained branch.
|
2023-02-24 17:00:21 +01:00
|
|
|
|
|
|
|
## Threat model
|
|
|
|
|
|
|
|
We use the following classification of attacks:
|
|
|
|
|
|
|
|
### Remote attacks
|
|
|
|
|
2023-03-06 15:54:59 +01:00
|
|
|
The attacker can observe and modify data sent over the network. This includes
|
|
|
|
observing the content and timing of individual packets, as well as suppressing
|
|
|
|
or delaying legitimate messages, and injecting messages.
|
|
|
|
|
2023-03-03 15:56:38 +01:00
|
|
|
Mbed TLS aims to fully protect against remote attacks and to enable the user
|
|
|
|
application in providing full protection against remote attacks. Said
|
|
|
|
protection is limited to providing security guarantees offered by the protocol
|
|
|
|
in question. (For example Mbed TLS alone won't guarantee that the messages will
|
|
|
|
arrive without delay, as the TLS protocol doesn't guarantee that either.)
|
2023-02-24 17:00:21 +01:00
|
|
|
|
2023-03-08 17:10:39 +01:00
|
|
|
### Local attacks
|
|
|
|
|
|
|
|
The attacker is capable of running code on the same hardware as Mbed TLS, but
|
|
|
|
there is still a security boundary between them (ie. the attacker can't for
|
|
|
|
example read secrets from Mbed TLS' memory directly).
|
|
|
|
|
|
|
|
#### Timing attacks
|
2023-02-24 17:00:21 +01:00
|
|
|
|
2023-03-06 15:54:59 +01:00
|
|
|
The attacker can gain information about the time taken by certain sets of
|
2023-03-08 17:10:39 +01:00
|
|
|
instructions in Mbed TLS operations. (See for example the [Flush+Reload
|
|
|
|
paper](https://eprint.iacr.org/2013/448.pdf).)
|
|
|
|
|
|
|
|
(Technically, timing information can be observed over the network or through
|
|
|
|
physical side channels as well. Network timing attacks are less powerful than
|
|
|
|
local and countermeasures protecting against local attacks prevent network
|
|
|
|
attacks as well. If the timing information is gained through physical side
|
|
|
|
channels, we consider them physical attacks and as such they are out of scope.)
|
2023-03-06 15:54:59 +01:00
|
|
|
|
2023-03-03 15:56:38 +01:00
|
|
|
Mbed TLS provides limited protection against timing attacks. The cost of
|
|
|
|
protecting against timing attacks widely varies depending on the granularity of
|
|
|
|
the measurements and the noise present. Therefore the protection in Mbed TLS is
|
2023-03-08 17:10:39 +01:00
|
|
|
limited. We are only aiming to provide protection against **publicly
|
|
|
|
documented** attacks, and this protection is not currently complete.
|
2023-02-24 17:00:21 +01:00
|
|
|
|
2023-03-03 15:16:12 +01:00
|
|
|
**Warning!** Block ciphers do not yet achieve full protection. For
|
2023-02-24 17:00:21 +01:00
|
|
|
details and workarounds see the section below.
|
|
|
|
|
2023-03-03 15:16:12 +01:00
|
|
|
Currently there are four block ciphers in Mbed TLS: AES, CAMELLIA, ARIA and DES.
|
2023-03-03 15:56:38 +01:00
|
|
|
The pure software implementation in Mbed TLS implementation uses lookup tables,
|
|
|
|
which are vulnerable to timing attacks.
|
2023-02-24 17:00:21 +01:00
|
|
|
|
|
|
|
**Workarounds:**
|
|
|
|
|
|
|
|
- Turn on hardware acceleration for AES. This is supported only on selected
|
|
|
|
architectures and currently only available for AES. See configuration options
|
|
|
|
`MBEDTLS_AESCE_C`, `MBEDTLS_AESNI_C` and `MBEDTLS_PADLOCK_C` for details.
|
2023-03-03 15:56:38 +01:00
|
|
|
- Add a secure alternative implementation (typically hardware acceleration) for
|
|
|
|
the vulnerable cipher. See the [Alternative Implementations
|
|
|
|
Guide](docs/architecture/alternative-implementations.md) for more information.
|
|
|
|
- Use cryptographic mechanisms that are not based on block ciphers. In
|
|
|
|
particular, for authenticated encryption, use ChaCha20/Poly1305 instead of
|
|
|
|
block cipher modes. For random generation, use HMAC\_DRBG instead of CTR\_DRBG.
|
2023-02-24 17:00:21 +01:00
|
|
|
|
2023-03-08 17:10:39 +01:00
|
|
|
#### Local non-timing side channels
|
|
|
|
|
|
|
|
The attacker code running on the platform has access to some sensor capable of
|
|
|
|
picking up information on the physical state of the hardware while Mbed TLS is
|
|
|
|
running. This can for example be any analogue to digital converter on the
|
|
|
|
platform that is located unfortunately enough to pick up the CPU noise. (See
|
|
|
|
for example the [Leaky Noise
|
|
|
|
paper](https://tches.iacr.org/index.php/TCHES/article/view/8297).)
|
|
|
|
|
|
|
|
Mbed TLS doesn't offer any security guarantees against local non-timing based
|
|
|
|
side channel attacks. If local non-timing attacks are present in a use case or
|
|
|
|
a user application's threat model, it needs to be mitigated by the platform.
|
|
|
|
|
|
|
|
#### Local fault injection attacks
|
|
|
|
|
|
|
|
Software running on the same hardware can affect the physical state of the
|
|
|
|
device and introduce faults. (See for example the [Row Hammer
|
|
|
|
paper](https://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf).)
|
|
|
|
|
|
|
|
Mbed TLS doesn't offer any security guarantees against local fault injection
|
|
|
|
attacks. If local fault injection attacks are present in a use case or a user
|
|
|
|
application's threat model, it needs to be mitigated by the platform.
|
|
|
|
|
2023-02-24 17:00:21 +01:00
|
|
|
### Physical attacks
|
|
|
|
|
2023-03-06 15:54:59 +01:00
|
|
|
The attacker has access to physical information about the hardware Mbed TLS is
|
2023-03-08 17:10:39 +01:00
|
|
|
running on and/or can alter the physical state of the hardware (eg. power
|
|
|
|
analysis, radio emissions or fault injection).
|
2023-03-06 15:54:59 +01:00
|
|
|
|
2023-03-08 17:10:39 +01:00
|
|
|
Mbed TLS doesn't offer any security guarantees against physical attacks. If
|
2023-03-03 15:56:38 +01:00
|
|
|
physical attacks are present in a use case or a user application's threat
|
|
|
|
model, it needs to be mitigated by physical countermeasures.
|
2023-03-08 17:38:07 +01:00
|
|
|
|
|
|
|
### Caveats
|
|
|
|
|
|
|
|
#### Out of scope countermeasures
|
|
|
|
|
|
|
|
Mbed TLS has evolved organically and a well defined threat model hasn't always
|
|
|
|
been present. Therefore, Mbed TLS might have countermeasures against attacks
|
|
|
|
outside the above defined threat model.
|
|
|
|
|
|
|
|
The presence of such countermeasures don't mean that Mbed TLS provides
|
|
|
|
protection against a class of attacks outside of the above described threat
|
|
|
|
model. Neither does it mean that the failure of such a countermeasure is
|
|
|
|
considered a vulnerability.
|