openSUSE Security Update: Security update for mbedtls
______________________________________________________________________________

Announcement ID:    openSUSE-SU-2024:0037-1
Rating:             moderate
References:         #1219336 
Cross-References:   CVE-2024-23170
Affected Products:
                    openSUSE Backports SLE-15-SP5
______________________________________________________________________________

   An update that fixes one vulnerability is now available.

Description:

   This update for mbedtls fixes the following issues:

   - Update to version 2.28.7:

     - Resolves CVE-2024-23170 boo#1219336

   - Update to 2.28.6:

     Changes:

     * Mbed TLS is now released under a dual Apache-2.0 OR GPL-2.0-or-later
       license. Users may choose which license they take the code under.

   - Update to 2.28.5:

     Features:

     * The documentation of mbedtls_ecp_group now describes the optimized
       representation of A for some curves. Fixes gh#Mbed-TLS/mbedtls#8045.

     Security:

     * Developers using mbedtls_pkcs5_pbes2() or mbedtls_pkcs12_pbe() should
       review the size of the output buffer passed to this function, and note
       that the output after decryption may include CBC padding. Consider
       moving to the new functions mbedtls_pkcs5_pbes2_ext() or
       mbedtls_pkcs12_pbe_ext() which checks for overflow of the output
       buffer and reports the actual length of the output.
     * Improve padding calculations in CBC decryption, NIST key unwrapping
       and RSA OAEP decryption. With the previous implementation, some
       compilers (notably recent versions of Clang and IAR) could produce
       non-constant time code, which could allow a padding oracle attack if
       the attacker has access to precise timing measurements.
     * Fix a buffer overread when parsing short TLS application data records
       in ARC4 or null-cipher cipher suites. Credit to OSS-Fuzz.

     Bugfix:

     * Fix x509 certificate generation to conform to RFC 5480 / RFC 5758 when
       using ECC key. The certificate was rejected by some crypto frameworks.
       Fixes gh#Mbed-TLS/mbedtls#2924.
     * Fix some cases where mbedtls_mpi_mod_exp, RSA key construction or
       ECDSA signature can silently return an incorrect result in low memory
       conditions.
     * Fix IAR compiler warnings. Fixes gh#Mbed-TLS/mbedtls#7873,
       gh#Mbed-TLS/mbedtls#4300.
     * Fix an issue when parsing an otherName subject alternative name into a
       mbedtls_x509_san_other_name struct. The type-id of the otherName was
       not copied to the struct. This meant that the struct had incomplete
       information about the otherName SAN and contained uninitialized memory.
     * Fix the detection of HardwareModuleName otherName SANs. These were
       being detected by comparing the wrong field and the check was
       erroneously inverted.
     * Fix an error when MBEDTLS_ECDSA_SIGN_ALT is defined but not
       MBEDTLS_ECDSA_VERIFY_ALT, causing ecdsa verify to fail. Fixes
       gh#Mbed-TLS/mbedtls#7498.  Functions in the ssl_cache module now
       return a negative MBEDTLS_ERR_xxx error code on failure. Before, they
       returned 1 to indicate failure in some cases involving a missing entry
       or a full cache.

     Changes:

     * In configurations with ARIA or Camellia but not AES, the value of
       MBEDTLS_CIPHER_BLKSIZE_MAX was 8, rather than 16 as the name might
       suggest. This did not affect any library code, because this macro was
       only used in relation with CMAC which does not support these ciphers.
       Its value is now 16 if ARIA or Camellia are present. This may affect
       application code that uses this macro.

   - Update to 2.28.4:

     Features:

     * Allow MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE to be set by
       setting the CMake variable of the same name at configuration time.

     Bugfix:

     * Fix crypt_and_hash decryption fail when used with a stream cipher mode
       of operation, due to the input not being a multiple of the block size.
       Resolves #7417.
     * Fix a bug where mbedtls_x509_string_to_names() would return success
       when given a invalid name string, if it did not contain '=' or ','.
     * Fix missing PSA initialization in sample programs when
       MBEDTLS_USE_PSA_CRYPTO is enabled.
     * Fix clang and armclang compilation error when targeting certain Arm
       M-class CPUs (Cortex-M0, Cortex-M0+, Cortex-M1, Cortex-M23, SecurCore
       SC000). Fixes #1077.
     * Fixed an issue that caused compile errors when using CMake and the IAR
       toolchain.
     * Fix the build with MBEDTLS_PSA_INJECT_ENTROPY. Fixes #7516.
     * Fix builds on Windows with clang.
     * Fix compilation warnings in aes.c for certain combinations
       of configuration options.
     * Fix a compilation error on some platforms when including mbedtls/ssl.h
       with all TLS support disabled. Fixes #6628.

     Changes:

     * Update test data to avoid failures of unit tests after 2023-08-07, and
       update expiring certififcates in the certs

   - Update to 2.28.3:

     Features:

     * Use HOSTCC (if it is set) when compiling C code during generation of
       the configuration-independent files. This allows them to be generated
       when CC is set for cross compilation.
     * AES-NI is now supported with Visual Studio.
     * AES-NI is now supported in 32-bit builds, or when MBEDTLS_HAVE_ASM is
       disabled, when compiling with GCC or Clang or a compatible compiler
       for a target CPU that supports the requisite instructions (for example
       gcc -m32
       -msse2 -maes -mpclmul). (Generic x86 builds with GCC-like compilers
        still require MBEDTLS_HAVE_ASM and a 64-bit target.)

     Security:

     * MBEDTLS_AESNI_C, which is enabled by default, was silently ignored on
       builds that couldn't compile the GCC-style assembly implementation
       (most notably builds with Visual Studio), leaving them vulnerable to
       timing side-channel attacks. There is now an intrinsics-based AES-NI
       implementation as a fallback for when the assembly one cannot be used.

     Bugfix:

     * Fix a build issue on Windows where the source and build directory
       could not be on different drives (#5751).
     * Fix possible integer overflow in mbedtls_timing_hardclock(), which
       could cause a crash for certain platforms & compiler options.
     * Fix IAR compiler warnings. Fixes #6924.
     * Fix a bug in the build where directory names containing spaces were
       causing generate_errors.pl to error out resulting in a build failure.
       Fixes issue #6879.
     * Fix compile error where MBEDTLS_RSA_C and MBEDTLS_X509_CRT_WRITE_C are
       defined, but MBEDTLS_PK_RSA_ALT_SUPPORT is not defined. Fixes #3174.
     * Fix a build issue when defining MBEDTLS_TIMING_ALT and
       MBEDTLS_SELF_TEST. The library would not link if the user didn't
       provide an external self-test function. The self-test is now provided
       regardless of the choice of internal/alternative timing
       implementation. Fixes #6923.
     * mbedtls_x509write_crt_set_serial() now explicitly rejects serial
       numbers whose binary representation is longer than 20 bytes. This was
       already forbidden by the standard (RFC5280 - section 4.1.2.2) and now
       it's being enforced also at code level.
     * Fix potential undefined behavior in mbedtls_mpi_sub_abs(). Reported by
       Pascal Cuoq using TrustInSoft Analyzer in #6701; observed
       independently by Aaron Ucko under Valgrind.
     * Fix behavior of certain sample programs which could, when run with no
       arguments, access uninitialized memory in some cases. Fixes #6700
       (which was found by TrustInSoft Analyzer during REDOCS'22) and #1120.
     * Fix build errors in test programs when MBEDTLS_CERTS_C is disabled.
       Fixes #6243.
     * Fix parsing of X.509 SubjectAlternativeName extension. Previously,
       malformed alternative name components were not caught during initial
       certificate parsing, but only on subsequent calls to
       mbedtls_x509_parse_subject_alt_name(). Fixes #2838.
     * Fix bug in conversion from OID to string in
       mbedtls_oid_get_numeric_string(). OIDs such as 2.40.0.25 are now
       printed correctly.
     * Reject OIDs with overlong-encoded subidentifiers when converting them
       to a string.
     * Reject OIDs with subidentifier values exceeding UINT_MAX. Such
       subidentifiers can be valid, but Mbed TLS cannot currently handle them.
     * Reject OIDs that have unterminated subidentifiers, or (equivalently)
       have the most-significant bit set in their last byte.
     * Silence a warning about an unused local variable in bignum.c on some
       architectures. Fixes #7166.
     * Silence warnings from clang -Wdocumentation about empty \retval
       descriptions, which started appearing with Clang 15. Fixes #6960.
     * Fix undefined behavior in mbedtls_ssl_read() and mbedtls_ssl_write()
       if len argument is 0 and buffer is NULL.

     Changes:

     * The C code follows a new coding style. This is transparent for users
       but affects contributors and maintainers of local patches. For more
       information, see
          ng-style/
     * Changed the default MBEDTLS_ECP_WINDOW_SIZE from 6 to 2.  As tested in
       issue 6790, the correlation between this define and RSA decryption
       performance has changed lately due to security fixes.  To fix the
       performance degradation when using default values the window was
       reduced from 6 to 2, a value that gives the best or close to best
       results when tested on Cortex-M4 and Intel i7.

   - Setup the mbedtls-2 package
   - Build AVX2 enabled hwcaps library for x86_64-v3


Patch Instructions:

   To install this openSUSE Security Update use the SUSE recommended installation methods
   like YaST online_update or "zypper patch".

   Alternatively you can run the command listed for your product:

   - openSUSE Backports SLE-15-SP5:

      zypper in -t patch openSUSE-2024-37=1



Package List:

   - openSUSE Backports SLE-15-SP5 (aarch64 i586 ppc64le s390x x86_64):

      libmbedcrypto7-2.28.7-bp155.2.3.1
      libmbedtls14-2.28.7-bp155.2.3.1
      libmbedx509-1-2.28.7-bp155.2.3.1
      mbedtls-devel-2.28.7-bp155.2.3.1

   - openSUSE Backports SLE-15-SP5 (aarch64_ilp32):

      libmbedcrypto7-64bit-2.28.7-bp155.2.3.1
      libmbedtls14-64bit-2.28.7-bp155.2.3.1
      libmbedx509-1-64bit-2.28.7-bp155.2.3.1

   - openSUSE Backports SLE-15-SP5 (x86_64):

      libmbedcrypto7-32bit-2.28.7-bp155.2.3.1
      libmbedtls14-32bit-2.28.7-bp155.2.3.1
      libmbedx509-1-32bit-2.28.7-bp155.2.3.1


References:

   https://www.suse.com/security/cve/CVE-2024-23170.html
   https://bugzilla.suse.com/1219336

openSUSE: 2024:0037-1 moderate: mbedtls

January 31, 2024
An update that fixes one vulnerability is now available

Description

This update for mbedtls fixes the following issues: - Update to version 2.28.7: - Resolves CVE-2024-23170 boo#1219336 - Update to 2.28.6: Changes: * Mbed TLS is now released under a dual Apache-2.0 OR GPL-2.0-or-later license. Users may choose which license they take the code under. - Update to 2.28.5: Features: * The documentation of mbedtls_ecp_group now describes the optimized representation of A for some curves. Fixes gh#Mbed-TLS/mbedtls#8045. Security: * Developers using mbedtls_pkcs5_pbes2() or mbedtls_pkcs12_pbe() should review the size of the output buffer passed to this function, and note that the output after decryption may include CBC padding. Consider moving to the new functions mbedtls_pkcs5_pbes2_ext() or mbedtls_pkcs12_pbe_ext() which checks for overflow of the output buffer and reports the actual length of the output. * Improve padding calculations in CBC decryption, NIST key unwrapping and RSA OAEP decryption. With the previous implementation, some compilers (notably recent versions of Clang and IAR) could produce non-constant time code, which could allow a padding oracle attack if the attacker has access to precise timing measurements. * Fix a buffer overread when parsing short TLS application data records in ARC4 or null-cipher cipher suites. Credit to OSS-Fuzz. Bugfix: * Fix x509 certificate generation to conform to RFC 5480 / RFC 5758 when using ECC key. The certificate was rejected by some crypto frameworks. Fixes gh#Mbed-TLS/mbedtls#2924. * Fix some cases where mbedtls_mpi_mod_exp, RSA key construction or ECDSA signature can silently return an incorrect result in low memory conditions. * Fix IAR compiler warnings. Fixes gh#Mbed-TLS/mbedtls#7873, gh#Mbed-TLS/mbedtls#4300. * Fix an issue when parsing an otherName subject alternative name into a mbedtls_x509_san_other_name struct. The type-id of the otherName was not copied to the struct. This meant that the struct had incomplete information about the otherName SAN and contained uninitialized memory. * Fix the detection of HardwareModuleName otherName SANs. These were being detected by comparing the wrong field and the check was erroneously inverted. * Fix an error when MBEDTLS_ECDSA_SIGN_ALT is defined but not MBEDTLS_ECDSA_VERIFY_ALT, causing ecdsa verify to fail. Fixes gh#Mbed-TLS/mbedtls#7498. Functions in the ssl_cache module now return a negative MBEDTLS_ERR_xxx error code on failure. Before, they returned 1 to indicate failure in some cases involving a missing entry or a full cache. Changes: * In configurations with ARIA or Camellia but not AES, the value of MBEDTLS_CIPHER_BLKSIZE_MAX was 8, rather than 16 as the name might suggest. This did not affect any library code, because this macro was only used in relation with CMAC which does not support these ciphers. Its value is now 16 if ARIA or Camellia are present. This may affect application code that uses this macro. - Update to 2.28.4: Features: * Allow MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE to be set by setting the CMake variable of the same name at configuration time. Bugfix: * Fix crypt_and_hash decryption fail when used with a stream cipher mode of operation, due to the input not being a multiple of the block size. Resolves #7417. * Fix a bug where mbedtls_x509_string_to_names() would return success when given a invalid name string, if it did not contain '=' or ','. * Fix missing PSA initialization in sample programs when MBEDTLS_USE_PSA_CRYPTO is enabled. * Fix clang and armclang compilation error when targeting certain Arm M-class CPUs (Cortex-M0, Cortex-M0+, Cortex-M1, Cortex-M23, SecurCore SC000). Fixes #1077. * Fixed an issue that caused compile errors when using CMake and the IAR toolchain. * Fix the build with MBEDTLS_PSA_INJECT_ENTROPY. Fixes #7516. * Fix builds on Windows with clang. * Fix compilation warnings in aes.c for certain combinations of configuration options. * Fix a compilation error on some platforms when including mbedtls/ssl.h with all TLS support disabled. Fixes #6628. Changes: * Update test data to avoid failures of unit tests after 2023-08-07, and update expiring certififcates in the certs - Update to 2.28.3: Features: * Use HOSTCC (if it is set) when compiling C code during generation of the configuration-independent files. This allows them to be generated when CC is set for cross compilation. * AES-NI is now supported with Visual Studio. * AES-NI is now supported in 32-bit builds, or when MBEDTLS_HAVE_ASM is disabled, when compiling with GCC or Clang or a compatible compiler for a target CPU that supports the requisite instructions (for example gcc -m32 -msse2 -maes -mpclmul). (Generic x86 builds with GCC-like compilers still require MBEDTLS_HAVE_ASM and a 64-bit target.) Security: * MBEDTLS_AESNI_C, which is enabled by default, was silently ignored on builds that couldn't compile the GCC-style assembly implementation (most notably builds with Visual Studio), leaving them vulnerable to timing side-channel attacks. There is now an intrinsics-based AES-NI implementation as a fallback for when the assembly one cannot be used. Bugfix: * Fix a build issue on Windows where the source and build directory could not be on different drives (#5751). * Fix possible integer overflow in mbedtls_timing_hardclock(), which could cause a crash for certain platforms & compiler options. * Fix IAR compiler warnings. Fixes #6924. * Fix a bug in the build where directory names containing spaces were causing generate_errors.pl to error out resulting in a build failure. Fixes issue #6879. * Fix compile error where MBEDTLS_RSA_C and MBEDTLS_X509_CRT_WRITE_C are defined, but MBEDTLS_PK_RSA_ALT_SUPPORT is not defined. Fixes #3174. * Fix a build issue when defining MBEDTLS_TIMING_ALT and MBEDTLS_SELF_TEST. The library would not link if the user didn't provide an external self-test function. The self-test is now provided regardless of the choice of internal/alternative timing implementation. Fixes #6923. * mbedtls_x509write_crt_set_serial() now explicitly rejects serial numbers whose binary representation is longer than 20 bytes. This was already forbidden by the standard (RFC5280 - section 4.1.2.2) and now it's being enforced also at code level. * Fix potential undefined behavior in mbedtls_mpi_sub_abs(). Reported by Pascal Cuoq using TrustInSoft Analyzer in #6701; observed independently by Aaron Ucko under Valgrind. * Fix behavior of certain sample programs which could, when run with no arguments, access uninitialized memory in some cases. Fixes #6700 (which was found by TrustInSoft Analyzer during REDOCS'22) and #1120. * Fix build errors in test programs when MBEDTLS_CERTS_C is disabled. Fixes #6243. * Fix parsing of X.509 SubjectAlternativeName extension. Previously, malformed alternative name components were not caught during initial certificate parsing, but only on subsequent calls to mbedtls_x509_parse_subject_alt_name(). Fixes #2838. * Fix bug in conversion from OID to string in mbedtls_oid_get_numeric_string(). OIDs such as 2.40.0.25 are now printed correctly. * Reject OIDs with overlong-encoded subidentifiers when converting them to a string. * Reject OIDs with subidentifier values exceeding UINT_MAX. Such subidentifiers can be valid, but Mbed TLS cannot currently handle them. * Reject OIDs that have unterminated subidentifiers, or (equivalently) have the most-significant bit set in their last byte. * Silence a warning about an unused local variable in bignum.c on some architectures. Fixes #7166. * Silence warnings from clang -Wdocumentation about empty \retval descriptions, which started appearing with Clang 15. Fixes #6960. * Fix undefined behavior in mbedtls_ssl_read() and mbedtls_ssl_write() if len argument is 0 and buffer is NULL. Changes: * The C code follows a new coding style. This is transparent for users but affects contributors and maintainers of local patches. For more information, see ng-style/ * Changed the default MBEDTLS_ECP_WINDOW_SIZE from 6 to 2. As tested in issue 6790, the correlation between this define and RSA decryption performance has changed lately due to security fixes. To fix the performance degradation when using default values the window was reduced from 6 to 2, a value that gives the best or close to best results when tested on Cortex-M4 and Intel i7. - Setup the mbedtls-2 package - Build AVX2 enabled hwcaps library for x86_64-v3

 

Patch

Patch Instructions: To install this openSUSE Security Update use the SUSE recommended installation methods like YaST online_update or "zypper patch". Alternatively you can run the command listed for your product: - openSUSE Backports SLE-15-SP5: zypper in -t patch openSUSE-2024-37=1


Package List

- openSUSE Backports SLE-15-SP5 (aarch64 i586 ppc64le s390x x86_64): libmbedcrypto7-2.28.7-bp155.2.3.1 libmbedtls14-2.28.7-bp155.2.3.1 libmbedx509-1-2.28.7-bp155.2.3.1 mbedtls-devel-2.28.7-bp155.2.3.1 - openSUSE Backports SLE-15-SP5 (aarch64_ilp32): libmbedcrypto7-64bit-2.28.7-bp155.2.3.1 libmbedtls14-64bit-2.28.7-bp155.2.3.1 libmbedx509-1-64bit-2.28.7-bp155.2.3.1 - openSUSE Backports SLE-15-SP5 (x86_64): libmbedcrypto7-32bit-2.28.7-bp155.2.3.1 libmbedtls14-32bit-2.28.7-bp155.2.3.1 libmbedx509-1-32bit-2.28.7-bp155.2.3.1


References

https://www.suse.com/security/cve/CVE-2024-23170.html https://bugzilla.suse.com/1219336


Severity
Announcement ID: openSUSE-SU-2024:0037-1
Rating: moderate
Affected Products: openSUSE Backports SLE-15-SP5 .

Related News