Compare commits
12 Commits
main
...
OPENBSD_6_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2cbf5a2ee5 | ||
![]() |
4ce7dae59e | ||
![]() |
39666aaa78 | ||
![]() |
7cd2b0e2e1 | ||
![]() |
e013f9143d | ||
![]() |
9a5e2f1686 | ||
![]() |
c4ebe2518c | ||
![]() |
1d36474726 | ||
![]() |
48ecc2d05d | ||
![]() |
7f322bfe7e | ||
![]() |
47d4f7109f | ||
![]() |
12348e6f64 |
@ -144,7 +144,7 @@ if(HAVE_STRNDUP)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(HAVE_STRNLEN)
|
set(HAVE_STRNLEN true)
|
||||||
add_definitions(-DHAVE_STRNLEN)
|
add_definitions(-DHAVE_STRNLEN)
|
||||||
else()
|
else()
|
||||||
check_function_exists(strnlen HAVE_STRNLEN)
|
check_function_exists(strnlen HAVE_STRNLEN)
|
||||||
|
86
ChangeLog
86
ChangeLog
@ -28,6 +28,92 @@ history is also available from Git.
|
|||||||
|
|
||||||
LibreSSL Portable Release Notes:
|
LibreSSL Portable Release Notes:
|
||||||
|
|
||||||
|
2.4.5 - Security and compatibility fixes
|
||||||
|
|
||||||
|
* Avoid a side-channel cache-timing attack that can leak the ECDSA
|
||||||
|
private keys when signing. This is due to BN_mod_inverse() being
|
||||||
|
used without the constant time flag being set.
|
||||||
|
|
||||||
|
This issue was reported by Cesar Pereida Garcia and Billy Brumley
|
||||||
|
(Tampere University of Technology). The fix was developed by Cesar
|
||||||
|
Pereida Garcia.
|
||||||
|
|
||||||
|
* iOS and MacOS compatibility updates from Simone Basso and Jacob
|
||||||
|
Berkman.
|
||||||
|
|
||||||
|
2.4.4 - Reliability improvements
|
||||||
|
|
||||||
|
* Avoid continual processing of an unlimited number of TLS records,
|
||||||
|
which can cause a denial-of-service condition.
|
||||||
|
|
||||||
|
* In X509_cmp_time(), pass asn1_time_parse() the tag of the field
|
||||||
|
being parsed so that a malformed GeneralizedTime field is recognized as
|
||||||
|
an error instead of potentially being interpreted as if it was a valid
|
||||||
|
UTCTime.
|
||||||
|
|
||||||
|
* Improve ticket validity checking when tlsext_ticket_key_cb()
|
||||||
|
callback chooses a different HMAC algorithm.
|
||||||
|
|
||||||
|
* Check for packets with a truncated DTLS cookie.
|
||||||
|
|
||||||
|
* Detect zero-length encrypted session data early, instead of when
|
||||||
|
malloc(0) fails or the HMAC check fails.
|
||||||
|
|
||||||
|
* Check for and handle failure of HMAC_{Update,Final} or
|
||||||
|
EVP_DecryptUpdate()
|
||||||
|
|
||||||
|
2.4.3 - Bug fixes and reliability improvements
|
||||||
|
|
||||||
|
* Reverted change that cleans up the EVP cipher context in
|
||||||
|
EVP_EncryptFinal() and EVP_DecryptFinal(). Some software relies on the
|
||||||
|
previous behaviour.
|
||||||
|
|
||||||
|
* Avoid unbounded memory growth in libssl, which can be triggered by a
|
||||||
|
TLS client repeatedly renegotiating and sending OCSP Status Request
|
||||||
|
TLS extensions.
|
||||||
|
|
||||||
|
* Avoid falling back to a weak digest for (EC)DH when using SNI with
|
||||||
|
libssl.
|
||||||
|
|
||||||
|
2.4.2 - Bug fixes and improvements
|
||||||
|
|
||||||
|
* Fixed loading default certificate locations with openssl s_client.
|
||||||
|
|
||||||
|
* Ensured OSCP only uses and compares GENERALIZEDTIME values as per
|
||||||
|
RFC6960. Also added fixes for OCSP to work with intermediate
|
||||||
|
certificates provided in responses.
|
||||||
|
|
||||||
|
* Improved behavior of arc4random on Windows to not appear to leak
|
||||||
|
memory in debug tools, reduced privileges of allocated memory.
|
||||||
|
|
||||||
|
* Fixed incorrect results from BN_mod_word() when the modulus is too
|
||||||
|
large, thanks to Brian Smith from BoringSSL.
|
||||||
|
|
||||||
|
* Correctly handle an EOF prior to completing the TLS handshake in
|
||||||
|
libtls.
|
||||||
|
|
||||||
|
* Improved libtls ceritificate loading and cipher string validation.
|
||||||
|
|
||||||
|
* Updated libtls cipher group suites into four categories:
|
||||||
|
"secure" (TLSv1.2+AEAD+PFS)
|
||||||
|
"compat" (HIGH:!aNULL)
|
||||||
|
"legacy" (HIGH:MEDIUM:!aNULL)
|
||||||
|
"insecure" (ALL:!aNULL:!eNULL)
|
||||||
|
This allows for flexibility and finer grained control, rather than
|
||||||
|
having two extremes.
|
||||||
|
|
||||||
|
* Limited support for 'backward compatible' SSLv2 handshake packets to
|
||||||
|
when TLS 1.0 is enabled, providing more restricted compatibility
|
||||||
|
with TLS 1.0 clients.
|
||||||
|
|
||||||
|
* openssl(1) and other documentation improvements.
|
||||||
|
|
||||||
|
* Removed flags for disabling constant-time operations.
|
||||||
|
This removes support for DSA_FLAG_NO_EXP_CONSTTIME,
|
||||||
|
DH_FLAG_NO_EXP_CONSTTIME, and RSA_FLAG_NO_CONSTTIME flags, making
|
||||||
|
all of these operations unconditionally constant-time.
|
||||||
|
|
||||||
|
|
||||||
2.4.1 - Security fix
|
2.4.1 - Security fix
|
||||||
|
|
||||||
* Correct a problem that prevents the DSA signing algorithm from
|
* Correct a problem that prevents the DSA signing algorithm from
|
||||||
|
@ -1 +1 @@
|
|||||||
master
|
OPENBSD_6_0
|
||||||
|
@ -752,6 +752,9 @@ if (BUILD_SHARED)
|
|||||||
add_library(crypto-objects OBJECT ${CRYPTO_SRC})
|
add_library(crypto-objects OBJECT ${CRYPTO_SRC})
|
||||||
add_library(crypto STATIC $<TARGET_OBJECTS:crypto-objects>)
|
add_library(crypto STATIC $<TARGET_OBJECTS:crypto-objects>)
|
||||||
add_library(crypto-shared SHARED $<TARGET_OBJECTS:crypto-objects>)
|
add_library(crypto-shared SHARED $<TARGET_OBJECTS:crypto-objects>)
|
||||||
|
if (MSVC)
|
||||||
|
target_link_libraries(crypto-shared crypto Ws2_32.lib)
|
||||||
|
endif()
|
||||||
set_target_properties(crypto-shared PROPERTIES OUTPUT_NAME crypto)
|
set_target_properties(crypto-shared PROPERTIES OUTPUT_NAME crypto)
|
||||||
set_target_properties(crypto-shared PROPERTIES VERSION
|
set_target_properties(crypto-shared PROPERTIES VERSION
|
||||||
${CRYPTO_VERSION} SOVERSION ${CRYPTO_MAJOR_VERSION})
|
${CRYPTO_VERSION} SOVERSION ${CRYPTO_MAJOR_VERSION})
|
||||||
|
@ -47,7 +47,52 @@ AM_CONDITIONAL([HAVE_B64_NTOP], [test "x$ac_cv_func_b64_ntop_arg" = xyes])
|
|||||||
AC_DEFUN([CHECK_CRYPTO_COMPAT], [
|
AC_DEFUN([CHECK_CRYPTO_COMPAT], [
|
||||||
# Check crypto-related libc functions and syscalls
|
# Check crypto-related libc functions and syscalls
|
||||||
AC_CHECK_FUNCS([arc4random arc4random_buf arc4random_uniform])
|
AC_CHECK_FUNCS([arc4random arc4random_buf arc4random_uniform])
|
||||||
AC_CHECK_FUNCS([explicit_bzero getauxval getentropy])
|
AC_CHECK_FUNCS([explicit_bzero getauxval])
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for getentropy], ac_cv_func_getentropy, [
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Explanation:
|
||||||
|
*
|
||||||
|
* - iOS <= 10.1 fails because of missing sys/random.h
|
||||||
|
*
|
||||||
|
* - in macOS 10.12 getentropy is not tagged as introduced in
|
||||||
|
* 10.12 so we cannot use it for target < 10.12
|
||||||
|
*/
|
||||||
|
#ifdef __APPLE__
|
||||||
|
# include <AvailabilityMacros.h>
|
||||||
|
# include <TargetConditionals.h>
|
||||||
|
|
||||||
|
# if (TARGET_OS_IPHONE || TARGET_OS_SIMULATOR)
|
||||||
|
# include <sys/random.h> /* Not available as of iOS <= 10.1 */
|
||||||
|
# else
|
||||||
|
|
||||||
|
# include <sys/random.h> /* Pre 10.12 systems should die here */
|
||||||
|
|
||||||
|
/* Based on: https://gitweb.torproject.org/tor.git/commit/?id=16fcbd21 */
|
||||||
|
# ifndef MAC_OS_X_VERSION_10_12
|
||||||
|
# define MAC_OS_X_VERSION_10_12 101200 /* Robustness */
|
||||||
|
# endif
|
||||||
|
# if defined(MAC_OS_X_VERSION_MIN_REQUIRED)
|
||||||
|
# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
||||||
|
# error "Targeting on Mac OSX 10.11 or earlier"
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif /* __APPLE__ */
|
||||||
|
]], [[
|
||||||
|
char buffer;
|
||||||
|
(void)getentropy(&buffer, sizeof (buffer));
|
||||||
|
]])],
|
||||||
|
[ ac_cv_func_getentropy="yes" ],
|
||||||
|
[ ac_cv_func_getentropy="no"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
AC_CHECK_FUNCS([timingsafe_bcmp timingsafe_memcmp])
|
AC_CHECK_FUNCS([timingsafe_bcmp timingsafe_memcmp])
|
||||||
AM_CONDITIONAL([HAVE_ARC4RANDOM], [test "x$ac_cv_func_arc4random" = xyes])
|
AM_CONDITIONAL([HAVE_ARC4RANDOM], [test "x$ac_cv_func_arc4random" = xyes])
|
||||||
AM_CONDITIONAL([HAVE_ARC4RANDOM_BUF], [test "x$ac_cv_func_arc4random_buf" = xyes])
|
AM_CONDITIONAL([HAVE_ARC4RANDOM_BUF], [test "x$ac_cv_func_arc4random_buf" = xyes])
|
||||||
|
@ -17,10 +17,45 @@ case $host_os in
|
|||||||
*darwin*)
|
*darwin*)
|
||||||
HOST_OS=darwin
|
HOST_OS=darwin
|
||||||
HOST_ABI=macosx
|
HOST_ABI=macosx
|
||||||
|
#
|
||||||
|
# Don't use arc4random on systems before 10.12 because of
|
||||||
# weak seed on failure to open /dev/random, based on latest
|
# weak seed on failure to open /dev/random, based on latest
|
||||||
# public source:
|
# public source:
|
||||||
# http://www.opensource.apple.com/source/Libc/Libc-997.90.3/gen/FreeBSD/arc4random.c
|
# http://www.opensource.apple.com/source/Libc/Libc-997.90.3/gen/FreeBSD/arc4random.c
|
||||||
USE_BUILTIN_ARC4RANDOM=yes
|
#
|
||||||
|
# We use the presence of getentropy() to detect 10.12. The
|
||||||
|
# following check take into account that:
|
||||||
|
#
|
||||||
|
# - iOS <= 10.1 fails because of missing getentropy and
|
||||||
|
# hence they miss sys/random.h
|
||||||
|
#
|
||||||
|
# - in macOS 10.12 getentropy is not tagged as introduced in
|
||||||
|
# 10.12 so we cannot use it for target < 10.12
|
||||||
|
#
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
#include <AvailabilityMacros.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/random.h> /* Systems without getentropy() should die here */
|
||||||
|
|
||||||
|
/* Based on: https://gitweb.torproject.org/tor.git/commit/?id=16fcbd21 */
|
||||||
|
#ifndef MAC_OS_X_VERSION_10_12
|
||||||
|
# define MAC_OS_X_VERSION_10_12 101200
|
||||||
|
#endif
|
||||||
|
#if defined(MAC_OS_X_VERSION_MIN_REQUIRED)
|
||||||
|
# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
||||||
|
# error "Running on Mac OSX 10.11 or earlier"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
]], [[
|
||||||
|
char buf[1]; getentropy(buf, 1);
|
||||||
|
]])],
|
||||||
|
[ USE_BUILTIN_ARC4RANDOM=no ],
|
||||||
|
[ USE_BUILTIN_ARC4RANDOM=yes ]
|
||||||
|
)
|
||||||
|
AC_MSG_CHECKING([whether to use builtin arc4random])
|
||||||
|
AC_MSG_RESULT([$USE_BUILTIN_ARC4RANDOM])
|
||||||
|
# Not available on iOS
|
||||||
|
AC_CHECK_HEADER([arpa/telnet.h], [], [BUILD_NC=no])
|
||||||
;;
|
;;
|
||||||
*freebsd*)
|
*freebsd*)
|
||||||
HOST_OS=freebsd
|
HOST_OS=freebsd
|
||||||
|
@ -52,6 +52,9 @@ if (BUILD_SHARED)
|
|||||||
add_library(ssl-objects OBJECT ${SSL_SRC})
|
add_library(ssl-objects OBJECT ${SSL_SRC})
|
||||||
add_library(ssl STATIC $<TARGET_OBJECTS:ssl-objects>)
|
add_library(ssl STATIC $<TARGET_OBJECTS:ssl-objects>)
|
||||||
add_library(ssl-shared SHARED $<TARGET_OBJECTS:ssl-objects>)
|
add_library(ssl-shared SHARED $<TARGET_OBJECTS:ssl-objects>)
|
||||||
|
if (MSVC)
|
||||||
|
target_link_libraries(ssl-shared crypto-shared Ws2_32.lib)
|
||||||
|
endif()
|
||||||
set_target_properties(ssl-shared PROPERTIES OUTPUT_NAME ssl)
|
set_target_properties(ssl-shared PROPERTIES OUTPUT_NAME ssl)
|
||||||
set_target_properties(ssl-shared PROPERTIES VERSION ${SSL_VERSION}
|
set_target_properties(ssl-shared PROPERTIES VERSION ${SSL_VERSION}
|
||||||
SOVERSION ${SSL_MAJOR_VERSION})
|
SOVERSION ${SSL_MAJOR_VERSION})
|
||||||
|
@ -196,6 +196,11 @@ add_test(mont mont)
|
|||||||
|
|
||||||
# ocsp_test
|
# ocsp_test
|
||||||
if(ENABLE_EXTRATESTS)
|
if(ENABLE_EXTRATESTS)
|
||||||
|
if(NOT "${OPENSSLDIR}" STREQUAL "")
|
||||||
|
add_definitions(-D_PATH_SSL_CA_FILE=\"${OPENSSLDIR}/cert.pem\")
|
||||||
|
else()
|
||||||
|
add_definitions(-D_PATH_SSL_CA_FILE=\"${CMAKE_INSTALL_PREFIX}/etc/ssl/cert.pem\")
|
||||||
|
endif()
|
||||||
add_executable(ocsp_test ocsp_test.c)
|
add_executable(ocsp_test ocsp_test.c)
|
||||||
target_link_libraries(ocsp_test ${OPENSSL_LIBS})
|
target_link_libraries(ocsp_test ${OPENSSL_LIBS})
|
||||||
add_test(ocsptest ${CMAKE_CURRENT_SOURCE_DIR}/ocsptest.sh)
|
add_test(ocsptest ${CMAKE_CURRENT_SOURCE_DIR}/ocsptest.sh)
|
||||||
|
@ -31,6 +31,9 @@ if (BUILD_SHARED)
|
|||||||
add_library(tls-objects OBJECT ${TLS_SRC})
|
add_library(tls-objects OBJECT ${TLS_SRC})
|
||||||
add_library(tls STATIC $<TARGET_OBJECTS:tls-objects>)
|
add_library(tls STATIC $<TARGET_OBJECTS:tls-objects>)
|
||||||
add_library(tls-shared SHARED $<TARGET_OBJECTS:tls-objects>)
|
add_library(tls-shared SHARED $<TARGET_OBJECTS:tls-objects>)
|
||||||
|
if (MSVC)
|
||||||
|
target_link_libraries(tls-shared ssl-shared crypto-shared Ws2_32.lib)
|
||||||
|
endif()
|
||||||
set_target_properties(tls-shared PROPERTIES OUTPUT_NAME tls)
|
set_target_properties(tls-shared PROPERTIES OUTPUT_NAME tls)
|
||||||
set_target_properties(tls-shared PROPERTIES VERSION ${TLS_VERSION}
|
set_target_properties(tls-shared PROPERTIES VERSION ${TLS_VERSION}
|
||||||
SOVERSION ${TLS_MAJOR_VERSION})
|
SOVERSION ${TLS_MAJOR_VERSION})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user