Skip to content

Releases: wolfSSL/wolfssl

wolfSSL release version 4.7.0

15 Feb 23:23
830de9a
Compare
Choose a tag to compare

wolfSSL Release 4.7.0 (February 16, 2021)

Release 4.7.0 of wolfSSL embedded TLS has bug fixes and new features including:

New Feature Additions

  • Compatibility Layer expansion SSL_get_verify_mode, X509_VERIFY_PARAM API, X509_STORE_CTX API added
  • WOLFSSL_PSK_IDENTITY_ALERT macro added for enabling a subset of TLS alerts
  • Function wolfSSL_CTX_NoTicketTLSv12 added to enable turning off session tickets with TLS 1.2 while keeping TLS 1.3 session tickets available
  • Implement RFC 5705: Keying Material Exporters for TLS
  • Added --enable-reproducible-build flag for making more deterministic library outputs to assist debugging
  • Added support for S/MIME (Secure/Multipurpose Internet Mail Extensions) bundles

Fixes

  • Fix to free mutex when cert manager is free’d
  • Compatibility layer EVP function to return the correct block size and type
  • DTLS secure renegotiation fixes including resetting timeout and retransmit on duplicate HelloRequest
  • Fix for edge case with shrink buffer and secure renegotiation
  • Compile fix for type used with curve448 and PPC64
  • Fixes for SP math all with PPC64 and other embedded compilers
  • SP math all fix when performing montgomery reduction on one word modulus
  • Fixes to SP math all to better support digit size of 8-bit
  • Fix for results of edge case with SP integer square operation
  • Stop non-ct mod inv from using register x29 with SP ARM64 build
  • Fix edge case when generating z value of ECC with SP code
  • Fixes for PKCS7 with crypto callback (devId) with RSA and RNG
  • Fix for compiling builds with RSA verify and public only
  • Fix for PKCS11 not properly exporting the public key due to a missing key type field
  • Call certificate callback with certificate depth issues
  • Fix for out-of-bounds read in TLSX_CSR_Parse()
  • Fix incorrect AES-GCM tag generation in the EVP layer
  • Fix for out of bounds write with SP math all enabled and an edge case of calling sp_tohex on the result of sp_mont_norm
  • Fix for parameter check in sp_rand_prime to handle 0 length values
  • Fix for edge case of failing malloc resulting in an out of bounds write with SHA256/SHA512 when small stack is enabled

Improvements/Optimizations

  • Added --enable-wolftpm option for easily building wolfSSL to be used with wolfTPM
  • DTLS macro WOLFSSL_DTLS_RESEND_ONLY_TIMEOUT added for resending flight only after a timeout
  • Update linux kernel module to use kvmalloc and kvfree
  • Add user settings option to cmake build
  • Added support for AES GCM session ticket encryption
  • Thread protection for global RNG used by wolfSSL_RAND_bytes function calls
  • Sanity check on FIPs configure flag used against the version of FIPs bundle
  • --enable-aesgcm=table now is compatible with --enable-linuxkm
  • Increase output buffer size that wolfSSL_RAND_bytes can handle
  • Out of directory builds resolved, wolfSSL can now be built in a separate directory than the root wolfssl directory

Vulnerabilities

  • [HIGH] CVE-2021-3336: In earlier versions of wolfSSL there exists a potential man in the middle attack on TLS 1.3 clients. Malicious attackers with a privileged network position can impersonate TLS 1.3 servers and bypass authentication. Users that have applications with client side code and have TLS 1.3 turned on, should update to the latest version of wolfSSL. Users that do not have TLS 1.3 turned on, or that are server side only, are NOT affected by this report. For the code change see #3676. Thanks to Aina Toky Rasoamanana and Olivier Levillain from Télécom SudParis for the report.
  • [LOW] In the case of using custom ECC curves there is the potential for a crafted compressed ECC key that has a custom prime value to cause a hang when imported. This only affects applications that are loading in ECC keys with wolfSSL builds that have compressed ECC keys and custom ECC curves enabled.
  • [LOW] With TLS 1.3 authenticated-only ciphers a section of the server hello could contain 16 bytes of uninitialized data when sent to the connected peer. This affects only a specific build of wolfSSL with TLS 1.3 early data enabled and using authenticated-only ciphers with TLS 1.3.

For additional vulnerability information visit the vulnerability page at
https://www.wolfssl.com/docs/security-vulnerabilities/

See INSTALL file for build instructions.
More info can be found on-line at https://wolfssl.com/wolfSSL/Docs.html

wolfSSL release version 4.6.0

23 Dec 14:43
9c87f97
Compare
Choose a tag to compare

wolfSSL Release 4.6.0 (December 22, 2020)

Release 4.6.0 of wolfSSL embedded TLS has bug fixes and new features including:

New Feature Additions

New Build Options
  • wolfSSL now enables linux kernel module support. Big news for Linux kernel module developers with crypto requirements! wolfCrypt and wolfSSL are now loadable as modules in the Linux kernel, providing the entire libwolfssl API natively to other kernel modules. For the first time on Linux, the entire TLS protocol stack can be loaded as a module, allowing fully kernel-resident TLS/DTLS endpoints with in-kernel handshaking. (--enable-linuxkm, --enable-linuxkm-defaults, --with-linux-source) (https://www.wolfssl.com/loading-wolfssl-into-the-linux-kernel/)
  • Build tests and updated instructions for use with Apple’s A12Z chipset (https://www.wolfssl.com/preliminary-cryptographic-benchmarks-on-new-apple-a12z-bionic-platform/)
  • Expansion of wolfSSL SP math implementation and addition of --enable-sp-math-all build option
  • Apache httpd w/TLS 1.3 support added
  • Sniffer support for TLS 1.3 and AES CCM
  • Support small memory footprint build with only TLS 1.3 and PSK without code for (EC)DHE and certificates
New Hardware Acceleration
  • Added support for NXP DCP (i.MX RT1060/1062) crypto co-processor
  • Add Silicon Labs hardware acceleration using SL SE Manager
New Algorithms
  • RC2 ECB/CBC added for use with PKCS#12 bundles
  • XChaCha and the XChaCha20-Poly1305 AEAD algorithm support added
Misc
  • Added support for 802.11Q VLAN frames to sniffer
  • Added OCSP function wolfSSL_get_ocsp_producedDate
  • Added API to set CPU ID flags cpuid_select_flags, cpuid_set_flag, cpuid_clear_flag
  • New DTLS/TLS non-blocking Secure Renegotiation example added to server.c and client.c

Fixes

Math Library
  • Fix mp_to_unsigned_bin_len out of bounds read with buffers longer than maximum MP
  • Fix for fp_read_radix_16 out of bounds read
  • Fix to add wrapper for new timing resistant wc_ecc_mulmod_ex2 function version in HW ECC acceleration
  • Handle an edge case with RSA-PSS encoding message to hash
Compatibility Layer Fixes
  • Fix for setting serial number wolfSSL_X509_set_serialNumber
  • Fix for setting ASN1 time not before / not after with WOLFSSL_X509
  • Fix for order of components in issuer name when using X509_sign
  • Fix for compatibility layer API DH_compute_key
  • EVP fix incorrect block size for GCM and buffer up AAD for encryption/decryption
  • EVP fix for AES-XTS key length return value and fix for string compare calls
  • Fix for mutex freeing during RNG failure case with EVP_KEY creation
  • Non blocking use with compatibility layer BIOs in TLS connections
Build Configuration
  • Fix for custom build with WOLFSSL_USER_MALLOC defined
  • ED448 compiler warning on Intel 32bit systems
  • CURVE448_SMALL build fix for 32bit systems with Curve448
  • Fix to build SP math with IAR
  • CMake fix to only set ranlib arguments for Mac, and for stray typo of , -> ;
  • Build with --enable-wpas=small fix
  • Fix for building fips ready using openssl extra
  • Fixes for building with Microchip (min/max and undef SHA_BLOCK_SIZE)
  • FIx for NO_FILESYSTEM build on Windows
  • Fixed SHA256 support for IMX-RT1060
  • Fix for ECC key gen with NO_TFM_64BIT
Sniffer
  • Fixes for sniffer when using static ECC keys. Adds back TLS v1.2 static ECC key fallback detection and fixes new ECC RNG requirement for timing resistance
  • Fix for sniffer with SNI enabled to properly handle WOLFSSL_SUCCESS error code in ProcessClientHello
  • Fix for sniffer using HAVE_MAX_FRAGMENT in "certificate" type message
  • Fix build error with unused "ret" when building with WOLFSSL_SNIFFER_WATCH.
  • Fix to not treat cert/key not found as error in myWatchCb and WOLFSSL_SNIFFER_WATCH.
  • Sniffer fixes for handling TCP out-of-range sequence number
  • Fixes SSLv3 use of ECDH in sniffer
PKCS
  • PKCS#11 fix to generate ECC key for decrypt/sign or derive
  • Fix for resetting internal variables when parsing a malformed PKCS#7 bundle with PKCS7_VerifySignedData()
  • Verify the extracted public key in wc_PKCS7_InitWithCert
  • Fix for internal buffer size when using decompression with PKCS#7
Misc
  • Pin the C# verify callback function to keep from garbage collection
  • DH fixes for when public key is owned and free’d after a handshake
  • Fix for TLS 1.3 early data packets
  • Fix for STM32 issue with some Cube HAL versions and STM32 example timeout
  • Fix mmCAU and LTC hardware mutex locking to prevent double lock
  • Fix potential race condition with CRL monitor
  • Fix for possible malformed encrypted key with 3DES causing negative length
  • AES-CTR performance fixed with AES-NI

Improvements/Optimizations

SP and Math
  • mp_radix_size adjustment for leading 0
  • Resolve implicit cast warnings with SP build
  • Change mp_sqr to return an error if the result won't fit into the fixed length dp
  • ARM64 assembly with clang improvements, clang doesn't always handle use of x29 (FP or Frame Pointer) in inline assembly code correctly - reworked sp_2048_sqr_8 to not use x29
  • SP mod exp changed to support exponents of different lengths
  • TFM div: fix initial value of size in q so clamping doesn't OOB read
  • Numerous stack depth improvements with --enable-smallstack
  • Improve cache resistance with Base64 operations
TLS 1.3
  • TLS 1.3 wolfSSL_peek want read return addition
  • TLS 1.3: Fix P-521 algorithm matching
PKCS
  • Improvements and refactoring to PKCS#11 key look up
  • PKCS #11 changes for signing and loading RSA public key from private
  • check PKCS#7 SignedData private key is valid before using it
  • check PKCS#7 VerifySignedData content length against total bundle size to avoid large malloc
Compatibility Layer
  • EVP add block size for more ciphers in wolfSSL_EVP_CIPHER_block_size()
  • Return long names instead of short names in wolfSSL_OBJ_obj2txt()
  • Add additional OpenSSL compatibility functions to update the version of Apache httpd supported
  • add "CCM8" variants to cipher_names "CCM-8" ciphers, for OpenSSL compat
Builds
  • Cortex-M SP ASM support for IAR 6.70
  • STM Cube pack support (IDE/STM32Cube)
  • Build option --enable-aesgcm=4bit added for AES-GCM GMULT using 4 bit table
  • Xilinx IDE updates to allow XTIME override for Xilinx, spelling fixes in Xilinx README.md, and add Xilinx SDK printf support
  • Added ED448 to the "all" options and ED448 check key null argument sanity check
  • Added ARC4, 3DES, nullcipher, BLAKE2, BLAKE2s, XChaCha, MD2, and MD4 to the “all” options
  • Added an --enable-all-crypto option, to enable only the wolfCrypt features of --enable-all, combinable with --enable-cryptonly
  • Added the ability to selectively remove features from --enable-all and --enable-all-crypto using specific --disable- options
  • Use Intel intrinsics with Windows for RDSEED and RDRAND (thanks to dr-m from MariaDB)
  • Add option to build with WOLFSSL_NO_CLIENT_AUTH
  • Updated build requirements for wolfSSH use to be less restrictive
  • lighttpd support update for v1.4.56
  • Added batch file to copy files to ESP-IDF folders and resolved warnings when using v4.0 ESP-IDF
  • Added --enable-stacksize=verbose, showing at a glance the stack high water mark for each subtest in testwolfcrypt
ECC
  • Performance increase for ECC verify only, using non constant time SP modinv
  • During ECC verify add validation of r and s before any use
  • Always use safe add and dbl with ECC
  • Timing resistant scalar multiplication updated with use of Joye double-add ladder
  • Update mp_jacobi function to reduce stack and increase performance for base ECC build
  • Reduce heap memory use with wc_EccPrivateKeyDecode, Improvement to ECC wc_ecc_sig_to_rs and wc_ecc_rs_raw_to_sig to reduce memory use (avoid the mp_int)
  • Improve StoreECC_DSA_Sig bounds checking
OCSP
  • OCSP improvement to handle extensions in singleResponse
  • support for OCSP request/response for multiple certificates
  • OCSP Must Staple option added to require OCSP stapling response
  • Add support for id-pkix-ocsp-nocheck extension
Misc
  • Additional code coverage added for ECC and RSA, PKCS#7, 3DES, EVP and Blake2b operations
  • DTLS MTU: check MTU on write
  • Refactor hash sig selection and add the macros WOLFSSL_STRONGEST_HASH_SIG (picks the strongest hash) and WOLFSSL_ECDSA_MATCH_HASH (will pick the hash to match the ECC curve)
  • Strict certificate version allowed from client, TLS 1.2 / 1.3 can not accept client certificates lower than version 3
  • wolfSSL_get_ciphers_compat(), skip the fake indicator ciphers like the renegotiation indication and the quantum-safe hybrid
  • When parsing session ticket, check TLS version to see whether they are version compatible
  • Additional sanity check for invalid ASN1 padding on integer type
  • Adding in ChaCha20 streaming feature with Mac and Intel assembly build
  • Sniffer build with --enable-oldtls option on

wolfSSL Release 4.5.0 (08/19/2020)

20 Aug 20:21
v4.5.0-stable
0fa5af9
Compare
Choose a tag to compare

wolfSSL Release 4.5.0 (August 19, 2020)

If you have questions about this release, feel free to contact us on our
info@ address.

Release 4.5.0 of wolfSSL embedded TLS has bug fixes and new features including:

New Feature Additions

  • Added Xilinx Vitis 2019.2 example and README updates
  • TLS v1.3 is now enabled by default
  • Building FIPS 140-2 code and test on Solaris
  • Secure renegotiation with DTLS 1.2
  • Update RSA calls for hardware acceleration with Xilsecure
  • Additional OpenSSL compatibility layer functions added
  • Cypress PSoC6 wolfCrypt driver added
  • Added STM32CubeIDE support
  • Added certificate parsing and inspection to C# wrapper layer
  • TLS v1.3 sniffer support added
  • TSIP v1.09 for target board GR-ROSE support added
  • Added support for the "X72N Envision Kit" evaluation board
  • Support for ECC nonblocking using the configure options
    "--enable-ecc=nonblock --enable-sp=yes,nonblock CFLAGS=-DWOLFSSL_PUBLIC_MP"
  • Added wc_curve25519_make_pub function to generate a public key given the
    private one

Fixes

  • PIC32MZ hardware cache and large hashes fix
  • AES-GCM use with EVP layer in compatibility layer code
  • Fix for RSA_LOW_MEM with ARM build of SP code
  • Sanity check on tag length with AES-CCM to conform with RFC 3610
  • Fixes for 32 and 64 bit software implementations of SP code when
    WOLFSSL_SP_CACHE_RESISTANT is defined
  • GCC warning fixes for GCC 9 and later
  • Sanity check on HKDF expand length to conform with RFC 5869
  • Fixes for STM32 CubeMX HAL with AES-GCM
  • Fixed point cache look up table (LUT) implementation fixes
  • Fix for ARM 32bit SP code when calling div word
  • Fix for potential out of bounds read when parsing CRLs
  • Fix for potential out of bounds read with RSA unpadding
  • AES-CCM optimized counter fix
  • Updates to Xcode projects for new files and features
  • Fix for adding CRL’s to a WOLFSSL_X509_STORE structure
  • FIPSv2 build with opensslall build fixes
  • Fixes for CryptoCell use with ECC and signature wrappers
  • Fix for mod calculation with SP code dealing with 3072 bit keys
  • Fix for handling certificates with multiple OU’s in name
  • Fix for SP math implementation of sp_add_d and add a sanity check on
    rshb range
  • Fix for sanity check on padding with DES3 conversion of PEM to DER
  • Sanity check for potential out of bounds read with fp_read_radix_16
  • Additional checking of ECC scalars.
  • Fixing the FIPS Ready build w.r.t. ecc.c.
  • When processing certificate names with OpenSSL compatibility layer
    enabled, unknown name item types were getting handled as having NID 0,
    and failing. Added a couple more items to what is handled correctly,
    and ignoring anything that is an unknown type.

Improvements/Optimizations

  • TLS 1.3 certificate verify update to handle 8192 bit RSA keys
  • wpa_supplicant support with reduced code size option
  • TLS 1.3 alerts encrypted when possible
  • Many minor coverity fixes added
  • Error checking when parsing PKCS12 DER
  • IAR warning in test.c resolved
  • ATECC608A improvements for use with Harmony 3 and PIC32 MZ
  • Support for AES-GCM and wc_SignatureVerifyHash with static memory and no
    malloc’s
  • Enable SNI by default with JNI/JSSE builds
  • NetBSD GCC compiler warnings resolved
  • Additional test cases and code coverage added including curve25519 and
    curve448 tests
  • Option for user defined mutexes with WOLFSSL_USER_MUTEX
  • Sniffer API’s for loading buffer directly
  • Fixes and improvements from going through the DO-178 process were added
  • Doxygen updates and fixes for auto documentation generation
  • Changed the configure option for FIPS Ready builds to be
    --enable-fips=ready.

This release of wolfSSL includes fixes for 6 security vulnerabilities.

wolfSSL version 4.5.0 contains 6 vulnerability fixes: 2 fixes for TLS 1.3,
2 side channel attack mitigations, 1 fix for a potential private key leak
in a specific use case, 1 fix for DTLS.

  • In earlier versions of wolfSSL there exists a potential man in the middle
    attack on TLS 1.3 clients. Malicious attackers with a privileged network
    position can impersonate TLS 1.3 servers and bypass authentication. Users
    that have applications with client side code and have TLS 1.3 turned on,
    should update to the latest version of wolfSSL. Users that do not have
    TLS 1.3 turned on, or that are server side only, are NOT affected by this
    report. Thanks to Gerald Doussot from NCC group for the report.
  • Denial of service attack on TLS 1.3 servers from repetitively sending
    ChangeCipherSpecs messages. This denial of service results from the
    relatively low effort of sending a ChangeCipherSpecs message versus the
    effort of the server to process that message. Users with TLS 1.3 servers are
    recommended to update to the most recent version of wolfSSL which limits the
    number of TLS 1.3 ChangeCipherSpecs that can be received in order to avoid
    this DoS attack. CVE-2020-12457 was reserved for the report. Thanks to
    Lenny Wang of Tencent Security Xuanwu LAB.
  • Potential cache timing attacks on public key operations in builds that are
    not using SP (single precision). Users that have a system where malicious
    agents could execute code on the system, are not using the SP build with
    wolfSSL, and are doing private key operations on the system (such as signing
    with a private key) are recommended to regenerate private keys and update to
    the most recent version of wolfSSL. CVE-2020-15309 is reserved for this
    issue. Thanks to Ida Bruhns from Universität zu Lübeck for the report.
  • When using SGX with EC scalar multiplication the possibility of side-channel
    attacks are present. To mitigate the risk of side channel attacks wolfSSL’s
    single precision EC operations should be used instead. Release 4.5.0 turns
    this on be default now with SGX builds and in previous versions of wolfSSL
    this can be turned on by using the WOLFSSL_SP macros. Thank you to
    Alejandro Cabrera Aldaya, Cesar Pereida García and Billy Bob Brumley from
    the Network and Information Security Group (NISEC) at Tampere University for
    the report.
  • Leak of private key in the case that PEM format private keys are bundled in
    with PEM certificates into a single file. This is due to the
    misclassification of certificate type versus private key type when parsing
    through the PEM file. To be affected, wolfSSL would need to have been built
    with OPENSSL_EXTRA (--enable-opensslextra). Some build variants such as
    --enable-all and --enable-opensslall also turn on this code path, checking
    wolfssl/options.h for OPENSSL_EXTRA will show if the macro was used with the
    build. If having built with the opensslextra enable option and having placed
    PEM certificates with PEM private keys in the same file when loading up the
    certificate file, then we recommend updating wolfSSL for this use case and
    also recommend regenerating any private keys in the file.
  • During the handshake, clear application_data messages in epoch 0 are
    processed and returned to the application. Fixed by dropping received
    application_data messages in epoch 0. Thank you to Paul Fiterau of Uppsala
    University and Robert Merget of Ruhr-University Bochum for the report.

For additional vulnerability information visit the vulnerability page at
https://www.wolfssl.com/docs/security-vulnerabilities/

See INSTALL file for build instructions.
More info can be found on-line at https://wolfssl.com/wolfSSL/Docs.html

wolfSSL Release 4.4.0 (04/22/2020)

22 Apr 18:23
e116c89
Compare
Choose a tag to compare

wolfSSL Release 4.4.0 (04/22/2020)

If you have questions about this release, feel free to contact us on our
info@ address.

Release 4.4.0 of wolfSSL embedded TLS has bug fixes and new features including:

New Feature Additions

  • Hexagon support.
  • DSP builds to offload ECC verify operations.
  • Certificate Manager callback support.
  • New APIs for running updates to ChaCha20/Poly1305 AEAD.
  • Support for use with Apache.
  • Add support for IBM s390x.
  • PKCS8 support for ED25519.
  • OpenVPN support.
  • Add P384 curve support to SP.
  • Add BIO and EVP API.
  • Add AES-OFB mode.
  • Add AES-CFB mode.
  • Add Curve448, X448, and Ed448.
  • Add Renesas Synergy S7G2 build and hardware acceleration.

Fixes

  • Fix for RSA public encrypt / private sign with RSA key sizes over 2048-bit.
  • Correct misspellings.
  • Secure renegotiation fix.
  • Fix memory leak when using ATECC and non-SECP256R1 curves for sign, verify,
    or shared secret.
  • Fix for K64 MMCAU with WOLFSSL_SMALL_STACK_CACHE.
  • Fix the RSA verify only build.
  • Fix in SP C implementation for small stack.
  • Fix using the auth key id extension is set, hash might not be present.
  • Fix when flattening certificate structure to include the subject alt names.
  • Fixes for building with ECC sign/verify only.
  • Fix for ECC and no cache resistance.
  • Fix memory leak in DSA.
  • Fix build on minGW.
  • Fix PemToDer() call in ProcessBuffer() to set more than ECC.
  • Fix for using RSA without SHA-512.
  • Add some close tags to the echoserver HTTP example output.
  • Miscellaneous fixes and updates for static analysis reports.
  • Fixes for time structure support.
  • Fixes for VxWorks support.
  • Fixes for Async crypto support.
  • Fix cache resist compile to work with SP C code.
  • Fixes for Curve25519 x64 asm.
  • Fix for SP x64 div.
  • Fix for DTLS edge case where CCS and Finished come out of order and the
    retransmit pool gets flushed.
  • Fix for infinite loop in SHA-1 with small inputs. Thanks to Peter W.
  • Fix for FIPS Hmac where wc_HmacInit() isn't used. wc_HmacSetKey() needs
    to initialize the Hmac structure. Type is set to NONE, and checked against
    NONE, not 0.
  • Fixes for SP RSA private operations.
  • Fixes for Xilinx SDK and Zynq UltraScale+ MPSoC
  • Fix leak when building with HAVE_AESGCM and NO_AES_DECRYPT. Thanks G.G.
  • Fixes for building ECC without ASN.
  • Fix for async TLSv1.3 issues.
  • Fix wc_KeyPemToDer() with PKCS1 and empty key.
  • Omit -fomit-frame-pointer from CFLAGS in configure.ac.

Improvements/Optimizations

  • Qt 5.12 and 5.13 support.
  • Added more digest types to Cryptocell RSA sign/verify.
  • Some memory usage improvements.
  • Speed improvements for mp_rand.
  • Improvements to CRL and OCSP support.
  • Refactor Poly1305 AEAD/MAC to reduce duplicate code.
  • Add blinding to RSA key gen.
  • Improvements to blinding.
  • Improvement and expansion of OpenSSL Compatibility Layer.
  • Improvements to ChaCha20.
  • Improvements to X.509 processing.
  • Improvements to ECC support.
  • Improvement in detecting 64-bit support.
  • Refactor to combine duplicate ECC parameter parsing code.
  • Improve keyFormat to be set by algId and let later key parsing produce fail.
  • Add test cases for 3072-bit and 4096-bit RSA keys.
  • Improve signature wrapper and DH test cases.
  • Improvements to the configure.ac script.
  • Added constant time RSA q modinv p.
  • Improve performance of SP Intel 64-bit asm.
  • Added a few more functions to the ABI list.
  • Improve TLS bidirectional shutdown behavior.
  • OpenSSH 8.1 support.
  • Improve performance of RSA/DH operations on x64.
  • Add support for PKCS7/CMS Enveloped data with fragmented encrypted content.
  • Example linker description for FIPS builds to enforce object ordering.
  • C# wrapper improvements. Added TLS client example and TLSv1.3 methods.
  • Allow setting MTU in DTLS.
  • Improve PKCS12 create for outputting encrypted bundles.
  • Constant time EC map to affine for private operations.
  • Improve performance of RSA public key ops with TFM.
  • Smaller table version of AES encrypt/decrypt.
  • Support IAR with position independent code (ROPI).
  • Improve speed of AArch64 assembly.
  • Support AES-CTR with AES-NI.
  • Support AES-CTR on esp32.
  • Add a no malloc option for small SP math.

This release of wolfSSL includes fixes for 2 security vulnerabilities.

  • For fast math, use a constant time modular inverse when mapping to affine
    when operation involves a private key - keygen, calc shared secret, sign.
    Thank you to Alejandro Cabrera Aldaya, Cesar Pereida García and
    Billy Bob Brumley from the Network and Information Security Group (NISEC)
    at Tampere University for the report.

  • Change constant time and cache resistant ECC mulmod. Ensure points being
    operated on change to make constant time. Thank you to Pietro Borrello at
    Sapienza University of Rome.

For additional vulnerability information visit the vulnerability page at
https://www.wolfssl.com/docs/security-vulnerabilities/

See INSTALL file for build instructions.
More info can be found on-line at https://wolfssl.com/wolfSSL/Docs.html

wolfSSL release version 4.3.0

21 Dec 00:48
3f13b49
Compare
Choose a tag to compare

wolfSSL Release 4.3.0 (12/20/2019)

If you have questions about this release, then feel free to contact us on our info@ address.

Release 4.3.0 of wolfSSL embedded TLS has bug fixes and new features including:

New Feature Additions
  • Add --enable-libwebsockets option for support of libwebsockets build
  • Updated support for NGINX 1.15.0 and added support for 1.16.1
  • Add wc_scrypt_ex API which can take in iterations rather than cost
  • Updates to RSA-PSS salt lengths. Macro WOLFSSL_PSS_SALT_LEN_DISCOVER allows for discovering the salt length. Passing RSA_PSS_SALT_LEN_DISCOVER value into wc_RsaPSS_Verify_ex attempts to discover salt length and can use larger salt lengths
  • Additional OpenSSL compatibility API wolfSSL_CertManagerGetCerts and wolfSSL_X509_STORE_GetCerts for retrieving certificates
  • Add support for 4096-bit RSA/DH operations to SP (single precision) build
  • Update support for Google WebRTC to branch m79
  • Adds new FREESCALE_MQX_5_0 macro for MQX 5.0 support
  • Adds a CMS/PKCS#7 callback for signing SignedData raw digests enabled with macro HAVE_PKCS7_RSA_RAW_SIGN_CALLBACK and call to function wc_PKCS7_SetRsaSignRawDigestCb
  • Add --disable-errorqueue feature to disable adding debug nodes to queue with --enable-opensslextra build
  • After defining WOLFSSL_SHUTDOWNONCE macro the function wolfSSL_shutdown will return a specific error code of SSL_SHUTDOWN_ALREADY_DONE_E, to indicate to the application that the shutdown has already occurred
  • Add AES-CCM decryption to benchmarking app bundled with wolfSSL
Fixes
  • Fixes IAR warnings with IAR-EWARM 7.50.2
  • Alignment fixes for mmCAU with AES and hashing algorithms
  • Fix check for plaintext length when using Encrypt-Then-MAC
  • Fix for unit tests with NGINX and debug mode
  • Fix for macro names in test cases (WOLFSSL_PUBLIC_MP) and pkcs7.c (HAVE_AESCCM)
  • Fix for Apache want read case with BIO retry flag
  • Fix for PKCS7 streaming mode that would error rather than verify bundle
  • Fix for freeing mutex for X509 and wolfSSL_EVP_PKEY_free, applies to OPENSSL_EXTRA / --enable-opensslextra builds
  • Fix for encrypt then MAC when re-handshaking, encrypted handshakes change over to ETM now
  • Fix for curve25519 assembly optimizations with GCC + AVX2
  • Fix to hang onto certificate for retrieval if using secure renegotiation and session resumption
  • Fixes case where the heap hint is created before WOLFSSL_CTX, when calling wc_LoadStaticMemory instead of wolfSSL_CTX_load_static_memory
  • Fix for setting correct return value in PKCS12 parse error case
  • Reset certificate extension policy count
  • Fix for memcpy with TLS I/O buffers when using staticmemory pools and loading memory as WOLFMEM_IO_POOL_FIXED
  • Fixes and updates for STM32 port, including additional mutex protection, AES-GCM decrypt auth tag, AES-CTR mode with CubeMX, update to OpenSTM32 project
  • Fix for EVP CipherUpdate decrypt and add a test case
  • DTLS fixes including; some DTLS sequence number issues in general where the sequence was incremented twice for each record and some offset values in the DTLS window checking
  • Fix sp_add to handle carries properly (--enable-sp-math build)
  • Additional sanity check on OCSP response decoder
  • Fix for vasprintf with Solaris and AIX builds
  • Fix for missing variable declaration with --enable-scep --with-libz build
  • Fix for certificate date check with async build
  • Sanity check on “out” length with Base64_Decode added
  • Decode X.509 name - check input length for jurisdiction
  • Additional sanity check on variable out index with DecodePolicyOID
  • Fix for PKCS#12 PBKDF buffer size for buffer overflow
  • TLS supported curve extension check curve name is in range before checking for disabled
  • Sanity check for non TLS 1.3 cipher suite with TLS 1.3 connection
  • Poly1305 AVX2 assembly optimization fix for carry with large input values
  • Fixes for coverity report including null termination of test case strings and initialization of PKCS7 variables
  • Fix for API visibility of wc_ed25519_check_key which resolves a wolfcrypt-py install issue
  • Sanity check on max ALPN length accepted
  • Additional sanity check when parsing CRL’s for copying the structure, fix for bounds checking
  • Additional checks on error string length for debug mode and check for null termination
  • ProcessPeerCerts allocating memory for exts with OPENSSL_EXTRA properly
  • Clear the top bit when generating a serial number
  • Sanity check that ASN date characters are valid ASCII characters
  • Fix to add deterministic ECDSA and fix corner cases for add point.
  • When getting the DH public key, initialize the P, G, and Pub pointers to NULL, then set that we own the DH parameters flag. This allows FreeSSL to correctly clean up the DH key.
Improvements/Optimizations
  • Added configure error report with using invalid build of --enable-opensslextra and --enable-opensslcoexist together
  • Update PKCS11 for determining key type given the private key type
  • Update DoVerifyCallback to check verify param hostName and ipasc (--enable-opensslextra builds)
  • additional null sanity checks on input arguments with QSH and Cryptocell builds
  • Additional checks on RSA key added to the function wc_CheckRsaKey
  • Updates for EBSNET support, including fseek, revised macros in settings.h, and realloc support
  • MISRA-C updates for SP math code
  • Update to allow compiling for pwdbased/PBKDF2 with having NO_ASN defined
  • Modify KeyShare and PreSharedKey TLS 1.3 extension linked list advancement to be easier for compilers to handle
  • Optimization to parsing certificate extension name strings
  • Adjustment to example server -x runtime behavior when encountering an unrecoverable error case
  • Remove Blake2b support from HMAC
  • Adds new hash wrapper init wc_HashInit_ex and Adds new PBKDF2 API wc_PBKDF2_ex for using heap hints for custom memory pools
  • Adding script to cleanup generated test files, scripts/cleanup_testfiles.sh
  • Support 20-byte serial numbers and disallow 0
  • sp_div improved to handle when a has less digits than d (--enable-sp-math build)
  • When decoding a policy OID and turning it into a human readable string use snprintf()
  • set the IV length of EVP AES GCM to 96-bits by default
  • Allow adding CAs for root CA's over the wire that do not have the extended key usage cert_sign set
  • Added logging messages for SendAlert call and update to send alert after verify certificate callback
  • updates for synchronous OCTEON support in the Sniffer
  • Rework BER to DER functions to not be recursive
  • Updates to find CRL by AuthKeyId
  • Add a check for subject name hash after matching AKID
  • Enhancement to mp_invmod/fp_exptmod/sp_exptmod to handle more inputs
  • Remove requirement for macro NO_SKID when CRL use is enabled
  • Improvements on XFTELL return code and MAX_WOLFSSL_FILE_SIZE checking
  • When checking if value is prime return NO in the case of the value 1
  • Improve Cortex-M RSA/DH assembly code performance
  • Additional sanity checks on arrays and buffers with OCSP
This release of wolfSSL includes a fix for 6 security vulnerabilities.

A fix for having an additional sanity check when parsing certificate domain names was added. This fix checks that the domain name location index is not past the maximum value before setting it. The reported issue affects users that are parsing certificates and have --enable-opensslextra (macro OPENSSL_EXTRA), or build options that turn this on such as --enable-all, when building wolfSSL. The CVE associated with the fix is CVE-2019-18840.

Fix to set a limit on the maximum size of DTLS handshake messages. By default the RFC allows for handshake message sizes of up to 2^24-1 bytes long but in typical field use cases the handshake messages are not this large. Setting a maximum size limit on the handshake message helps avoid a potential DoS attack due to memory being malloc’d. The new default max size is set to handle a certificate chain length of approximately 9, 2048 bit RSA certificates. This only effects builds that have DTLS turned on and have applications that are using DTLS.

Fix for a potential hang when ECC caching is enabled (off by default) and --enable-fastmath is used. ECC caching is off by default and is turned on in builds that are using --enable-all or --enable-fpecc. This issue does not affect builds that are using the macro WOLFSSL_VALIDATE_ECC_IMPORT which turns on validating all ECC keys that are imported. To fix this potential hang case a sanity check on the input values to the internal invmod function was added.

To fix a potential fault injection attack on a wrapper function for wolfCrypt RSA signature generations an additional sanity check verifying the signature after it’s creation was added. This check is already done automatically in current versions of wolfSSL with TLS connections (internal function call of VerifyRsaSign during TLS state machine). The report only affects users making calls to the wolfCrypt function wc_SignatureGenerateHash and does not affect current TLS use cases. Thanks to Daniel Moghimi (@danielmgmi) from Worcester Polytechnic Institute for the report.

Blinding was added for DSA signing operations. The DSA signing uses the BEEA algorithm during modular inversion of the nonce which can potentially leak the nonce through side channels such as cache and power fluctuations. The fix of adding in blinding makes the DSA signing operation more resistant to side channel attacks. Users who have turned on DSA (disabled by default) and are performing signing operations should update. Note that DSA is not used in any TLS connections. Thanks to Daniel Moghimi (@danielmgmi) from Worcester Polytechnic Institute for the report.

Fix to add additional side channel cache attack resistance to the internal ECC function wc_ecc_mulmod_ex. This function by default is used with ECDSA signing operations. Users should update if performing ECDSA singi...

Read more

wolfSSL release version 4.2.0

23 Oct 16:36
48c4b2f
Compare
Choose a tag to compare

wolfSSL Release 4.2.0 (10/22/2019)

If you have questions about this release, then feel free to contact us on our info@ address.

Release 4.2.0 of wolfSSL embedded TLS has bug fixes and new features including:

New Feature Additions
  • Over 198 OpenSSL compatibility API’s added
  • Apache port added for compiling with wolfSSL using --enable-apachehttpd
  • Port for using wolfSSL with OpenVSwitch
  • Port for Renesas TSIP added
  • Visual Studio Solution for Azure Sphere Devices (MT3620 and MT3620-mini) added to the directory IDE/VS-AZURE-SPHERE
  • Addition of Coldfire MCF5441X NetBurner example to the directory IDE/M68K/
  • Added support for prime checking to SP math build
  • Addition of DYNAMIC_TYPE_BIGINT type for tracking mp_int allocations
  • Addition of wc_ecc_get_curve_params API for getting ecc_set_type params for a curve
  • Adding in TLS_SHA256_SHA256 and TLS_SHA384_SHA384 TLS1.3 cipher suites (null ciphers)
  • Added in PKCS7 decryption callbacks for CMS operations
  • Added handling for optional ECC parameters with PKCS7 KARI
  • Addition to configure.ac for FIPS wolfRand builds
  • Adding the flag WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY for ignoring certificate date checks with the functions wolfSSL_CTX_load_verify_buffer_ex and wolfSSL_CTX_load_verify_locations_ex
  • Support for PKCS8 keys added to the function wolfSSL_CTX_use_PrivateKey_buffer
  • Support for KECCAK hashing. Build with macro WOLFSSL_HASH_FLAGS and call wc_Sha3_SetFlags(&sha, WC_HASH_SHA3_KECCAK256) before the first SHA3 update
  • Addition of setting secure renegotiation at CTX level
  • Addition of KDS (NXP Kinetis Design Studio) example project to directory IDE/KDS/
  • Support for Encrypt-Then-MAC to TLS 1.2 and below
  • Added a new build option for a TITAN session cache that can hold just over 2 million session entries (--enable-titancache)
  • Synchronous Quick Assist Support for Sniffer
  • Added Support for SiFive HiFive Unleashed board
  • Support for Google WebRTC added in to compatibility layer build
  • Additional Sniffer features; IPv6 sniffer support, Fragment chain input, Data store callback, Various statistics tweaks and other Sniffer fixes
Fixes
  • Addition of internal content digest checks for PKCS7 SignedData message types that also have signed attributes present. Users could previously check the content digest against the messageDigest attribute, but this adds a default internal check. It’s advised that if users are not doing their own checks that they update wolfSSL version.
  • A fix for BIO and base64 encoding/decoding
  • A fix for memory management of CTX / WOLFSSL_METHOD pointer with staticmemory build
  • A fix for detection of AES-NI support to read bit 25 from ECX
  • A fix a DTLS handshake message retransmit bug corner case
  • Additional fixes to coding style and uninitialized values using cppcheck tool
  • Fixes for failing IAR builds, thanks to Joseph C. for the report
  • Fixes for ARMv8 Poly1305 inline assembly code to compile with clang 3.5
  • Fixes for esp-idf build warnings
  • A fix for XSNPRINTF with mingw32 builds
  • Fixes for strncpy warnings when compiling with newer versions of GCC
  • A fix for using IV of all 0’s as default case with AES-NI when no IV passed in
  • Fixes for types with 16 bit systems, thanks to Ralf Schlatterbeck
  • Fixes for build with devcrypto/afalg and aesccm, thanks to GitHub user cotequeiroz for the report
  • Fixes for addressing handling of pathLen constraint when parsing certificate chains
  • A DTLS fix for alert packet injection at end of handshake
  • Fixes for Poly1305 AArch64 assembly code
  • A fix for memory management in error cases when adding a CA, this resolves a coverity report
  • A fix for SP math for precomputation tables to not include infinity field
  • Fixes for checks on defines with AVX2 and Poly1305 build
  • Fixes for CubeMX HAL v1.15 with STM32F7
  • A fix for TLS 1.3 to always send Key Share extension
  • A fix for a potential buffer over read in TLS 1.3 DoTls13SupportedVersions, thanks to Artem for the report
Improvements/Optimizations
  • Optimization to SP math, changing variables to const where possible. Thanks to Yair Poleg ([email protected]) of Ayyeka for proposing static declaration of global constant variables in SP code
  • Additional fuzz testing and fixes for TLS 1.3 use, including additional TLS 1.3 alert messages (PR#2440 for more information)
  • Additional sanity check that ciphersuite from client hello is used in server hello response (check can be removed with the macro WOLFSSL_NO_STRICT_CIPHER_SUITE)
  • Improved MMCAU performance: SHA-1 by 35%, SHA-256 by 20% and MD5 by 78%
  • By default, disallow SHA-2 cipher suites from being used in TLS 1.0 and 1.1 handshakes (can be ignored with macro WOLFSSL_OLDTLS_SHA2_CIPHERSUITES)
  • Optimization of export session buffer size with enable option --enable-sessionexport=nopeer
  • Spelling fixes in comments and some cast warnings resolved
  • Updates to abstract atoi to XATOI when used, this allows for better portability when making calls to the system function atoi for converting strings to integers
  • Improvements to the STSAFE-A100 error code handling, providing better debug information
  • Adding a sanity check on TLS 1.3 ticket encrypt callback
  • Specialized implementations of mod exp when base is 2
This release of wolfSSL includes a fix for 5 security vulnerabilities.

Fix for sanity check on reading TLS 1.3 pre-shared key extension. This fixes a potential for an invalid read when TLS 1.3 and pre-shared keys is enabled. Users without TLS 1.3 enabled are unaffected. Users with TLS 1.3 enabled and HAVE_SESSION_TICKET defined or NO_PSK not defined should update wolfSSL versions. Thanks to Robert Hoerr for the report.

Fix for potential program hang when ocspstapling2 is enabled. This is a moderate level fix that affects users who have ocspstapling2 enabled(off by default) and are on the server side. In parsing a CSR2 (Certificate Status Request v2 ) on the server side, there was the potential for a malformed extension to cause a program hang. Thanks to Robert Hoerr for the report.

Two moderate level fixes involving an ASN.1 over read by one byte. CVE-2019-15651 is for a fix that is due to a potential one byte over read when decoding certificate extensions. CVE-2019-16748 is for a fix on a potential one byte overread with checking certificate signatures. This affects builds that do certificate parsing and do not have the macro NO_SKID defined.Thanks to Yan Jia and the researcher team from Institute of Software, Chinese Academy of Sciences for the report.

High level fix for DSA operations involving an attack on recovering DSA private keys. This fix affects users that have DSA enabled and are performing DSA operations (off by default). All users that have DSA enabled and are using DSA keys are advised to regenerate DSA keys and update wolfSSL version. ECDSA is NOT affected by this and TLS code is NOT affected by this issue. Thanks to Ján Jančár for the report.

For additional vulnerability information visit the vulnerability page at https://www.wolfssl.com/docs/security-vulnerabilities/

See INSTALL file for build instructions.
More info can be found on-line at http://wolfssl.com/wolfSSL/Docs.html

wolfSSL release version 4.1.0

24 Jul 21:09
50fbdb9
Compare
Choose a tag to compare

wolfSSL Release 4.1.0 (07/22/2019)

Release 4.1.0 of wolfSSL embedded TLS has bug fixes and new features including:

  • A fix for the check on return value when verifying PKCS7 bundle signatures, all users with applications using the function wc_PKCS7_VerifySignedData should update
  • Adding the function wc_PKCS7_GetSignerSID for PKCS7 firmware bundles as a getter function for the signers SID
  • PKCS7 callback functions for unwrapping of CEK and for decryption
  • Adding the error value PKCS7_SIGNEEDS_CHECK when no certificates are available in a PKCS7 bundle to verify the signature
  • TLS 1.3 fixes including if major version is TLS Draft then it is now ignored and if version negotiation occurs but none were matched then an alert is now sent
  • Addition of the WOLFSSL_PSK_ONE_ID macro for indicating that only one identity in TLS 1.3 PSK is available and will be cached
  • Adding sanity checks on length of PSK identity from a TLS 1.3 pre-shared key extension
  • Additional sanity checks and alert messages added for TLS 1.3
  • Adding XTIME_MS macro to simplify the tls13.c time requirement
  • Improvements and refactoring of code related to parsing and creating TLS 1.3 client hello packets
  • TLS 1.3 version renegotiation now happens before interpreting ClientHello message
  • Chacha20 algorithm optimizations on the ARM architecture for performance increase
  • Poly1305 algorithm performance enhancements for the ARM architecture using the SIMD NEON extension
  • Curve25519 and Ed25519 optimized for ARM architecture for performance increase
  • SHA-512/384 optimizations for performance with ARM architecture using the SIMD NEON extension
  • Sniffer updates including adding support for the null cipher and static ECDH key exchange and new SSLWatchCb callback
  • Cipher suite TLS_RSA_WITH_NULL_MD5 for use with the sniffer (off by default)
  • Sniffer statistic print outs with the macro WOLFSSL_SNIFFER_STATS defined
  • A fix for wolfSSL_DH_generate_key when WOLFSSL_SMALL_STACK is defined
  • wolfSSL_BN_Init implementation for opensslextra builds
  • Updates to the function wolfSSL_i2d_RSAPrivateKey and additional automated tests
  • Fixes for EVP_CipherFinal edge cases to match behavior desired
  • Check for appropriate private vs public flag with ECC key decode in wolfSSL_EC_KEY_LoadDer_ex, thanks to Eric Miller for the report
  • Implementation of the function wolfSSL_PEM_write_DHparams
  • wolfSSL_RAND_seed is called in wolfSSL_Init now when opensslextra is enabled
  • CryptoCell-310 support on nRF52840 added
  • Fixes for atmel_ecc_create_pms to free the used slot.
  • Fixes for building ATECC with ATCAPRINTF or WOLFSSL_PUBLIC_MP
  • Cortex-M code changes to support IAR compiler
  • Improvements to STM32 AES-GCM performance
  • Fixes for 16-bit systems including PK callbacks, ATECC and LowResTimer function ptoto.
  • IAR-EWARM compiler warning fix
  • Clean up of user_settings for CS+ port
  • Updating Renesas example projects to the latest version
  • Micrium updates adjusting STATIC macro name and added inline flag
  • Fixes for building with WOLFSSL_CUSTOM_CURVES on Windows
  • Updates and refactor to the default build settings with Arduino
  • Fixes for visibility tags with Cygwin build
  • STSAFE Improvements to support wolfSSL Crypto Callbacks
  • Improvements to NetBSD builds and mutex use in test case
  • Updating TI hardware offload with WOLFSSL_TI_CRYPT build
  • Maintaining Xilinx FreeRTOS port by adjusting time.h include in wolfSSL
  • SiFive HiFive E31 RISC‐V core family port
  • Port for Telit IoT AppZone SDK
  • OCSP Response signed by issuer with identical SKID fix
  • Fix for sending revoked certificate with OCSP
  • Honor the status sent over connection with peers and do not perform an internal OCSP lookup
  • Adding the build flag --enable-ecccustcurves=all to enable all curve types
  • Support add for Ed25519ctx and Ed25519ph sign/verify algorithms as per RFC 8032
  • Addition of the macro WOLFSSL_NO_SIGALG to disable signature algorithms extension
  • wc_AesCtrEncrypt in place addition, where input and output buffer can be the same buffer
  • Single shot API added for SHA3; wc_Sha3_224Hash, wc_Sha3_256Hash, wc_Sha3_384Hash, wc_Sha3_512Hash
  • Function additions for JSSE support some of which are wolfSSL_get_ciphers_iana and wolfSSL_X509_verify along with expansion of the --enable-jni option
  • Macro guards for more modular SHA3 build (i.e. support for 384 size only)
  • Benchmarking -thread argument support for asynchronous crypto
  • Blake2s support (--enable-blake2s), which provides 32-bit Blake2 support
  • Macro SHA256_MANY_REGISTERS addition to potentially speed up SHA256 depending on architecture
  • Additional TLS alert messages sent with the macro WOLFSSL_EXTRA_ALERTS defined
  • Feature to fail resumption of a session if the session’s cipher suite is not in the client’s list, this can be overridden by defining the macro NO_RESUME_SUITE_CHECK
  • Fallback SCSV (Signaling Cipher Suite Value) support on Server only (--enable-fallback-scsv)
  • DTLS export state only (wolfSSL_dtls_export_state_only) which is a subset of the information exported from previous DTLS export function
  • Function wc_DhCheckPubValue added to perform simple validity checks on DH keys
  • Support for RSA SHA-224 signatures with TLS added
  • Additional option “-print” to the benchmark app for printing out a brief summary after benchmarks are complete
  • Adding (--disable-pkcs12) option and improvements for disabled sections in pwdbased.c, asn.c, rsa.c, pkcs12.c and wc_encrypt
  • Added DES3 support to the wolfSSL crypto callbacks
  • Compile time fixes for build case with SP math and RSA only
  • Fixes for Coverity static analysis report including explicit initialization of reported stack variables some additional Coverity fixes added thanks to Martin
  • Fixes for scan build warnings (i.e possible null dereference in ecc.c)
  • Resetting verify send value with a call to wolfSSL_clear function
  • Fix for extern with sp_ModExp_2048 when building with --cpp option
  • Fix for typo issue with --enable-sp=cortexm
  • Adding #pragma warning disable 4127 for tfm.c when building with Visual Studio
  • Improvements to the maximum ECC signature calculations
  • Improvements to TLS write handling in error cases which helps user application not go through with a wolfSSL_write attempt after a wolfSSL_read failure
  • Fix for read directory functions with Windows (wc_ReadDirFirst and wc_ReadDirNext)
  • Sanity check on index before accessing domain component buffer in call to wolfSSL_X509_NAME_get_entry
  • Sending fatal alert from client side on version error
  • Fix for static RSA cipher suite with PK callback and no loaded private key
  • Fix for potential memory leak in error case with the function wc_DsaKeyToDer, thanks to Chris H. for the report
  • Adjusting STRING_USER macro to remove includes of standard lib <string.h> or <stdio.h>
  • Bug fix for checking wrong allocation assignment in the function wc_PBKDF2 and handling potential leak on allocation failure. This case is only hit when the specific call to malloc fails in the function wc_PBKDF2. Thanks to Robert Altnoeder (Linbit) for the report
  • Improved length checks when parsing ASN.1 certificates
  • extern "C" additions to header files that were missing them
  • Improved checking of return values with TLS extension functions and error codes
  • Removing redundant calls to the generate function when instantiating and reseeding DRBG
  • Refactoring and improvements to autoconf code with consolidating AM_CONDITIONAL statements
  • Improvements for handling error return codes when reading input from transport layer
  • Improvements to efficiency of SNI extension parsing and error checking with ALPN parsing
  • Macro WOLFSSL_DEBUG_TLS addition for printing out extension data being parsed during a TLS connection
  • Adjustment of prime testing with --disable-fastmath builds

This release of wolfSSL includes a fix for 2 security vulnerabilities.

There is a fix for a potential buffer overflow case with the TLSv1.3 PSK extension parsing. This affects users that are enabling TLSv1.3 (--enable-tls13). Thanks to Robert Hoerr for the report. The CVE associated with the report is CVE-2019-11873.

There is a fix for the potential leak of nonce sizes when performing ECDSA signing operations. The leak is considered to be difficult to exploit but it could potentially be used maliciously to perform a lattice based timing attack against previous wolfSSL versions. ECC operations with --enable-sp and --enable-sp-asm are not affected, users with private ECC keys in other builds that are performing ECDSA signing operations should update versions of wolfSSL along with private ECC keys. Thanks to Ján Jančár from Masaryk University for the report.

wolfSSL Release 4.0.0 (03/20/2019)

21 Mar 20:33
v4.0.0-stable
21f2bec
Compare
Choose a tag to compare

wolfSSL Release 4.0.0 (03/20/2019)

Release 4.0.0 of wolfSSL embedded TLS has bug fixes and new features including:

  • Support for wolfCrypt FIPS v4.0.0, certificate #3389
  • FIPS Ready Initiative
  • Compatibility fixes for secure renegotiation with Chrome
  • Better size check for TLS record fragment reassembly
  • Improvements to non-blocking and handshake message retry support for DTLS
  • Improvements to OCSP with ECDSA signers
  • Added TLS server side secure renegotiation
  • Added TLS Trusted CA extension
  • Add support for the Deos Safety Critical RTOS
  • OCSP fixes for memory management and initializations
  • Fixes for EVP Cipher decryption padding checks
  • Removal of null terminators on wolfSSL_X509_print substrings
  • wolfSSL_sk_ASN1_OBJCET_pop function renamed to wolfSSL_sk_ASN1_OBJECT_pop
  • Adjustment to include path in compatibility layer for evp.h and objects.h
  • Fixes for decoding BER encoded PKCS7 contents
  • TLS handshake now supports using PKCS 11 for private keys
  • PKCS 11 support of HMAC, AES-CBC and random seeding/generation
  • Support for named FFDHE parameters in TLS 1.2 (RFC 7919)
  • Port to Zephyr Project
  • Move the TLS PRF to wolfCrypt.
  • Update to CMS KARI support
  • Added ESP32 WROOM support
  • Fixes and additions to the OpenSSL compatibility layer
  • Added WICED Studio Support
  • MDK CMSIS RTOS v2
  • Xcode project file update
  • Fixes for ATECC508A/ATECC608A
  • Fixes issue with CA path length for self signed root CA's
  • Fixes for Single Precision (SP) ASM when building sources directly
  • Fixes for STM32 AES GCM
  • Fixes for ECC sign with hardware to ensure the input is truncated
  • Fixes for proper detection of PKCS7 buffer overflow case
  • Fixes to handle degenerate PKCS 7 with BER encoding
  • Fixes for TLS v1.3 handling of 6144 and 8192 bit keys
  • Fixes for possible build issues with SafeRTOS
  • Added ECC_PUBLICKEY_TYPE to the support PEM header types
  • Added strict checking of the ECDSA signature DER encoding length
  • Added ECDSA option to limit sig/algos in client_hello to key size with USE_ECDSA_KEYSZ_HASH_ALGO
  • Added Cortex-M support for Single Precision (SP) math
  • Added wolfCrypt RSA non-blocking time support
  • Added 16-bit compiler support using --enable-16bit option
  • Improved Arduino sketch example
  • Improved crypto callback features
  • Improved TLS benchmark tool
  • Added new wrapper for snprintf for use with certain Visual Studio builds, thanks to David Parnell (Cambridge Consultants)

This release of wolfSSL includes a fix for 1 security vulnerability.

  • Fixed a bug in tls_bench.c example test application unrelated to the crypto or TLS portions of the library. (CVE-2019-6439)

wolfSSL release version 3.15.7

26 Dec 21:57
a7350b7
Compare
Choose a tag to compare

wolfSSL Release 3.15.7 (12/26/2018)

Release 3.15.7 of wolfSSL embedded TLS has bug fixes and new features including:

  • Support for Espressif ESP-IDF development framework
  • Fix for XCode build with iPhone simulator on i386
  • PKCS7 support for generating and verify bundles using a detached signature
  • Fix for build disabling AES-CBC and enabling opensslextra compatibility layer
  • Updates to sniffer for showing session information and handling split messages across records
  • Port update for Micrium uC/OS-III
  • Feature to adjust max fragment size post handshake when compiled with the macro WOLFSSL_ALLOW_MAX_FRAGMENT_ADJUST
  • Adding the macro NO_MULTIBYTE_PRINT for compiling out special characters that embedded devices may have problems with
  • Updates for Doxygen documentation, including PKCS #11 API and more
  • Adding Intel QuickAssist v1.7 driver support for asynchronous crypto
  • Adding Intel QuickAssist RSA key generation and SHA-3 support
  • RSA verify only (--enable-rsavfy) and RSA public only (--enable-rsapub) builds added
  • Enhancements to test cases for increased code coverage
  • Updates to VxWorks port for use with Mongoose, including updates to the OpenSSL compatibility layer
  • Yocto Project ease of use improvements along with many updates and build instructions added to the INSTALL file
  • Maximum ticket nonce size was increased to 8
  • Updating --enable-armasm build for ease of use with autotools
  • Updates to internal code checking TLS 1.3 version with a connection
  • Removing unnecessary extended master secret from ServerHello if using TLS 1.3
  • Fix for TLS v1.3 HelloRetryRequest to be sent immediately and not grouped

This release of wolfSSL includes a fix for 1 security vulnerability.

Medium level fix for potential cache attack with a variant of Bleichenbacher’s attack. Earlier versions of wolfSSL leaked PKCS #1 v1.5 padding information during private key decryption that could lead to a potential padding oracle attack. It is recommended that users update to the latest version of wolfSSL if they have RSA cipher suites enabled and have the potential for malicious software to be ran on the same system that is performing RSA operations. Users that have only ECC cipher suites enabled and are not performing RSA PKCS #1 v1.5 Decryption operations are not vulnerable. Also users with TLS 1.3 only connections are not vulnerable to this attack. Thanks to Eyal Ronen (Weizmann Institute), Robert Gillham (University of Adelaide), Daniel Genkin (University of Michigan), Adi Shamir (Weizmann Institute), David Wong (NCC Group), and Yuval Yarom (University of Adelaide and Data61) for the report.

The paper for further reading on the attack details can be found at http://cat.eyalro.net/cat.pdf.

wolfSSL release version 3.15.5

09 Nov 21:48
39506e6
Compare
Choose a tag to compare

wolfSSL Release 3.15.5 (11/07/2018)

Release 3.15.5 of wolfSSL embedded TLS has bug fixes and new features including:

  • Fixes for GCC-8 warnings with strings
  • Additional compatibility API’s added, including functions like wolfSSL_X509_CA_num and wolfSSL_PEM_read_X509_CRL
  • Fixes for OCSP use with NGINX port
  • Renamed the macro INLINE to WC_INLINE for inline functions
  • Doxygen updates and formatting for documentation generation
  • Added support for the STM32L4 with AES/SHA hardware acceleration
  • Adds checking for critical extension with certificate Auth ID and the macro WOLFSSL_ALLOW_CRIT_SKID to override the check
  • Added public key callbacks to ConfirmSignature function to expand public key callback support
  • Added ECC and Curve25519 key generation callback support
  • Fix for memory management with wolfSSL_BN_hex2bn function
  • Added support for dynamic allocation of PKCS7 structure using wc_PKCS7_New and wc_PKCS7_Free
  • Port to apache mynewt added in the directory wolfssl-3.15.5/IDE/mynewt/*
  • OCSP stapling in TLS 1.3 additions
  • Port for ASIO added with --enable-asio configure flag
  • Contiki port added with macro WOLFSSL_CONTIKI
  • Memory free optimizations with adding in earlier free’s where possible
  • Made modifications to the primality testing so that the Miller-Rabin tests check against up to 40 random numbers rather than a fixed list of small primes
  • Certificate validation time generation updated
  • Fixes for MQX classic 4.0 with IAR-EWARM
  • Fix for assembly optimized version of Curve25519
  • Make SOCKET_PEER_CLOSED_E consistent between read and write cases
  • Relocate compatibility layer functions for OpenSSH port update
  • Update to Intel® SGX port, files included by Windows version and macros defined when using WOLFSSL_SGX
  • Updates to Nucleus version supported
  • Stack size reduction with smallstack build
  • Updates to Rowley-Crossworks settings for CMSIS 4
  • Added reference STSAFE-A100 public key callbacks for TLS support
  • Added reference ATECC508A/ATECC608A public key callbacks for TLS support
  • Updated support for latest CryptoAuthLib (10/25/2018)
  • Added a wolfSSL static library project for Atollic TrueSTUDIO
  • Flag to disable AES-CBC and have only AEAD cipher suites with TLS
  • AF_ALG and cryptodev-linux crypto support added
  • Update to IO callbacks with use of WOLFSSL_BIO
  • Additional support for parsing certificate subject OIDs (businessCategory, jurisdiction of incorporation country, and jurisdiction of incorporation state)
  • Added wc_ecc_ecport_ex and wc_export_inti API's for ECC hex string exporting
  • Updates to XCODE build with wolfSSL
  • Fix for guard on when to include sys/time.h header
  • Updates and enhancements to the GCC-ARM example
  • Fix for PKCS8 padding with encryption
  • Updates for wolfcrypt JNI wrapper
  • ALT_ECC_SIZE use with SP math
  • PIC32MZ hardware acceleration buffer alignment fixes
  • Renesas e2studio project files added
  • Renesas RX example project added
  • Fix for DH algorithm when using SP math with ARM assembly
  • Fixes and enhancements for NXP K82 support
  • Benchmark enhancements to print in CSV format and in Japanese
  • Support for PKCS#11 added with --enable-pkcs11
  • Fixes for asynchronous crypto use with TLS 1.3
  • TLS 1.3 only build, allows for disabling TLS 1.2 and earlier protocols
  • Fix for GCC warnings in function wolfSSL_ASN1_TIME_adj
  • Added --enable-asn=nocrypt for certificate only parsing support
  • Added support for parsing PIV format certificates with the function wc_ParseCertPIV and macro WOLFSSL_CERT_PIV
  • Added APIs to support GZIP
  • Updates to support Lighttpd
  • Version resource added for Windows DLL builds
  • Increased code coverage with additional testing
  • Added support for constructed OCTET_STRING with PKCS#7 signed data
  • Added DTLS either (server/client) side initialization setting
  • Minor fixes for building with MINGW32 compiler
  • Added support for generic ECC PEM header/footer with PKCS8 parsing
  • Added Japanese output to example server and client with “-1 1” flag
  • Added USE_ECDSA_KEYSZ_HASH_ALGO macro for building to use digest sizes that match ephemeral key size
  • Expand PKCS#7 CMS support with KEKRI, PWRI and ORI
  • Streaming capability for PKCS#7 decoding and sign verify added

See INSTALL file for build instructions.
More info can be found on-line at http://wolfssl.com/wolfSSL/Docs.html