Skip to content

Mbed TLS 2.16.3

Compare
Choose a tag to compare
@Patater Patater released this 18 Sep 13:08
· 24140 commits to development since this release

Description

Mbed TLS 2.16.3 is a maintenance release of the Mbed TLS 2.16 branch, and
provides bug fixes and minor enhancements.

Security

  • Fix a missing error detection in ECJPAKE. This could have caused a predictable shared secret if a hardware accelerator failed and the other side of the key exchange had a similar bug.
  • When writing a private EC key, use a constant size for the private value, as specified in RFC 5915. Previously, the value was written as an ASN.1 INTEGER, which caused the size of the key to leak about 1 bit of information on average and could cause the value to be 1 byte too large for the output buffer.
  • The deterministic ECDSA calculation reused the scheme's HMAC-DRBG to implement blinding. Because of this for the same key and message the same blinding value was generated. This reduced the effectiveness of the countermeasure and leaked information about the private key through side channels. Reported by Jack Lloyd.

API Changes

  • The new function mbedtls_ecdsa_sign_det_ext() is similar to mbedtls_ecdsa_sign_det() but allows passing an external RNG for the purpose of blinding.

Bugfix

  • Fix to allow building test suites with any warning that detects unused functions. Fixes #1628.
  • Fix typo in net_would_block(). Fixes #528 reported by github-monoculture.
  • Remove redundant include file in timing.c. Fixes #2640 reported by irwir.
  • Fix Visual Studio Release x64 build configuration by inheriting PlatformToolset from the project configuration. Fixes #1430 reported by irwir.
  • Enable Suite B with subset of ECP curves. Make sure the code compiles even if some curves are not defined. Fixes #1591 reported by dbedev.
  • Fix misuse of signed arithmetic in the HAVEGE module. #2598
  • Update test certificates that were about to expire. Reported by Bernhard M. Wiedemann in #2357.
  • Fix the build on ARMv5TE in ARM mode to not use assembly instructions that are only available in Thumb mode. Fix contributed by Aurelien Jarno in #2169.
  • Fix propagation of restart contexts in restartable EC operations. This could previously lead to segmentation faults in builds using an address-sanitizer and enabling but not using MBEDTLS_ECP_RESTARTABLE.
  • Fix memory leak in in mpi_miller_rabin(). Contributed by Jens Wiklander jens.wiklander@linaro.org in #2363
  • Improve code clarity in x509_crt module, removing false-positive uninitialized variable warnings on some recent toolchains (GCC8, etc). Discovered and fixed by Andy Gross (Linaro), #2392.
  • Fix bug in endianness conversion in bignum module. This lead to functionally incorrect code on bigendian systems which don't have BYTE_ORDER defined. Reported by Brendan Shanks. Fixes #2622.
  • Fix undefined memset(NULL) call in test_suite_nist_kw.
  • Make NV seed test support MBEDTLS_ENTROPY_FORCE_SHA256.
  • Zero length buffer check for undefined behavior in mbedtls_platform_zeroize(). Fixes ARMmbed/mbed-crypto#49.

Changes

  • Make it easier to define MBEDTLS_PARAM_FAILED as assert (which config.h suggests). #2671
  • Make make clean clean all programs always. Fixes #1862.

Who should update

We recommend all affected users should update to take advantage of the bug
fixes contained in this release at an appropriate point in their development
lifecycle.