You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11489 lines
486 KiB
Plaintext
11489 lines
486 KiB
Plaintext
|
|
OpenSSL CHANGES
|
|
_______________
|
|
|
|
Changes between 1.0.2e and 1.1.0 [xx XXX xxxx]
|
|
|
|
*) Remove support for all 40 and 56 bit ciphers. This includes all the export
|
|
ciphers who are no longer supported and drops support the ephemeral RSA key
|
|
exchange. The LOW ciphers currently doesn't have any ciphers in it.
|
|
[Kurt Roeckx]
|
|
|
|
*) Make EVP_MD_CTX, EVP_MD and HMAC_CTX opaque. For HMAC_CTX, the
|
|
following constructors and destructors were added:
|
|
|
|
HMAC_CTX *HMAC_CTX_new(void);
|
|
void HMAC_CTX_free(HMAC_CTX *ctx);
|
|
|
|
For EVP_MD, a complete API to create, fill and destroy such
|
|
methods has been added. See EVP_MD_meth_new(3) for
|
|
documentation.
|
|
|
|
Additional changes:
|
|
1) HMAC_CTX_cleanup() and EVP_MD_CTX_cleanup() were removed,
|
|
HMAC_CTX_init() and EVP_MD_CTX_init() should be called instead
|
|
to reinitialise and already created structure. Also,
|
|
HMAC_CTX_init() and EVP_MD_CTX_init() now return 0 for failure
|
|
and 1 for success (they previously had the return type void).
|
|
2) For consistency with the majority of our object creators and
|
|
destructors, EVP_MD_CTX_(create|destroy) were renamed to
|
|
EVP_MD_CTX_(new|free). The old names are retained as macros
|
|
for deprecated builds.
|
|
[Richard Levitte]
|
|
|
|
*) Added ASYNC support. Libcrypto now includes the async sub-library to enable
|
|
cryptographic operations to be performed asynchronously as long as an
|
|
asynchronous capable engine is used. See the ASYNC_start_job() man page for
|
|
further details. Libssl has also had this capability integrated with the
|
|
introduction of the new mode SSL_MODE_ASYNC and associated error
|
|
SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man
|
|
pages. This work was developed in partnership with Intel Corp.
|
|
[Matt Caswell]
|
|
|
|
*) SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is
|
|
always enabled now. If you want to disable the support you should
|
|
exclude it using the list of supported ciphers.
|
|
[Kurt Roeckx]
|
|
|
|
*) SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls
|
|
SSL_{CTX_}set1_curves() which can set a list.
|
|
[Kurt Roeckx]
|
|
|
|
*) Remove support for SSL_{CTX_}set_tmp_ecdh_callback(). You should set the
|
|
curve you want to support using SSL_{CTX_}set1_curves().
|
|
[Kurt Roeckx]
|
|
|
|
*) State machine rewrite. The state machine code has been significantly
|
|
refactored in order to remove much duplication of code and solve issues
|
|
with the old code (see ssl/statem/README for further details). This change
|
|
does have some associated API changes. Notably the SSL_state() function
|
|
has been removed and replaced by SSL_get_state which now returns an
|
|
"OSSL_HANDSHAKE_STATE" instead of an int. SSL_set_state() has been removed
|
|
altogether. The previous handshake states defined in ssl.h and ssl3.h have
|
|
also been removed.
|
|
[Matt Caswell]
|
|
|
|
*) All instances of the string "ssleay" in the public API were replaced
|
|
with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's)
|
|
Some error codes related to internal RSA_eay API's were renamed.
|
|
[Rich Salz]
|
|
|
|
*) The demo files in crypto/threads were moved to demo/threads.
|
|
[Rich Salz]
|
|
|
|
*) Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron and sureware.
|
|
[Matt Caswell]
|
|
|
|
*) New ASN.1 embed macro.
|
|
|
|
New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the
|
|
structure is not allocated: it is part of the parent. That is instead of
|
|
|
|
FOO *x;
|
|
|
|
it must be:
|
|
|
|
FOO x;
|
|
|
|
This reduces memory fragmentation and make it impossible to accidentally
|
|
set a mandatory field to NULL.
|
|
|
|
This currently only works for some fields specifically a SEQUENCE, CHOICE,
|
|
or ASN1_STRING type which is part of a parent SEQUENCE. Since it is
|
|
equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or
|
|
SEQUENCE OF.
|
|
[Steve Henson]
|
|
|
|
*) Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled.
|
|
[Emilia Käsper]
|
|
|
|
*) Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although
|
|
in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also
|
|
an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add
|
|
DES and RC4 ciphersuites.
|
|
[Matt Caswell]
|
|
|
|
*) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
|
|
This changes the decoding behaviour for some invalid messages,
|
|
though the change is mostly in the more lenient direction, and
|
|
legacy behaviour is preserved as much as possible.
|
|
[Emilia Käsper]
|
|
|
|
*) Fix no-stdio build.
|
|
[ David Woodhouse <David.Woodhouse@intel.com> and also
|
|
Ivan Nestlerode <ivan.nestlerode@sonos.com> ]
|
|
|
|
*) New testing framework
|
|
The testing framework has been largely rewritten and is now using
|
|
perl and the perl modules Test::Harness and an extended variant of
|
|
Test::More called OpenSSL::Test to do its work. All test scripts in
|
|
test/ have been rewritten into test recipes, and all direct calls to
|
|
executables in test/Makefile have become individual recipes using the
|
|
simplified testing OpenSSL::Test::Simple.
|
|
|
|
For documentation on our testing modules, do:
|
|
|
|
perldoc test/testlib/OpenSSL/Test/Simple.pm
|
|
perldoc test/testlib/OpenSSL/Test.pm
|
|
|
|
[Richard Levitte]
|
|
|
|
*) In DSA_generate_parameters_ex, if the provided seed is too short,
|
|
return an error
|
|
[Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
|
|
|
|
*) Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
|
|
from RFC4279, RFC4785, RFC5487, RFC5489.
|
|
|
|
Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
|
|
original RSA_PSK patch.
|
|
[Steve Henson]
|
|
|
|
*) Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
|
|
era flag was never set throughout the codebase (only read). Also removed
|
|
SSL3_FLAGS_POP_BUFFER which was only used if
|
|
SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
|
|
[Matt Caswell]
|
|
|
|
*) Changed the default name options in the "ca", "crl", "req" and "x509"
|
|
to be "oneline" instead of "compat".
|
|
[Richard Levitte]
|
|
|
|
*) Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
|
|
not aware of clients that still exhibit this bug, and the workaround
|
|
hasn't been working properly for a while.
|
|
[Emilia Käsper]
|
|
|
|
*) The return type of BIO_number_read() and BIO_number_written() as well as
|
|
the corresponding num_read and num_write members in the BIO structure has
|
|
changed from unsigned long to uint64_t. On platforms where an unsigned
|
|
long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
|
|
transferred.
|
|
[Matt Caswell]
|
|
|
|
*) Given the pervasive nature of TLS extensions it is inadvisable to run
|
|
OpenSSL without support for them. It also means that maintaining
|
|
the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
|
|
not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
|
|
[Matt Caswell]
|
|
|
|
*) Removed support for the two export grade static DH ciphersuites
|
|
EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
|
|
were newly added (along with a number of other static DH ciphersuites) to
|
|
1.0.2. However the two export ones have *never* worked since they were
|
|
introduced. It seems strange in any case to be adding new export
|
|
ciphersuites, and given "logjam" it also does not seem correct to fix them.
|
|
[Matt Caswell]
|
|
|
|
*) Version negotiation has been rewritten. In particular SSLv23_method(),
|
|
SSLv23_client_method() and SSLv23_server_method() have been deprecated,
|
|
and turned into macros which simply call the new preferred function names
|
|
TLS_method(), TLS_client_method() and TLS_server_method(). All new code
|
|
should use the new names instead. Also as part of this change the ssl23.h
|
|
header file has been removed.
|
|
[Matt Caswell]
|
|
|
|
*) Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
|
|
code and the associated standard is no longer considered fit-for-purpose.
|
|
[Matt Caswell]
|
|
|
|
*) RT2547 was closed. When generating a private key, try to make the
|
|
output file readable only by the owner. This behavior change might
|
|
be noticeable when interacting with other software.
|
|
|
|
*) Documented all exdata functions. Added CRYPTO_free_ex_index.
|
|
Added a test.
|
|
[Rich Salz]
|
|
|
|
*) Added HTTP GET support to the ocsp command.
|
|
[Rich Salz]
|
|
|
|
*) RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
|
|
[Matt Caswell]
|
|
|
|
*) Added support for TLS extended master secret from
|
|
draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
|
|
initial patch which was a great help during development.
|
|
[Steve Henson]
|
|
|
|
*) All libssl internal structures have been removed from the public header
|
|
files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
|
|
now redundant). Users should not attempt to access internal structures
|
|
directly. Instead they should use the provided API functions.
|
|
[Matt Caswell]
|
|
|
|
*) config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
|
|
Access to deprecated functions can be re-enabled by running config with
|
|
"enable-deprecated". In addition applications wishing to use deprecated
|
|
functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
|
|
will, by default, disable some transitive includes that previously existed
|
|
in the header files (e.g. ec.h will no longer, by default, include bn.h)
|
|
[Matt Caswell]
|
|
|
|
*) Added support for OCB mode. OpenSSL has been granted a patent license
|
|
compatible with the OpenSSL license for use of OCB. Details are available
|
|
at https://www.openssl.org/docs/misc/OCB-patent-grant-OpenSSL.pdf. Support
|
|
for OCB can be removed by calling config with no-ocb.
|
|
[Matt Caswell]
|
|
|
|
*) SSLv2 support has been removed. It still supports receiving a SSLv2
|
|
compatible client hello.
|
|
[Kurt Roeckx]
|
|
|
|
*) Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
|
|
done while fixing the error code for the key-too-small case.
|
|
[Annie Yousar <a.yousar@informatik.hu-berlin.de>]
|
|
|
|
*) CA.sh has been removmed; use CA.pl instead.
|
|
[Rich Salz]
|
|
|
|
*) Removed old DES API.
|
|
[Rich Salz]
|
|
|
|
*) Remove various unsupported platforms:
|
|
Sony NEWS4
|
|
BEOS and BEOS_R5
|
|
NeXT
|
|
SUNOS
|
|
MPE/iX
|
|
Sinix/ReliantUNIX RM400
|
|
DGUX
|
|
NCR
|
|
Tandem
|
|
Cray
|
|
16-bit platforms such as WIN16
|
|
[Rich Salz]
|
|
|
|
*) Clean up OPENSSL_NO_xxx #define's
|
|
Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
|
|
Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
|
|
OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
|
|
OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
|
|
OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
|
|
Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
|
|
OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
|
|
OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
|
|
OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
|
|
Remove MS_STATIC; it's a relic from platforms <32 bits.
|
|
[Rich Salz]
|
|
|
|
*) Cleaned up dead code
|
|
Remove all but one '#ifdef undef' which is to be looked at.
|
|
[Rich Salz]
|
|
|
|
*) Clean up calling of xxx_free routines.
|
|
Just like free(), fix most of the xxx_free routines to accept
|
|
NULL. Remove the non-null checks from callers. Save much code.
|
|
[Rich Salz]
|
|
|
|
*) Add secure heap for storage of private keys (when possible).
|
|
Add BIO_s_secmem(), CBIGNUM, etc.
|
|
Contributed by Akamai Technologies under our Corporate CLA.
|
|
[Rich Salz]
|
|
|
|
*) Experimental support for a new, fast, unbiased prime candidate generator,
|
|
bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
|
|
[Felix Laurie von Massenbach <felix@erbridge.co.uk>]
|
|
|
|
*) New output format NSS in the sess_id command line tool. This allows
|
|
exporting the session id and the master key in NSS keylog format.
|
|
[Martin Kaiser <martin@kaiser.cx>]
|
|
|
|
*) Harmonize version and its documentation. -f flag is used to display
|
|
compilation flags.
|
|
[mancha <mancha1@zoho.com>]
|
|
|
|
*) Fix eckey_priv_encode so it immediately returns an error upon a failure
|
|
in i2d_ECPrivateKey. Thanks to Ted Unangst for feedback on this issue.
|
|
[mancha <mancha1@zoho.com>]
|
|
|
|
*) Fix some double frees. These are not thought to be exploitable.
|
|
[mancha <mancha1@zoho.com>]
|
|
|
|
*) A missing bounds check in the handling of the TLS heartbeat extension
|
|
can be used to reveal up to 64k of memory to a connected client or
|
|
server.
|
|
|
|
Thanks for Neel Mehta of Google Security for discovering this bug and to
|
|
Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
|
|
preparing the fix (CVE-2014-0160)
|
|
[Adam Langley, Bodo Moeller]
|
|
|
|
*) Fix for the attack described in the paper "Recovering OpenSSL
|
|
ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
|
|
by Yuval Yarom and Naomi Benger. Details can be obtained from:
|
|
http://eprint.iacr.org/2014/140
|
|
|
|
Thanks to Yuval Yarom and Naomi Benger for discovering this
|
|
flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
|
|
[Yuval Yarom and Naomi Benger]
|
|
|
|
*) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
|
|
this fixes a limitation in previous versions of OpenSSL.
|
|
[Steve Henson]
|
|
|
|
*) Experimental encrypt-then-mac support.
|
|
|
|
Experimental support for encrypt then mac from
|
|
draft-gutmann-tls-encrypt-then-mac-02.txt
|
|
|
|
To enable it set the appropriate extension number (0x42 for the test
|
|
server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
|
|
|
|
For non-compliant peers (i.e. just about everything) this should have no
|
|
effect.
|
|
|
|
WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
|
|
|
|
[Steve Henson]
|
|
|
|
*) Add EVP support for key wrapping algorithms, to avoid problems with
|
|
existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
|
|
the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
|
|
algorithms and include tests cases.
|
|
[Steve Henson]
|
|
|
|
*) Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
|
|
enveloped data.
|
|
[Steve Henson]
|
|
|
|
*) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
|
|
MGF1 digest and OAEP label.
|
|
[Steve Henson]
|
|
|
|
*) Make openssl verify return errors.
|
|
[Chris Palmer <palmer@google.com> and Ben Laurie]
|
|
|
|
*) New function ASN1_TIME_diff to calculate the difference between two
|
|
ASN1_TIME structures or one structure and the current time.
|
|
[Steve Henson]
|
|
|
|
*) Update fips_test_suite to support multiple command line options. New
|
|
test to induce all self test errors in sequence and check expected
|
|
failures.
|
|
[Steve Henson]
|
|
|
|
*) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
|
|
sign or verify all in one operation.
|
|
[Steve Henson]
|
|
|
|
*) Add fips_algvs: a multicall fips utility incorporating all the algorithm
|
|
test programs and fips_test_suite. Includes functionality to parse
|
|
the minimal script output of fipsalgest.pl directly.
|
|
[Steve Henson]
|
|
|
|
*) Add authorisation parameter to FIPS_module_mode_set().
|
|
[Steve Henson]
|
|
|
|
*) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
|
|
[Steve Henson]
|
|
|
|
*) Use separate DRBG fields for internal and external flags. New function
|
|
FIPS_drbg_health_check() to perform on demand health checking. Add
|
|
generation tests to fips_test_suite with reduced health check interval to
|
|
demonstrate periodic health checking. Add "nodh" option to
|
|
fips_test_suite to skip very slow DH test.
|
|
[Steve Henson]
|
|
|
|
*) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
|
|
based on NID.
|
|
[Steve Henson]
|
|
|
|
*) More extensive health check for DRBG checking many more failure modes.
|
|
New function FIPS_selftest_drbg_all() to handle every possible DRBG
|
|
combination: call this in fips_test_suite.
|
|
[Steve Henson]
|
|
|
|
*) Add support for Dual EC DRBG from SP800-90. Update DRBG algorithm test
|
|
and POST to handle Dual EC cases.
|
|
[Steve Henson]
|
|
|
|
*) Add support for canonical generation of DSA parameter 'g'. See
|
|
FIPS 186-3 A.2.3.
|
|
|
|
*) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
|
|
POST to handle HMAC cases.
|
|
[Steve Henson]
|
|
|
|
*) Add functions FIPS_module_version() and FIPS_module_version_text()
|
|
to return numerical and string versions of the FIPS module number.
|
|
[Steve Henson]
|
|
|
|
*) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
|
|
FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
|
|
outside the validated module in the FIPS capable OpenSSL.
|
|
[Steve Henson]
|
|
|
|
*) Minor change to DRBG entropy callback semantics. In some cases
|
|
there is no multiple of the block length between min_len and
|
|
max_len. Allow the callback to return more than max_len bytes
|
|
of entropy but discard any extra: it is the callback's responsibility
|
|
to ensure that the extra data discarded does not impact the
|
|
requested amount of entropy.
|
|
[Steve Henson]
|
|
|
|
*) Add PRNG security strength checks to RSA, DSA and ECDSA using
|
|
information in FIPS186-3, SP800-57 and SP800-131A.
|
|
[Steve Henson]
|
|
|
|
*) CCM support via EVP. Interface is very similar to GCM case except we
|
|
must supply all data in one chunk (i.e. no update, final) and the
|
|
message length must be supplied if AAD is used. Add algorithm test
|
|
support.
|
|
[Steve Henson]
|
|
|
|
*) Initial version of POST overhaul. Add POST callback to allow the status
|
|
of POST to be monitored and/or failures induced. Modify fips_test_suite
|
|
to use callback. Always run all selftests even if one fails.
|
|
[Steve Henson]
|
|
|
|
*) XTS support including algorithm test driver in the fips_gcmtest program.
|
|
Note: this does increase the maximum key length from 32 to 64 bytes but
|
|
there should be no binary compatibility issues as existing applications
|
|
will never use XTS mode.
|
|
[Steve Henson]
|
|
|
|
*) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
|
|
to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
|
|
performs algorithm blocking for unapproved PRNG types. Also do not
|
|
set PRNG type in FIPS_mode_set(): leave this to the application.
|
|
Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
|
|
the standard OpenSSL PRNG: set additional data to a date time vector.
|
|
[Steve Henson]
|
|
|
|
*) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*.
|
|
This shouldn't present any incompatibility problems because applications
|
|
shouldn't be using these directly and any that are will need to rethink
|
|
anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
|
|
[Steve Henson]
|
|
|
|
*) Extensive self tests and health checking required by SP800-90 DRBG.
|
|
Remove strength parameter from FIPS_drbg_instantiate and always
|
|
instantiate at maximum supported strength.
|
|
[Steve Henson]
|
|
|
|
*) Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
|
|
[Steve Henson]
|
|
|
|
*) New algorithm test program fips_dhvs to handle DH primitives only testing.
|
|
[Steve Henson]
|
|
|
|
*) New function DH_compute_key_padded() to compute a DH key and pad with
|
|
leading zeroes if needed: this complies with SP800-56A et al.
|
|
[Steve Henson]
|
|
|
|
*) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
|
|
anything, incomplete, subject to change and largely untested at present.
|
|
[Steve Henson]
|
|
|
|
*) Modify fipscanisteronly build option to only build the necessary object
|
|
files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
|
|
[Steve Henson]
|
|
|
|
*) Add experimental option FIPSSYMS to give all symbols in
|
|
fipscanister.o and FIPS or fips prefix. This will avoid
|
|
conflicts with future versions of OpenSSL. Add perl script
|
|
util/fipsas.pl to preprocess assembly language source files
|
|
and rename any affected symbols.
|
|
[Steve Henson]
|
|
|
|
*) Add selftest checks and algorithm block of non-fips algorithms in
|
|
FIPS mode. Remove DES2 from selftests.
|
|
[Steve Henson]
|
|
|
|
*) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
|
|
return internal method without any ENGINE dependencies. Add new
|
|
tiny fips sign and verify functions.
|
|
[Steve Henson]
|
|
|
|
*) New build option no-ec2m to disable characteristic 2 code.
|
|
[Steve Henson]
|
|
|
|
*) New build option "fipscanisteronly". This only builds fipscanister.o
|
|
and (currently) associated fips utilities. Uses the file Makefile.fips
|
|
instead of Makefile.org as the prototype.
|
|
[Steve Henson]
|
|
|
|
*) Add some FIPS mode restrictions to GCM. Add internal IV generator.
|
|
Update fips_gcmtest to use IV generator.
|
|
[Steve Henson]
|
|
|
|
*) Initial, experimental EVP support for AES-GCM. AAD can be input by
|
|
setting output buffer to NULL. The *Final function must be
|
|
called although it will not retrieve any additional data. The tag
|
|
can be set or retrieved with a ctrl. The IV length is by default 12
|
|
bytes (96 bits) but can be set to an alternative value. If the IV
|
|
length exceeds the maximum IV length (currently 16 bytes) it cannot be
|
|
set before the key.
|
|
[Steve Henson]
|
|
|
|
*) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
|
|
underlying do_cipher function handles all cipher semantics itself
|
|
including padding and finalisation. This is useful if (for example)
|
|
an ENGINE cipher handles block padding itself. The behaviour of
|
|
do_cipher is subtly changed if this flag is set: the return value
|
|
is the number of characters written to the output buffer (zero is
|
|
no longer an error code) or a negative error code. Also if the
|
|
input buffer is NULL and length 0 finalisation should be performed.
|
|
[Steve Henson]
|
|
|
|
*) If a candidate issuer certificate is already part of the constructed
|
|
path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
|
|
[Steve Henson]
|
|
|
|
*) Improve forward-security support: add functions
|
|
|
|
void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
|
|
void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
|
|
|
|
for use by SSL/TLS servers; the callback function will be called whenever a
|
|
new session is created, and gets to decide whether the session may be
|
|
cached to make it resumable (return 0) or not (return 1). (As by the
|
|
SSL/TLS protocol specifications, the session_id sent by the server will be
|
|
empty to indicate that the session is not resumable; also, the server will
|
|
not generate RFC 4507 (RFC 5077) session tickets.)
|
|
|
|
A simple reasonable callback implementation is to return is_forward_secure.
|
|
This parameter will be set to 1 or 0 depending on the ciphersuite selected
|
|
by the SSL/TLS server library, indicating whether it can provide forward
|
|
security.
|
|
[Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)]
|
|
|
|
*) New -verify_name option in command line utilities to set verification
|
|
parameters by name.
|
|
[Steve Henson]
|
|
|
|
*) Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE.
|
|
Add CMAC pkey methods.
|
|
[Steve Henson]
|
|
|
|
*) Experimental renegotiation in s_server -www mode. If the client
|
|
browses /reneg connection is renegotiated. If /renegcert it is
|
|
renegotiated requesting a certificate.
|
|
[Steve Henson]
|
|
|
|
*) Add an "external" session cache for debugging purposes to s_server. This
|
|
should help trace issues which normally are only apparent in deployed
|
|
multi-process servers.
|
|
[Steve Henson]
|
|
|
|
*) Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where
|
|
return value is ignored. NB. The functions RAND_add(), RAND_seed(),
|
|
BIO_set_cipher() and some obscure PEM functions were changed so they
|
|
can now return an error. The RAND changes required a change to the
|
|
RAND_METHOD structure.
|
|
[Steve Henson]
|
|
|
|
*) New macro __owur for "OpenSSL Warn Unused Result". This makes use of
|
|
a gcc attribute to warn if the result of a function is ignored. This
|
|
is enable if DEBUG_UNUSED is set. Add to several functions in evp.h
|
|
whose return value is often ignored.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.2d and 1.0.2e [3 Dec 2015]
|
|
|
|
*) BN_mod_exp may produce incorrect results on x86_64
|
|
|
|
There is a carry propagating bug in the x86_64 Montgomery squaring
|
|
procedure. No EC algorithms are affected. Analysis suggests that attacks
|
|
against RSA and DSA as a result of this defect would be very difficult to
|
|
perform and are not believed likely. Attacks against DH are considered just
|
|
feasible (although very difficult) because most of the work necessary to
|
|
deduce information about a private key may be performed offline. The amount
|
|
of resources required for such an attack would be very significant and
|
|
likely only accessible to a limited number of attackers. An attacker would
|
|
additionally need online access to an unpatched system using the target
|
|
private key in a scenario with persistent DH parameters and a private
|
|
key that is shared between multiple clients. For example this can occur by
|
|
default in OpenSSL DHE based SSL/TLS ciphersuites.
|
|
|
|
This issue was reported to OpenSSL by Hanno Böck.
|
|
(CVE-2015-3193)
|
|
[Andy Polyakov]
|
|
|
|
*) Certificate verify crash with missing PSS parameter
|
|
|
|
The signature verification routines will crash with a NULL pointer
|
|
dereference if presented with an ASN.1 signature using the RSA PSS
|
|
algorithm and absent mask generation function parameter. Since these
|
|
routines are used to verify certificate signature algorithms this can be
|
|
used to crash any certificate verification operation and exploited in a
|
|
DoS attack. Any application which performs certificate verification is
|
|
vulnerable including OpenSSL clients and servers which enable client
|
|
authentication.
|
|
|
|
This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
|
|
(CVE-2015-3194)
|
|
[Stephen Henson]
|
|
|
|
*) X509_ATTRIBUTE memory leak
|
|
|
|
When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
|
|
memory. This structure is used by the PKCS#7 and CMS routines so any
|
|
application which reads PKCS#7 or CMS data from untrusted sources is
|
|
affected. SSL/TLS is not affected.
|
|
|
|
This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
|
|
libFuzzer.
|
|
(CVE-2015-3195)
|
|
[Stephen Henson]
|
|
|
|
*) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
|
|
This changes the decoding behaviour for some invalid messages,
|
|
though the change is mostly in the more lenient direction, and
|
|
legacy behaviour is preserved as much as possible.
|
|
[Emilia Käsper]
|
|
|
|
*) In DSA_generate_parameters_ex, if the provided seed is too short,
|
|
return an error
|
|
[Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
|
|
|
|
Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
|
|
|
|
*) Alternate chains certificate forgery
|
|
|
|
During certificate verfification, OpenSSL will attempt to find an
|
|
alternative certificate chain if the first attempt to build such a chain
|
|
fails. An error in the implementation of this logic can mean that an
|
|
attacker could cause certain checks on untrusted certificates to be
|
|
bypassed, such as the CA flag, enabling them to use a valid leaf
|
|
certificate to act as a CA and "issue" an invalid certificate.
|
|
|
|
This issue was reported to OpenSSL by Adam Langley/David Benjamin
|
|
(Google/BoringSSL).
|
|
[Matt Caswell]
|
|
|
|
Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
|
|
|
|
*) Fix HMAC ABI incompatibility. The previous version introduced an ABI
|
|
incompatibility in the handling of HMAC. The previous ABI has now been
|
|
restored.
|
|
[Matt Caswell]
|
|
|
|
Changes between 1.0.2a and 1.0.2b [11 Jun 2015]
|
|
|
|
*) Malformed ECParameters causes infinite loop
|
|
|
|
When processing an ECParameters structure OpenSSL enters an infinite loop
|
|
if the curve specified is over a specially malformed binary polynomial
|
|
field.
|
|
|
|
This can be used to perform denial of service against any
|
|
system which processes public keys, certificate requests or
|
|
certificates. This includes TLS clients and TLS servers with
|
|
client authentication enabled.
|
|
|
|
This issue was reported to OpenSSL by Joseph Barr-Pixton.
|
|
(CVE-2015-1788)
|
|
[Andy Polyakov]
|
|
|
|
*) Exploitable out-of-bounds read in X509_cmp_time
|
|
|
|
X509_cmp_time does not properly check the length of the ASN1_TIME
|
|
string and can read a few bytes out of bounds. In addition,
|
|
X509_cmp_time accepts an arbitrary number of fractional seconds in the
|
|
time string.
|
|
|
|
An attacker can use this to craft malformed certificates and CRLs of
|
|
various sizes and potentially cause a segmentation fault, resulting in
|
|
a DoS on applications that verify certificates or CRLs. TLS clients
|
|
that verify CRLs are affected. TLS clients and servers with client
|
|
authentication enabled may be affected if they use custom verification
|
|
callbacks.
|
|
|
|
This issue was reported to OpenSSL by Robert Swiecki (Google), and
|
|
independently by Hanno Böck.
|
|
(CVE-2015-1789)
|
|
[Emilia Käsper]
|
|
|
|
*) PKCS7 crash with missing EnvelopedContent
|
|
|
|
The PKCS#7 parsing code does not handle missing inner EncryptedContent
|
|
correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
|
|
with missing content and trigger a NULL pointer dereference on parsing.
|
|
|
|
Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
|
|
structures from untrusted sources are affected. OpenSSL clients and
|
|
servers are not affected.
|
|
|
|
This issue was reported to OpenSSL by Michal Zalewski (Google).
|
|
(CVE-2015-1790)
|
|
[Emilia Käsper]
|
|
|
|
*) CMS verify infinite loop with unknown hash function
|
|
|
|
When verifying a signedData message the CMS code can enter an infinite loop
|
|
if presented with an unknown hash function OID. This can be used to perform
|
|
denial of service against any system which verifies signedData messages using
|
|
the CMS code.
|
|
This issue was reported to OpenSSL by Johannes Bauer.
|
|
(CVE-2015-1792)
|
|
[Stephen Henson]
|
|
|
|
*) Race condition handling NewSessionTicket
|
|
|
|
If a NewSessionTicket is received by a multi-threaded client when attempting to
|
|
reuse a previous ticket then a race condition can occur potentially leading to
|
|
a double free of the ticket data.
|
|
(CVE-2015-1791)
|
|
[Matt Caswell]
|
|
|
|
*) Only support 256-bit or stronger elliptic curves with the
|
|
'ecdh_auto' setting (server) or by default (client). Of supported
|
|
curves, prefer P-256 (both).
|
|
[Emilia Kasper]
|
|
|
|
Changes between 1.0.2 and 1.0.2a [19 Mar 2015]
|
|
|
|
*) ClientHello sigalgs DoS fix
|
|
|
|
If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
|
|
invalid signature algorithms extension a NULL pointer dereference will
|
|
occur. This can be exploited in a DoS attack against the server.
|
|
|
|
This issue was was reported to OpenSSL by David Ramos of Stanford
|
|
University.
|
|
(CVE-2015-0291)
|
|
[Stephen Henson and Matt Caswell]
|
|
|
|
*) Multiblock corrupted pointer fix
|
|
|
|
OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This
|
|
feature only applies on 64 bit x86 architecture platforms that support AES
|
|
NI instructions. A defect in the implementation of "multiblock" can cause
|
|
OpenSSL's internal write buffer to become incorrectly set to NULL when
|
|
using non-blocking IO. Typically, when the user application is using a
|
|
socket BIO for writing, this will only result in a failed connection.
|
|
However if some other BIO is used then it is likely that a segmentation
|
|
fault will be triggered, thus enabling a potential DoS attack.
|
|
|
|
This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller.
|
|
(CVE-2015-0290)
|
|
[Matt Caswell]
|
|
|
|
*) Segmentation fault in DTLSv1_listen fix
|
|
|
|
The DTLSv1_listen function is intended to be stateless and processes the
|
|
initial ClientHello from many peers. It is common for user code to loop
|
|
over the call to DTLSv1_listen until a valid ClientHello is received with
|
|
an associated cookie. A defect in the implementation of DTLSv1_listen means
|
|
that state is preserved in the SSL object from one invocation to the next
|
|
that can lead to a segmentation fault. Errors processing the initial
|
|
ClientHello can trigger this scenario. An example of such an error could be
|
|
that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only
|
|
server.
|
|
|
|
This issue was reported to OpenSSL by Per Allansson.
|
|
(CVE-2015-0207)
|
|
[Matt Caswell]
|
|
|
|
*) Segmentation fault in ASN1_TYPE_cmp fix
|
|
|
|
The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
|
|
made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
|
|
certificate signature algorithm consistency this can be used to crash any
|
|
certificate verification operation and exploited in a DoS attack. Any
|
|
application which performs certificate verification is vulnerable including
|
|
OpenSSL clients and servers which enable client authentication.
|
|
(CVE-2015-0286)
|
|
[Stephen Henson]
|
|
|
|
*) Segmentation fault for invalid PSS parameters fix
|
|
|
|
The signature verification routines will crash with a NULL pointer
|
|
dereference if presented with an ASN.1 signature using the RSA PSS
|
|
algorithm and invalid parameters. Since these routines are used to verify
|
|
certificate signature algorithms this can be used to crash any
|
|
certificate verification operation and exploited in a DoS attack. Any
|
|
application which performs certificate verification is vulnerable including
|
|
OpenSSL clients and servers which enable client authentication.
|
|
|
|
This issue was was reported to OpenSSL by Brian Carpenter.
|
|
(CVE-2015-0208)
|
|
[Stephen Henson]
|
|
|
|
*) ASN.1 structure reuse memory corruption fix
|
|
|
|
Reusing a structure in ASN.1 parsing may allow an attacker to cause
|
|
memory corruption via an invalid write. Such reuse is and has been
|
|
strongly discouraged and is believed to be rare.
|
|
|
|
Applications that parse structures containing CHOICE or ANY DEFINED BY
|
|
components may be affected. Certificate parsing (d2i_X509 and related
|
|
functions) are however not affected. OpenSSL clients and servers are
|
|
not affected.
|
|
(CVE-2015-0287)
|
|
[Stephen Henson]
|
|
|
|
*) PKCS7 NULL pointer dereferences fix
|
|
|
|
The PKCS#7 parsing code does not handle missing outer ContentInfo
|
|
correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
|
|
missing content and trigger a NULL pointer dereference on parsing.
|
|
|
|
Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
|
|
otherwise parse PKCS#7 structures from untrusted sources are
|
|
affected. OpenSSL clients and servers are not affected.
|
|
|
|
This issue was reported to OpenSSL by Michal Zalewski (Google).
|
|
(CVE-2015-0289)
|
|
[Emilia Käsper]
|
|
|
|
*) DoS via reachable assert in SSLv2 servers fix
|
|
|
|
A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
|
|
servers that both support SSLv2 and enable export cipher suites by sending
|
|
a specially crafted SSLv2 CLIENT-MASTER-KEY message.
|
|
|
|
This issue was discovered by Sean Burford (Google) and Emilia Käsper
|
|
(OpenSSL development team).
|
|
(CVE-2015-0293)
|
|
[Emilia Käsper]
|
|
|
|
*) Empty CKE with client auth and DHE fix
|
|
|
|
If client auth is used then a server can seg fault in the event of a DHE
|
|
ciphersuite being selected and a zero length ClientKeyExchange message
|
|
being sent by the client. This could be exploited in a DoS attack.
|
|
(CVE-2015-1787)
|
|
[Matt Caswell]
|
|
|
|
*) Handshake with unseeded PRNG fix
|
|
|
|
Under certain conditions an OpenSSL 1.0.2 client can complete a handshake
|
|
with an unseeded PRNG. The conditions are:
|
|
- The client is on a platform where the PRNG has not been seeded
|
|
automatically, and the user has not seeded manually
|
|
- A protocol specific client method version has been used (i.e. not
|
|
SSL_client_methodv23)
|
|
- A ciphersuite is used that does not require additional random data from
|
|
the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA).
|
|
|
|
If the handshake succeeds then the client random that has been used will
|
|
have been generated from a PRNG with insufficient entropy and therefore the
|
|
output may be predictable.
|
|
|
|
For example using the following command with an unseeded openssl will
|
|
succeed on an unpatched platform:
|
|
|
|
openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA
|
|
(CVE-2015-0285)
|
|
[Matt Caswell]
|
|
|
|
*) Use After Free following d2i_ECPrivatekey error fix
|
|
|
|
A malformed EC private key file consumed via the d2i_ECPrivateKey function
|
|
could cause a use after free condition. This, in turn, could cause a double
|
|
free in several private key parsing functions (such as d2i_PrivateKey
|
|
or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
|
|
for applications that receive EC private keys from untrusted
|
|
sources. This scenario is considered rare.
|
|
|
|
This issue was discovered by the BoringSSL project and fixed in their
|
|
commit 517073cd4b.
|
|
(CVE-2015-0209)
|
|
[Matt Caswell]
|
|
|
|
*) X509_to_X509_REQ NULL pointer deref fix
|
|
|
|
The function X509_to_X509_REQ will crash with a NULL pointer dereference if
|
|
the certificate key is invalid. This function is rarely used in practice.
|
|
|
|
This issue was discovered by Brian Carpenter.
|
|
(CVE-2015-0288)
|
|
[Stephen Henson]
|
|
|
|
*) Removed the export ciphers from the DEFAULT ciphers
|
|
[Kurt Roeckx]
|
|
|
|
Changes between 1.0.1l and 1.0.2 [22 Jan 2015]
|
|
|
|
*) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
|
|
ARMv5 through ARMv8, as opposite to "locking" it to single one.
|
|
So far those who have to target multiple plaforms would compromise
|
|
and argue that binary targeting say ARMv5 would still execute on
|
|
ARMv8. "Universal" build resolves this compromise by providing
|
|
near-optimal performance even on newer platforms.
|
|
[Andy Polyakov]
|
|
|
|
*) Accelerated NIST P-256 elliptic curve implementation for x86_64
|
|
(other platforms pending).
|
|
[Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov]
|
|
|
|
*) Add support for the SignedCertificateTimestampList certificate and
|
|
OCSP response extensions from RFC6962.
|
|
[Rob Stradling]
|
|
|
|
*) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
|
|
for corner cases. (Certain input points at infinity could lead to
|
|
bogus results, with non-infinity inputs mapped to infinity too.)
|
|
[Bodo Moeller]
|
|
|
|
*) Initial support for PowerISA 2.0.7, first implemented in POWER8.
|
|
This covers AES, SHA256/512 and GHASH. "Initial" means that most
|
|
common cases are optimized and there still is room for further
|
|
improvements. Vector Permutation AES for Altivec is also added.
|
|
[Andy Polyakov]
|
|
|
|
*) Add support for little-endian ppc64 Linux target.
|
|
[Marcelo Cerri (IBM)]
|
|
|
|
*) Initial support for AMRv8 ISA crypto extensions. This covers AES,
|
|
SHA1, SHA256 and GHASH. "Initial" means that most common cases
|
|
are optimized and there still is room for further improvements.
|
|
Both 32- and 64-bit modes are supported.
|
|
[Andy Polyakov, Ard Biesheuvel (Linaro)]
|
|
|
|
*) Improved ARMv7 NEON support.
|
|
[Andy Polyakov]
|
|
|
|
*) Support for SPARC Architecture 2011 crypto extensions, first
|
|
implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
|
|
SHA256/512, MD5, GHASH and modular exponentiation.
|
|
[Andy Polyakov, David Miller]
|
|
|
|
*) Accelerated modular exponentiation for Intel processors, a.k.a.
|
|
RSAZ.
|
|
[Shay Gueron & Vlad Krasnov (Intel Corp)]
|
|
|
|
*) Support for new and upcoming Intel processors, including AVX2,
|
|
BMI and SHA ISA extensions. This includes additional "stitched"
|
|
implementations, AESNI-SHA256 and GCM, and multi-buffer support
|
|
for TLS encrypt.
|
|
|
|
This work was sponsored by Intel Corp.
|
|
[Andy Polyakov]
|
|
|
|
*) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
|
|
supports both DTLS 1.2 and 1.0 and should use whatever version the peer
|
|
supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
|
|
[Steve Henson]
|
|
|
|
*) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
|
|
this fixes a limiation in previous versions of OpenSSL.
|
|
[Steve Henson]
|
|
|
|
*) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
|
|
MGF1 digest and OAEP label.
|
|
[Steve Henson]
|
|
|
|
*) Add EVP support for key wrapping algorithms, to avoid problems with
|
|
existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
|
|
the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
|
|
algorithms and include tests cases.
|
|
[Steve Henson]
|
|
|
|
*) Add functions to allocate and set the fields of an ECDSA_METHOD
|
|
structure.
|
|
[Douglas E. Engert, Steve Henson]
|
|
|
|
*) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
|
|
difference in days and seconds between two tm or ASN1_TIME structures.
|
|
[Steve Henson]
|
|
|
|
*) Add -rev test option to s_server to just reverse order of characters
|
|
received by client and send back to server. Also prints an abbreviated
|
|
summary of the connection parameters.
|
|
[Steve Henson]
|
|
|
|
*) New option -brief for s_client and s_server to print out a brief summary
|
|
of connection parameters.
|
|
[Steve Henson]
|
|
|
|
*) Add callbacks for arbitrary TLS extensions.
|
|
[Trevor Perrin <trevp@trevp.net> and Ben Laurie]
|
|
|
|
*) New option -crl_download in several openssl utilities to download CRLs
|
|
from CRLDP extension in certificates.
|
|
[Steve Henson]
|
|
|
|
*) New options -CRL and -CRLform for s_client and s_server for CRLs.
|
|
[Steve Henson]
|
|
|
|
*) New function X509_CRL_diff to generate a delta CRL from the difference
|
|
of two full CRLs. Add support to "crl" utility.
|
|
[Steve Henson]
|
|
|
|
*) New functions to set lookup_crls function and to retrieve
|
|
X509_STORE from X509_STORE_CTX.
|
|
[Steve Henson]
|
|
|
|
*) Print out deprecated issuer and subject unique ID fields in
|
|
certificates.
|
|
[Steve Henson]
|
|
|
|
*) Extend OCSP I/O functions so they can be used for simple general purpose
|
|
HTTP as well as OCSP. New wrapper function which can be used to download
|
|
CRLs using the OCSP API.
|
|
[Steve Henson]
|
|
|
|
*) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
|
|
[Steve Henson]
|
|
|
|
*) SSL_CONF* functions. These provide a common framework for application
|
|
configuration using configuration files or command lines.
|
|
[Steve Henson]
|
|
|
|
*) SSL/TLS tracing code. This parses out SSL/TLS records using the
|
|
message callback and prints the results. Needs compile time option
|
|
"enable-ssl-trace". New options to s_client and s_server to enable
|
|
tracing.
|
|
[Steve Henson]
|
|
|
|
*) New ctrl and macro to retrieve supported points extensions.
|
|
Print out extension in s_server and s_client.
|
|
[Steve Henson]
|
|
|
|
*) New functions to retrieve certificate signature and signature
|
|
OID NID.
|
|
[Steve Henson]
|
|
|
|
*) Add functions to retrieve and manipulate the raw cipherlist sent by a
|
|
client to OpenSSL.
|
|
[Steve Henson]
|
|
|
|
*) New Suite B modes for TLS code. These use and enforce the requirements
|
|
of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
|
|
only use Suite B curves. The Suite B modes can be set by using the
|
|
strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
|
|
[Steve Henson]
|
|
|
|
*) New chain verification flags for Suite B levels of security. Check
|
|
algorithms are acceptable when flags are set in X509_verify_cert.
|
|
[Steve Henson]
|
|
|
|
*) Make tls1_check_chain return a set of flags indicating checks passed
|
|
by a certificate chain. Add additional tests to handle client
|
|
certificates: checks for matching certificate type and issuer name
|
|
comparison.
|
|
[Steve Henson]
|
|
|
|
*) If an attempt is made to use a signature algorithm not in the peer
|
|
preference list abort the handshake. If client has no suitable
|
|
signature algorithms in response to a certificate request do not
|
|
use the certificate.
|
|
[Steve Henson]
|
|
|
|
*) If server EC tmp key is not in client preference list abort handshake.
|
|
[Steve Henson]
|
|
|
|
*) Add support for certificate stores in CERT structure. This makes it
|
|
possible to have different stores per SSL structure or one store in
|
|
the parent SSL_CTX. Include distint stores for certificate chain
|
|
verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
|
|
to build and store a certificate chain in CERT structure: returing
|
|
an error if the chain cannot be built: this will allow applications
|
|
to test if a chain is correctly configured.
|
|
|
|
Note: if the CERT based stores are not set then the parent SSL_CTX
|
|
store is used to retain compatibility with existing behaviour.
|
|
|
|
[Steve Henson]
|
|
|
|
*) New function ssl_set_client_disabled to set a ciphersuite disabled
|
|
mask based on the current session, check mask when sending client
|
|
hello and checking the requested ciphersuite.
|
|
[Steve Henson]
|
|
|
|
*) New ctrls to retrieve and set certificate types in a certificate
|
|
request message. Print out received values in s_client. If certificate
|
|
types is not set with custom values set sensible values based on
|
|
supported signature algorithms.
|
|
[Steve Henson]
|
|
|
|
*) Support for distinct client and server supported signature algorithms.
|
|
[Steve Henson]
|
|
|
|
*) Add certificate callback. If set this is called whenever a certificate
|
|
is required by client or server. An application can decide which
|
|
certificate chain to present based on arbitrary criteria: for example
|
|
supported signature algorithms. Add very simple example to s_server.
|
|
This fixes many of the problems and restrictions of the existing client
|
|
certificate callback: for example you can now clear an existing
|
|
certificate and specify the whole chain.
|
|
[Steve Henson]
|
|
|
|
*) Add new "valid_flags" field to CERT_PKEY structure which determines what
|
|
the certificate can be used for (if anything). Set valid_flags field
|
|
in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
|
|
to have similar checks in it.
|
|
|
|
Add new "cert_flags" field to CERT structure and include a "strict mode".
|
|
This enforces some TLS certificate requirements (such as only permitting
|
|
certificate signature algorithms contained in the supported algorithms
|
|
extension) which some implementations ignore: this option should be used
|
|
with caution as it could cause interoperability issues.
|
|
[Steve Henson]
|
|
|
|
*) Update and tidy signature algorithm extension processing. Work out
|
|
shared signature algorithms based on preferences and peer algorithms
|
|
and print them out in s_client and s_server. Abort handshake if no
|
|
shared signature algorithms.
|
|
[Steve Henson]
|
|
|
|
*) Add new functions to allow customised supported signature algorithms
|
|
for SSL and SSL_CTX structures. Add options to s_client and s_server
|
|
to support them.
|
|
[Steve Henson]
|
|
|
|
*) New function SSL_certs_clear() to delete all references to certificates
|
|
from an SSL structure. Before this once a certificate had been added
|
|
it couldn't be removed.
|
|
[Steve Henson]
|
|
|
|
*) Integrate hostname, email address and IP address checking with certificate
|
|
verification. New verify options supporting checking in opensl utility.
|
|
[Steve Henson]
|
|
|
|
*) Fixes and wildcard matching support to hostname and email checking
|
|
functions. Add manual page.
|
|
[Florian Weimer (Red Hat Product Security Team)]
|
|
|
|
*) New functions to check a hostname email or IP address against a
|
|
certificate. Add options x509 utility to print results of checks against
|
|
a certificate.
|
|
[Steve Henson]
|
|
|
|
*) Fix OCSP checking.
|
|
[Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
|
|
|
|
*) Initial experimental support for explicitly trusted non-root CAs.
|
|
OpenSSL still tries to build a complete chain to a root but if an
|
|
intermediate CA has a trust setting included that is used. The first
|
|
setting is used: whether to trust (e.g., -addtrust option to the x509
|
|
utility) or reject.
|
|
[Steve Henson]
|
|
|
|
*) Add -trusted_first option which attempts to find certificates in the
|
|
trusted store even if an untrusted chain is also supplied.
|
|
[Steve Henson]
|
|
|
|
*) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
|
|
platform support for Linux and Android.
|
|
[Andy Polyakov]
|
|
|
|
*) Support for linux-x32, ILP32 environment in x86_64 framework.
|
|
[Andy Polyakov]
|
|
|
|
*) Experimental multi-implementation support for FIPS capable OpenSSL.
|
|
When in FIPS mode the approved implementations are used as normal,
|
|
when not in FIPS mode the internal unapproved versions are used instead.
|
|
This means that the FIPS capable OpenSSL isn't forced to use the
|
|
(often lower performance) FIPS implementations outside FIPS mode.
|
|
[Steve Henson]
|
|
|
|
*) Transparently support X9.42 DH parameters when calling
|
|
PEM_read_bio_DHparameters. This means existing applications can handle
|
|
the new parameter format automatically.
|
|
[Steve Henson]
|
|
|
|
*) Initial experimental support for X9.42 DH parameter format: mainly
|
|
to support use of 'q' parameter for RFC5114 parameters.
|
|
[Steve Henson]
|
|
|
|
*) Add DH parameters from RFC5114 including test data to dhtest.
|
|
[Steve Henson]
|
|
|
|
*) Support for automatic EC temporary key parameter selection. If enabled
|
|
the most preferred EC parameters are automatically used instead of
|
|
hardcoded fixed parameters. Now a server just has to call:
|
|
SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
|
|
support ECDH and use the most appropriate parameters.
|
|
[Steve Henson]
|
|
|
|
*) Enhance and tidy EC curve and point format TLS extension code. Use
|
|
static structures instead of allocation if default values are used.
|
|
New ctrls to set curves we wish to support and to retrieve shared curves.
|
|
Print out shared curves in s_server. New options to s_server and s_client
|
|
to set list of supported curves.
|
|
[Steve Henson]
|
|
|
|
*) New ctrls to retrieve supported signature algorithms and
|
|
supported curve values as an array of NIDs. Extend openssl utility
|
|
to print out received values.
|
|
[Steve Henson]
|
|
|
|
*) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
|
|
between NIDs and the more common NIST names such as "P-256". Enhance
|
|
ecparam utility and ECC method to recognise the NIST names for curves.
|
|
[Steve Henson]
|
|
|
|
*) Enhance SSL/TLS certificate chain handling to support different
|
|
chains for each certificate instead of one chain in the parent SSL_CTX.
|
|
[Steve Henson]
|
|
|
|
*) Support for fixed DH ciphersuite client authentication: where both
|
|
server and client use DH certificates with common parameters.
|
|
[Steve Henson]
|
|
|
|
*) Support for fixed DH ciphersuites: those requiring DH server
|
|
certificates.
|
|
[Steve Henson]
|
|
|
|
*) New function i2d_re_X509_tbs for re-encoding the TBS portion of
|
|
the certificate.
|
|
Note: Related 1.0.2-beta specific macros X509_get_cert_info,
|
|
X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
|
|
X509_CINF_get_signature were reverted post internal team review.
|
|
|
|
Changes between 1.0.1k and 1.0.1l [15 Jan 2015]
|
|
|
|
*) Build fixes for the Windows and OpenVMS platforms
|
|
[Matt Caswell and Richard Levitte]
|
|
|
|
Changes between 1.0.1j and 1.0.1k [8 Jan 2015]
|
|
|
|
*) Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
|
|
message can cause a segmentation fault in OpenSSL due to a NULL pointer
|
|
dereference. This could lead to a Denial Of Service attack. Thanks to
|
|
Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
|
|
(CVE-2014-3571)
|
|
[Steve Henson]
|
|
|
|
*) Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
|
|
dtls1_buffer_record function under certain conditions. In particular this
|
|
could occur if an attacker sent repeated DTLS records with the same
|
|
sequence number but for the next epoch. The memory leak could be exploited
|
|
by an attacker in a Denial of Service attack through memory exhaustion.
|
|
Thanks to Chris Mueller for reporting this issue.
|
|
(CVE-2015-0206)
|
|
[Matt Caswell]
|
|
|
|
*) Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
|
|
built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
|
|
method would be set to NULL which could later result in a NULL pointer
|
|
dereference. Thanks to Frank Schmirler for reporting this issue.
|
|
(CVE-2014-3569)
|
|
[Kurt Roeckx]
|
|
|
|
*) Abort handshake if server key exchange message is omitted for ephemeral
|
|
ECDH ciphersuites.
|
|
|
|
Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
|
|
reporting this issue.
|
|
(CVE-2014-3572)
|
|
[Steve Henson]
|
|
|
|
*) Remove non-export ephemeral RSA code on client and server. This code
|
|
violated the TLS standard by allowing the use of temporary RSA keys in
|
|
non-export ciphersuites and could be used by a server to effectively
|
|
downgrade the RSA key length used to a value smaller than the server
|
|
certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
|
|
INRIA or reporting this issue.
|
|
(CVE-2015-0204)
|
|
[Steve Henson]
|
|
|
|
*) Fixed issue where DH client certificates are accepted without verification.
|
|
An OpenSSL server will accept a DH certificate for client authentication
|
|
without the certificate verify message. This effectively allows a client to
|
|
authenticate without the use of a private key. This only affects servers
|
|
which trust a client certificate authority which issues certificates
|
|
containing DH keys: these are extremely rare and hardly ever encountered.
|
|
Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
|
|
this issue.
|
|
(CVE-2015-0205)
|
|
[Steve Henson]
|
|
|
|
*) Ensure that the session ID context of an SSL is updated when its
|
|
SSL_CTX is updated via SSL_set_SSL_CTX.
|
|
|
|
The session ID context is typically set from the parent SSL_CTX,
|
|
and can vary with the CTX.
|
|
[Adam Langley]
|
|
|
|
*) Fix various certificate fingerprint issues.
|
|
|
|
By using non-DER or invalid encodings outside the signed portion of a
|
|
certificate the fingerprint can be changed without breaking the signature.
|
|
Although no details of the signed portion of the certificate can be changed
|
|
this can cause problems with some applications: e.g. those using the
|
|
certificate fingerprint for blacklists.
|
|
|
|
1. Reject signatures with non zero unused bits.
|
|
|
|
If the BIT STRING containing the signature has non zero unused bits reject
|
|
the signature. All current signature algorithms require zero unused bits.
|
|
|
|
2. Check certificate algorithm consistency.
|
|
|
|
Check the AlgorithmIdentifier inside TBS matches the one in the
|
|
certificate signature. NB: this will result in signature failure
|
|
errors for some broken certificates.
|
|
|
|
Thanks to Konrad Kraszewski from Google for reporting this issue.
|
|
|
|
3. Check DSA/ECDSA signatures use DER.
|
|
|
|
Reencode DSA/ECDSA signatures and compare with the original received
|
|
signature. Return an error if there is a mismatch.
|
|
|
|
This will reject various cases including garbage after signature
|
|
(thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
|
|
program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
|
|
(negative or with leading zeroes).
|
|
|
|
Further analysis was conducted and fixes were developed by Stephen Henson
|
|
of the OpenSSL core team.
|
|
|
|
(CVE-2014-8275)
|
|
[Steve Henson]
|
|
|
|
*) Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
|
|
results on some platforms, including x86_64. This bug occurs at random
|
|
with a very low probability, and is not known to be exploitable in any
|
|
way, though its exact impact is difficult to determine. Thanks to Pieter
|
|
Wuille (Blockstream) who reported this issue and also suggested an initial
|
|
fix. Further analysis was conducted by the OpenSSL development team and
|
|
Adam Langley of Google. The final fix was developed by Andy Polyakov of
|
|
the OpenSSL core team.
|
|
(CVE-2014-3570)
|
|
[Andy Polyakov]
|
|
|
|
*) Do not resume sessions on the server if the negotiated protocol
|
|
version does not match the session's version. Resuming with a different
|
|
version, while not strictly forbidden by the RFC, is of questionable
|
|
sanity and breaks all known clients.
|
|
[David Benjamin, Emilia Käsper]
|
|
|
|
*) Tighten handling of the ChangeCipherSpec (CCS) message: reject
|
|
early CCS messages during renegotiation. (Note that because
|
|
renegotiation is encrypted, this early CCS was not exploitable.)
|
|
[Emilia Käsper]
|
|
|
|
*) Tighten client-side session ticket handling during renegotiation:
|
|
ensure that the client only accepts a session ticket if the server sends
|
|
the extension anew in the ServerHello. Previously, a TLS client would
|
|
reuse the old extension state and thus accept a session ticket if one was
|
|
announced in the initial ServerHello.
|
|
|
|
Similarly, ensure that the client requires a session ticket if one
|
|
was advertised in the ServerHello. Previously, a TLS client would
|
|
ignore a missing NewSessionTicket message.
|
|
[Emilia Käsper]
|
|
|
|
Changes between 1.0.1i and 1.0.1j [15 Oct 2014]
|
|
|
|
*) SRTP Memory Leak.
|
|
|
|
A flaw in the DTLS SRTP extension parsing code allows an attacker, who
|
|
sends a carefully crafted handshake message, to cause OpenSSL to fail
|
|
to free up to 64k of memory causing a memory leak. This could be
|
|
exploited in a Denial Of Service attack. This issue affects OpenSSL
|
|
1.0.1 server implementations for both SSL/TLS and DTLS regardless of
|
|
whether SRTP is used or configured. Implementations of OpenSSL that
|
|
have been compiled with OPENSSL_NO_SRTP defined are not affected.
|
|
|
|
The fix was developed by the OpenSSL team.
|
|
(CVE-2014-3513)
|
|
[OpenSSL team]
|
|
|
|
*) Session Ticket Memory Leak.
|
|
|
|
When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
|
|
integrity of that ticket is first verified. In the event of a session
|
|
ticket integrity check failing, OpenSSL will fail to free memory
|
|
causing a memory leak. By sending a large number of invalid session
|
|
tickets an attacker could exploit this issue in a Denial Of Service
|
|
attack.
|
|
(CVE-2014-3567)
|
|
[Steve Henson]
|
|
|
|
*) Build option no-ssl3 is incomplete.
|
|
|
|
When OpenSSL is configured with "no-ssl3" as a build option, servers
|
|
could accept and complete a SSL 3.0 handshake, and clients could be
|
|
configured to send them.
|
|
(CVE-2014-3568)
|
|
[Akamai and the OpenSSL team]
|
|
|
|
*) Add support for TLS_FALLBACK_SCSV.
|
|
Client applications doing fallback retries should call
|
|
SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
|
|
(CVE-2014-3566)
|
|
[Adam Langley, Bodo Moeller]
|
|
|
|
*) Add additional DigestInfo checks.
|
|
|
|
Reencode DigestInto in DER and check against the original when
|
|
verifying RSA signature: this will reject any improperly encoded
|
|
DigestInfo structures.
|
|
|
|
Note: this is a precautionary measure and no attacks are currently known.
|
|
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
|
|
|
|
*) Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
|
|
SRP code can be overrun an internal buffer. Add sanity check that
|
|
g, A, B < N to SRP code.
|
|
|
|
Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
|
|
Group for discovering this issue.
|
|
(CVE-2014-3512)
|
|
[Steve Henson]
|
|
|
|
*) A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
|
|
TLS 1.0 instead of higher protocol versions when the ClientHello message
|
|
is badly fragmented. This allows a man-in-the-middle attacker to force a
|
|
downgrade to TLS 1.0 even if both the server and the client support a
|
|
higher protocol version, by modifying the client's TLS records.
|
|
|
|
Thanks to David Benjamin and Adam Langley (Google) for discovering and
|
|
researching this issue.
|
|
(CVE-2014-3511)
|
|
[David Benjamin]
|
|
|
|
*) OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
|
|
to a denial of service attack. A malicious server can crash the client
|
|
with a null pointer dereference (read) by specifying an anonymous (EC)DH
|
|
ciphersuite and sending carefully crafted handshake messages.
|
|
|
|
Thanks to Felix Gröbert (Google) for discovering and researching this
|
|
issue.
|
|
(CVE-2014-3510)
|
|
[Emilia Käsper]
|
|
|
|
*) By sending carefully crafted DTLS packets an attacker could cause openssl
|
|
to leak memory. This can be exploited through a Denial of Service attack.
|
|
Thanks to Adam Langley for discovering and researching this issue.
|
|
(CVE-2014-3507)
|
|
[Adam Langley]
|
|
|
|
*) An attacker can force openssl to consume large amounts of memory whilst
|
|
processing DTLS handshake messages. This can be exploited through a
|
|
Denial of Service attack.
|
|
Thanks to Adam Langley for discovering and researching this issue.
|
|
(CVE-2014-3506)
|
|
[Adam Langley]
|
|
|
|
*) An attacker can force an error condition which causes openssl to crash
|
|
whilst processing DTLS packets due to memory being freed twice. This
|
|
can be exploited through a Denial of Service attack.
|
|
Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
|
|
this issue.
|
|
(CVE-2014-3505)
|
|
[Adam Langley]
|
|
|
|
*) If a multithreaded client connects to a malicious server using a resumed
|
|
session and the server sends an ec point format extension it could write
|
|
up to 255 bytes to freed memory.
|
|
|
|
Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
|
|
issue.
|
|
(CVE-2014-3509)
|
|
[Gabor Tyukasz]
|
|
|
|
*) A malicious server can crash an OpenSSL client with a null pointer
|
|
dereference (read) by specifying an SRP ciphersuite even though it was not
|
|
properly negotiated with the client. This can be exploited through a
|
|
Denial of Service attack.
|
|
|
|
Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for
|
|
discovering and researching this issue.
|
|
(CVE-2014-5139)
|
|
[Steve Henson]
|
|
|
|
*) A flaw in OBJ_obj2txt may cause pretty printing functions such as
|
|
X509_name_oneline, X509_name_print_ex et al. to leak some information
|
|
from the stack. Applications may be affected if they echo pretty printing
|
|
output to the attacker.
|
|
|
|
Thanks to Ivan Fratric (Google) for discovering this issue.
|
|
(CVE-2014-3508)
|
|
[Emilia Käsper, and Steve Henson]
|
|
|
|
*) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
|
|
for corner cases. (Certain input points at infinity could lead to
|
|
bogus results, with non-infinity inputs mapped to infinity too.)
|
|
[Bodo Moeller]
|
|
|
|
Changes between 1.0.1g and 1.0.1h [5 Jun 2014]
|
|
|
|
*) Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
|
|
handshake can force the use of weak keying material in OpenSSL
|
|
SSL/TLS clients and servers.
|
|
|
|
Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
|
|
researching this issue. (CVE-2014-0224)
|
|
[KIKUCHI Masashi, Steve Henson]
|
|
|
|
*) Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
|
|
OpenSSL DTLS client the code can be made to recurse eventually crashing
|
|
in a DoS attack.
|
|
|
|
Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
|
|
(CVE-2014-0221)
|
|
[Imre Rad, Steve Henson]
|
|
|
|
*) Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
|
|
be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
|
|
client or server. This is potentially exploitable to run arbitrary
|
|
code on a vulnerable client or server.
|
|
|
|
Thanks to Jüri Aedla for reporting this issue. (CVE-2014-0195)
|
|
[Jüri Aedla, Steve Henson]
|
|
|
|
*) Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
|
|
are subject to a denial of service attack.
|
|
|
|
Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
|
|
this issue. (CVE-2014-3470)
|
|
[Felix Gröbert, Ivan Fratric, Steve Henson]
|
|
|
|
*) Harmonize version and its documentation. -f flag is used to display
|
|
compilation flags.
|
|
[mancha <mancha1@zoho.com>]
|
|
|
|
*) Fix eckey_priv_encode so it immediately returns an error upon a failure
|
|
in i2d_ECPrivateKey.
|
|
[mancha <mancha1@zoho.com>]
|
|
|
|
*) Fix some double frees. These are not thought to be exploitable.
|
|
[mancha <mancha1@zoho.com>]
|
|
|
|
Changes between 1.0.1f and 1.0.1g [7 Apr 2014]
|
|
|
|
*) A missing bounds check in the handling of the TLS heartbeat extension
|
|
can be used to reveal up to 64k of memory to a connected client or
|
|
server.
|
|
|
|
Thanks for Neel Mehta of Google Security for discovering this bug and to
|
|
Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
|
|
preparing the fix (CVE-2014-0160)
|
|
[Adam Langley, Bodo Moeller]
|
|
|
|
*) Fix for the attack described in the paper "Recovering OpenSSL
|
|
ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
|
|
by Yuval Yarom and Naomi Benger. Details can be obtained from:
|
|
http://eprint.iacr.org/2014/140
|
|
|
|
Thanks to Yuval Yarom and Naomi Benger for discovering this
|
|
flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
|
|
[Yuval Yarom and Naomi Benger]
|
|
|
|
*) TLS pad extension: draft-agl-tls-padding-03
|
|
|
|
Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the
|
|
TLS client Hello record length value would otherwise be > 255 and
|
|
less that 512 pad with a dummy extension containing zeroes so it
|
|
is at least 512 bytes long.
|
|
|
|
[Adam Langley, Steve Henson]
|
|
|
|
Changes between 1.0.1e and 1.0.1f [6 Jan 2014]
|
|
|
|
*) Fix for TLS record tampering bug. A carefully crafted invalid
|
|
handshake could crash OpenSSL with a NULL pointer exception.
|
|
Thanks to Anton Johansson for reporting this issues.
|
|
(CVE-2013-4353)
|
|
|
|
*) Keep original DTLS digest and encryption contexts in retransmission
|
|
structures so we can use the previous session parameters if they need
|
|
to be resent. (CVE-2013-6450)
|
|
[Steve Henson]
|
|
|
|
*) Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
|
|
avoids preferring ECDHE-ECDSA ciphers when the client appears to be
|
|
Safari on OS X. Safari on OS X 10.8..10.8.3 advertises support for
|
|
several ECDHE-ECDSA ciphers, but fails to negotiate them. The bug
|
|
is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
|
|
10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
|
|
[Rob Stradling, Adam Langley]
|
|
|
|
Changes between 1.0.1d and 1.0.1e [11 Feb 2013]
|
|
|
|
*) Correct fix for CVE-2013-0169. The original didn't work on AES-NI
|
|
supporting platforms or when small records were transferred.
|
|
[Andy Polyakov, Steve Henson]
|
|
|
|
Changes between 1.0.1c and 1.0.1d [5 Feb 2013]
|
|
|
|
*) Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
|
|
|
|
This addresses the flaw in CBC record processing discovered by
|
|
Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
|
|
at: http://www.isg.rhul.ac.uk/tls/
|
|
|
|
Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
|
|
Security Group at Royal Holloway, University of London
|
|
(www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
|
|
Emilia Käsper for the initial patch.
|
|
(CVE-2013-0169)
|
|
[Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson]
|
|
|
|
*) Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode
|
|
ciphersuites which can be exploited in a denial of service attack.
|
|
Thanks go to and to Adam Langley <agl@chromium.org> for discovering
|
|
and detecting this bug and to Wolfgang Ettlinger
|
|
<wolfgang.ettlinger@gmail.com> for independently discovering this issue.
|
|
(CVE-2012-2686)
|
|
[Adam Langley]
|
|
|
|
*) Return an error when checking OCSP signatures when key is NULL.
|
|
This fixes a DoS attack. (CVE-2013-0166)
|
|
[Steve Henson]
|
|
|
|
*) Make openssl verify return errors.
|
|
[Chris Palmer <palmer@google.com> and Ben Laurie]
|
|
|
|
*) Call OCSP Stapling callback after ciphersuite has been chosen, so
|
|
the right response is stapled. Also change SSL_get_certificate()
|
|
so it returns the certificate actually sent.
|
|
See http://rt.openssl.org/Ticket/Display.html?id=2836.
|
|
[Rob Stradling <rob.stradling@comodo.com>]
|
|
|
|
*) Fix possible deadlock when decoding public keys.
|
|
[Steve Henson]
|
|
|
|
*) Don't use TLS 1.0 record version number in initial client hello
|
|
if renegotiating.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.1b and 1.0.1c [10 May 2012]
|
|
|
|
*) Sanity check record length before skipping explicit IV in TLS
|
|
1.2, 1.1 and DTLS to fix DoS attack.
|
|
|
|
Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
|
|
fuzzing as a service testing platform.
|
|
(CVE-2012-2333)
|
|
[Steve Henson]
|
|
|
|
*) Initialise tkeylen properly when encrypting CMS messages.
|
|
Thanks to Solar Designer of Openwall for reporting this issue.
|
|
[Steve Henson]
|
|
|
|
*) In FIPS mode don't try to use composite ciphers as they are not
|
|
approved.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
|
|
|
|
*) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
|
|
1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
|
|
mean any application compiled against OpenSSL 1.0.0 headers setting
|
|
SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng
|
|
TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
|
|
0x10000000L Any application which was previously compiled against
|
|
OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
|
|
will need to be recompiled as a result. Letting be results in
|
|
inability to disable specifically TLS 1.1 and in client context,
|
|
in unlike event, limit maximum offered version to TLS 1.0 [see below].
|
|
[Steve Henson]
|
|
|
|
*) In order to ensure interoperabilty SSL_OP_NO_protocolX does not
|
|
disable just protocol X, but all protocols above X *if* there are
|
|
protocols *below* X still enabled. In more practical terms it means
|
|
that if application wants to disable TLS1.0 in favor of TLS1.1 and
|
|
above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass
|
|
SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to
|
|
client side.
|
|
[Andy Polyakov]
|
|
|
|
Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
|
|
|
|
*) Check for potentially exploitable overflows in asn1_d2i_read_bio
|
|
BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
|
|
in CRYPTO_realloc_clean.
|
|
|
|
Thanks to Tavis Ormandy, Google Security Team, for discovering this
|
|
issue and to Adam Langley <agl@chromium.org> for fixing it.
|
|
(CVE-2012-2110)
|
|
[Adam Langley (Google), Tavis Ormandy, Google Security Team]
|
|
|
|
*) Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
|
|
[Adam Langley]
|
|
|
|
*) Workarounds for some broken servers that "hang" if a client hello
|
|
record length exceeds 255 bytes.
|
|
|
|
1. Do not use record version number > TLS 1.0 in initial client
|
|
hello: some (but not all) hanging servers will now work.
|
|
2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
|
|
the number of ciphers sent in the client hello. This should be
|
|
set to an even number, such as 50, for example by passing:
|
|
-DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
|
|
Most broken servers should now work.
|
|
3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
|
|
TLS 1.2 client support entirely.
|
|
[Steve Henson]
|
|
|
|
*) Fix SEGV in Vector Permutation AES module observed in OpenSSH.
|
|
[Andy Polyakov]
|
|
|
|
Changes between 1.0.0h and 1.0.1 [14 Mar 2012]
|
|
|
|
*) Add compatibility with old MDC2 signatures which use an ASN1 OCTET
|
|
STRING form instead of a DigestInfo.
|
|
[Steve Henson]
|
|
|
|
*) The format used for MDC2 RSA signatures is inconsistent between EVP
|
|
and the RSA_sign/RSA_verify functions. This was made more apparent when
|
|
OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
|
|
those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect
|
|
the correct format in RSA_verify so both forms transparently work.
|
|
[Steve Henson]
|
|
|
|
*) Some servers which support TLS 1.0 can choke if we initially indicate
|
|
support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
|
|
encrypted premaster secret. As a workaround use the maximum permitted
|
|
client version in client hello, this should keep such servers happy
|
|
and still work with previous versions of OpenSSL.
|
|
[Steve Henson]
|
|
|
|
*) Add support for TLS/DTLS heartbeats.
|
|
[Robin Seggelmann <seggelmann@fh-muenster.de>]
|
|
|
|
*) Add support for SCTP.
|
|
[Robin Seggelmann <seggelmann@fh-muenster.de>]
|
|
|
|
*) Improved PRNG seeding for VOS.
|
|
[Paul Green <Paul.Green@stratus.com>]
|
|
|
|
*) Extensive assembler packs updates, most notably:
|
|
|
|
- x86[_64]: AES-NI, PCLMULQDQ, RDRAND support;
|
|
- x86[_64]: SSSE3 support (SHA1, vector-permutation AES);
|
|
- x86_64: bit-sliced AES implementation;
|
|
- ARM: NEON support, contemporary platforms optimizations;
|
|
- s390x: z196 support;
|
|
- *: GHASH and GF(2^m) multiplication implementations;
|
|
|
|
[Andy Polyakov]
|
|
|
|
*) Make TLS-SRP code conformant with RFC 5054 API cleanup
|
|
(removal of unnecessary code)
|
|
[Peter Sylvester <peter.sylvester@edelweb.fr>]
|
|
|
|
*) Add TLS key material exporter from RFC 5705.
|
|
[Eric Rescorla]
|
|
|
|
*) Add DTLS-SRTP negotiation from RFC 5764.
|
|
[Eric Rescorla]
|
|
|
|
*) Add Next Protocol Negotiation,
|
|
http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00. Can be
|
|
disabled with a no-npn flag to config or Configure. Code donated
|
|
by Google.
|
|
[Adam Langley <agl@google.com> and Ben Laurie]
|
|
|
|
*) Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
|
|
NIST-P256, NIST-P521, with constant-time single point multiplication on
|
|
typical inputs. Compiler support for the nonstandard type __uint128_t is
|
|
required to use this (present in gcc 4.4 and later, for 64-bit builds).
|
|
Code made available under Apache License version 2.0.
|
|
|
|
Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
|
|
line to include this in your build of OpenSSL, and run "make depend" (or
|
|
"make update"). This enables the following EC_METHODs:
|
|
|
|
EC_GFp_nistp224_method()
|
|
EC_GFp_nistp256_method()
|
|
EC_GFp_nistp521_method()
|
|
|
|
EC_GROUP_new_by_curve_name() will automatically use these (while
|
|
EC_GROUP_new_curve_GFp() currently prefers the more flexible
|
|
implementations).
|
|
[Emilia Käsper, Adam Langley, Bodo Moeller (Google)]
|
|
|
|
*) Use type ossl_ssize_t instad of ssize_t which isn't available on
|
|
all platforms. Move ssize_t definition from e_os.h to the public
|
|
header file e_os2.h as it now appears in public header file cms.h
|
|
[Steve Henson]
|
|
|
|
*) New -sigopt option to the ca, req and x509 utilities. Additional
|
|
signature parameters can be passed using this option and in
|
|
particular PSS.
|
|
[Steve Henson]
|
|
|
|
*) Add RSA PSS signing function. This will generate and set the
|
|
appropriate AlgorithmIdentifiers for PSS based on those in the
|
|
corresponding EVP_MD_CTX structure. No application support yet.
|
|
[Steve Henson]
|
|
|
|
*) Support for companion algorithm specific ASN1 signing routines.
|
|
New function ASN1_item_sign_ctx() signs a pre-initialised
|
|
EVP_MD_CTX structure and sets AlgorithmIdentifiers based on
|
|
the appropriate parameters.
|
|
[Steve Henson]
|
|
|
|
*) Add new algorithm specific ASN1 verification initialisation function
|
|
to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1
|
|
handling will be the same no matter what EVP_PKEY_METHOD is used.
|
|
Add a PSS handler to support verification of PSS signatures: checked
|
|
against a number of sample certificates.
|
|
[Steve Henson]
|
|
|
|
*) Add signature printing for PSS. Add PSS OIDs.
|
|
[Steve Henson, Martin Kaiser <lists@kaiser.cx>]
|
|
|
|
*) Add algorithm specific signature printing. An individual ASN1 method
|
|
can now print out signatures instead of the standard hex dump.
|
|
|
|
More complex signatures (e.g. PSS) can print out more meaningful
|
|
information. Include DSA version that prints out the signature
|
|
parameters r, s.
|
|
[Steve Henson]
|
|
|
|
*) Password based recipient info support for CMS library: implementing
|
|
RFC3211.
|
|
[Steve Henson]
|
|
|
|
*) Split password based encryption into PBES2 and PBKDF2 functions. This
|
|
neatly separates the code into cipher and PBE sections and is required
|
|
for some algorithms that split PBES2 into separate pieces (such as
|
|
password based CMS).
|
|
[Steve Henson]
|
|
|
|
*) Session-handling fixes:
|
|
- Fix handling of connections that are resuming with a session ID,
|
|
but also support Session Tickets.
|
|
- Fix a bug that suppressed issuing of a new ticket if the client
|
|
presented a ticket with an expired session.
|
|
- Try to set the ticket lifetime hint to something reasonable.
|
|
- Make tickets shorter by excluding irrelevant information.
|
|
- On the client side, don't ignore renewed tickets.
|
|
[Adam Langley, Bodo Moeller (Google)]
|
|
|
|
*) Fix PSK session representation.
|
|
[Bodo Moeller]
|
|
|
|
*) Add RC4-MD5 and AESNI-SHA1 "stitched" implementations.
|
|
|
|
This work was sponsored by Intel.
|
|
[Andy Polyakov]
|
|
|
|
*) Add GCM support to TLS library. Some custom code is needed to split
|
|
the IV between the fixed (from PRF) and explicit (from TLS record)
|
|
portions. This adds all GCM ciphersuites supported by RFC5288 and
|
|
RFC5289. Generalise some AES* cipherstrings to include GCM and
|
|
add a special AESGCM string for GCM only.
|
|
[Steve Henson]
|
|
|
|
*) Expand range of ctrls for AES GCM. Permit setting invocation
|
|
field on decrypt and retrieval of invocation field only on encrypt.
|
|
[Steve Henson]
|
|
|
|
*) Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support.
|
|
As required by RFC5289 these ciphersuites cannot be used if for
|
|
versions of TLS earlier than 1.2.
|
|
[Steve Henson]
|
|
|
|
*) For FIPS capable OpenSSL interpret a NULL default public key method
|
|
as unset and return the appropriate default but do *not* set the default.
|
|
This means we can return the appropriate method in applications that
|
|
switch between FIPS and non-FIPS modes.
|
|
[Steve Henson]
|
|
|
|
*) Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an
|
|
ENGINE is used then we cannot handle that in the FIPS module so we
|
|
keep original code iff non-FIPS operations are allowed.
|
|
[Steve Henson]
|
|
|
|
*) Add -attime option to openssl utilities.
|
|
[Peter Eckersley <pde@eff.org>, Ben Laurie and Steve Henson]
|
|
|
|
*) Redirect DSA and DH operations to FIPS module in FIPS mode.
|
|
[Steve Henson]
|
|
|
|
*) Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use
|
|
FIPS EC methods unconditionally for now.
|
|
[Steve Henson]
|
|
|
|
*) New build option no-ec2m to disable characteristic 2 code.
|
|
[Steve Henson]
|
|
|
|
*) Backport libcrypto audit of return value checking from 1.1.0-dev; not
|
|
all cases can be covered as some introduce binary incompatibilities.
|
|
[Steve Henson]
|
|
|
|
*) Redirect RSA operations to FIPS module including keygen,
|
|
encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods.
|
|
[Steve Henson]
|
|
|
|
*) Add similar low level API blocking to ciphers.
|
|
[Steve Henson]
|
|
|
|
*) Low level digest APIs are not approved in FIPS mode: any attempt
|
|
to use these will cause a fatal error. Applications that *really* want
|
|
to use them can use the private_* version instead.
|
|
[Steve Henson]
|
|
|
|
*) Redirect cipher operations to FIPS module for FIPS builds.
|
|
[Steve Henson]
|
|
|
|
*) Redirect digest operations to FIPS module for FIPS builds.
|
|
[Steve Henson]
|
|
|
|
*) Update build system to add "fips" flag which will link in fipscanister.o
|
|
for static and shared library builds embedding a signature if needed.
|
|
[Steve Henson]
|
|
|
|
*) Output TLS supported curves in preference order instead of numerical
|
|
order. This is currently hardcoded for the highest order curves first.
|
|
This should be configurable so applications can judge speed vs strength.
|
|
[Steve Henson]
|
|
|
|
*) Add TLS v1.2 server support for client authentication.
|
|
[Steve Henson]
|
|
|
|
*) Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers
|
|
and enable MD5.
|
|
[Steve Henson]
|
|
|
|
*) Functions FIPS_mode_set() and FIPS_mode() which call the underlying
|
|
FIPS modules versions.
|
|
[Steve Henson]
|
|
|
|
*) Add TLS v1.2 client side support for client authentication. Keep cache
|
|
of handshake records longer as we don't know the hash algorithm to use
|
|
until after the certificate request message is received.
|
|
[Steve Henson]
|
|
|
|
*) Initial TLS v1.2 client support. Add a default signature algorithms
|
|
extension including all the algorithms we support. Parse new signature
|
|
format in client key exchange. Relax some ECC signing restrictions for
|
|
TLS v1.2 as indicated in RFC5246.
|
|
[Steve Henson]
|
|
|
|
*) Add server support for TLS v1.2 signature algorithms extension. Switch
|
|
to new signature format when needed using client digest preference.
|
|
All server ciphersuites should now work correctly in TLS v1.2. No client
|
|
support yet and no support for client certificates.
|
|
[Steve Henson]
|
|
|
|
*) Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch
|
|
to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based
|
|
ciphersuites. At present only RSA key exchange ciphersuites work with
|
|
TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete
|
|
SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods
|
|
and version checking.
|
|
[Steve Henson]
|
|
|
|
*) New option OPENSSL_NO_SSL_INTERN. If an application can be compiled
|
|
with this defined it will not be affected by any changes to ssl internal
|
|
structures. Add several utility functions to allow openssl application
|
|
to work with OPENSSL_NO_SSL_INTERN defined.
|
|
[Steve Henson]
|
|
|
|
*) Add SRP support.
|
|
[Tom Wu <tjw@cs.stanford.edu> and Ben Laurie]
|
|
|
|
*) Add functions to copy EVP_PKEY_METHOD and retrieve flags and id.
|
|
[Steve Henson]
|
|
|
|
*) Permit abbreviated handshakes when renegotiating using the function
|
|
SSL_renegotiate_abbreviated().
|
|
[Robin Seggelmann <seggelmann@fh-muenster.de>]
|
|
|
|
*) Add call to ENGINE_register_all_complete() to
|
|
ENGINE_load_builtin_engines(), so some implementations get used
|
|
automatically instead of needing explicit application support.
|
|
[Steve Henson]
|
|
|
|
*) Add support for TLS key exporter as described in RFC5705.
|
|
[Robin Seggelmann <seggelmann@fh-muenster.de>, Steve Henson]
|
|
|
|
*) Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only
|
|
a few changes are required:
|
|
|
|
Add SSL_OP_NO_TLSv1_1 flag.
|
|
Add TLSv1_1 methods.
|
|
Update version checking logic to handle version 1.1.
|
|
Add explicit IV handling (ported from DTLS code).
|
|
Add command line options to s_client/s_server.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.0g and 1.0.0h [12 Mar 2012]
|
|
|
|
*) Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness
|
|
in CMS and PKCS7 code. When RSA decryption fails use a random key for
|
|
content decryption and always return the same error. Note: this attack
|
|
needs on average 2^20 messages so it only affects automated senders. The
|
|
old behaviour can be reenabled in the CMS code by setting the
|
|
CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where
|
|
an MMA defence is not necessary.
|
|
Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for discovering
|
|
this issue. (CVE-2012-0884)
|
|
[Steve Henson]
|
|
|
|
*) Fix CVE-2011-4619: make sure we really are receiving a
|
|
client hello before rejecting multiple SGC restarts. Thanks to
|
|
Ivan Nestlerode <inestlerode@us.ibm.com> for discovering this bug.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.0f and 1.0.0g [18 Jan 2012]
|
|
|
|
*) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
|
|
Thanks to Antonio Martin, Enterprise Secure Access Research and
|
|
Development, Cisco Systems, Inc. for discovering this bug and
|
|
preparing a fix. (CVE-2012-0050)
|
|
[Antonio Martin]
|
|
|
|
Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
|
|
|
|
*) Nadhem Alfardan and Kenny Paterson have discovered an extension
|
|
of the Vaudenay padding oracle attack on CBC mode encryption
|
|
which enables an efficient plaintext recovery attack against
|
|
the OpenSSL implementation of DTLS. Their attack exploits timing
|
|
differences arising during decryption processing. A research
|
|
paper describing this attack can be found at:
|
|
http://www.isg.rhul.ac.uk/~kp/dtls.pdf
|
|
Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
|
|
Security Group at Royal Holloway, University of London
|
|
(www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
|
|
<seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
|
|
for preparing the fix. (CVE-2011-4108)
|
|
[Robin Seggelmann, Michael Tuexen]
|
|
|
|
*) Clear bytes used for block padding of SSL 3.0 records.
|
|
(CVE-2011-4576)
|
|
[Adam Langley (Google)]
|
|
|
|
*) Only allow one SGC handshake restart for SSL/TLS. Thanks to George
|
|
Kadianakis <desnacked@gmail.com> for discovering this issue and
|
|
Adam Langley for preparing the fix. (CVE-2011-4619)
|
|
[Adam Langley (Google)]
|
|
|
|
*) Check parameters are not NULL in GOST ENGINE. (CVE-2012-0027)
|
|
[Andrey Kulikov <amdeich@gmail.com>]
|
|
|
|
*) Prevent malformed RFC3779 data triggering an assertion failure.
|
|
Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
|
|
and Rob Austein <sra@hactrn.net> for fixing it. (CVE-2011-4577)
|
|
[Rob Austein <sra@hactrn.net>]
|
|
|
|
*) Improved PRNG seeding for VOS.
|
|
[Paul Green <Paul.Green@stratus.com>]
|
|
|
|
*) Fix ssl_ciph.c set-up race.
|
|
[Adam Langley (Google)]
|
|
|
|
*) Fix spurious failures in ecdsatest.c.
|
|
[Emilia Käsper (Google)]
|
|
|
|
*) Fix the BIO_f_buffer() implementation (which was mixing different
|
|
interpretations of the '..._len' fields).
|
|
[Adam Langley (Google)]
|
|
|
|
*) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
|
|
BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
|
|
threads won't reuse the same blinding coefficients.
|
|
|
|
This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
|
|
lock to call BN_BLINDING_invert_ex, and avoids one use of
|
|
BN_BLINDING_update for each BN_BLINDING structure (previously,
|
|
the last update always remained unused).
|
|
[Emilia Käsper (Google)]
|
|
|
|
*) In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
|
|
[Bob Buckholz (Google)]
|
|
|
|
Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
|
|
|
|
*) Fix bug where CRLs with nextUpdate in the past are sometimes accepted
|
|
by initialising X509_STORE_CTX properly. (CVE-2011-3207)
|
|
[Kaspar Brand <ossl@velox.ch>]
|
|
|
|
*) Fix SSL memory handling for (EC)DH ciphersuites, in particular
|
|
for multi-threaded use of ECDH. (CVE-2011-3210)
|
|
[Adam Langley (Google)]
|
|
|
|
*) Fix x509_name_ex_d2i memory leak on bad inputs.
|
|
[Bodo Moeller]
|
|
|
|
*) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
|
|
signature public key algorithm by using OID xref utilities instead.
|
|
Before this you could only use some ECC ciphersuites with SHA1 only.
|
|
[Steve Henson]
|
|
|
|
*) Add protection against ECDSA timing attacks as mentioned in the paper
|
|
by Billy Bob Brumley and Nicola Tuveri, see:
|
|
|
|
http://eprint.iacr.org/2011/232.pdf
|
|
|
|
[Billy Bob Brumley and Nicola Tuveri]
|
|
|
|
Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
|
|
|
|
*) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
|
|
[Neel Mehta, Adam Langley, Bodo Moeller (Google)]
|
|
|
|
*) Fix bug in string printing code: if *any* escaping is enabled we must
|
|
escape the escape character (backslash) or the resulting string is
|
|
ambiguous.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.0b and 1.0.0c [2 Dec 2010]
|
|
|
|
*) Disable code workaround for ancient and obsolete Netscape browsers
|
|
and servers: an attacker can use it in a ciphersuite downgrade attack.
|
|
Thanks to Martin Rex for discovering this bug. CVE-2010-4180
|
|
[Steve Henson]
|
|
|
|
*) Fixed J-PAKE implementation error, originally discovered by
|
|
Sebastien Martini, further info and confirmation from Stefan
|
|
Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
|
|
[Ben Laurie]
|
|
|
|
Changes between 1.0.0a and 1.0.0b [16 Nov 2010]
|
|
|
|
*) Fix extension code to avoid race conditions which can result in a buffer
|
|
overrun vulnerability: resumed sessions must not be modified as they can
|
|
be shared by multiple threads. CVE-2010-3864
|
|
[Steve Henson]
|
|
|
|
*) Fix WIN32 build system to correctly link an ENGINE directory into
|
|
a DLL.
|
|
[Steve Henson]
|
|
|
|
Changes between 1.0.0 and 1.0.0a [01 Jun 2010]
|
|
|
|
*) Check return value of int_rsa_verify in pkey_rsa_verifyrecover
|
|
(CVE-2010-1633)
|
|
[Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
|
|
|
|
Changes between 0.9.8n and 1.0.0 [29 Mar 2010]
|
|
|
|
*) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
|
|
context. The operation can be customised via the ctrl mechanism in
|
|
case ENGINEs want to include additional functionality.
|
|
[Steve Henson]
|
|
|
|
*) Tolerate yet another broken PKCS#8 key format: private key value negative.
|
|
[Steve Henson]
|
|
|
|
*) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
|
|
output hashes compatible with older versions of OpenSSL.
|
|
[Willy Weisz <weisz@vcpc.univie.ac.at>]
|
|
|
|
*) Fix compression algorithm handling: if resuming a session use the
|
|
compression algorithm of the resumed session instead of determining
|
|
it from client hello again. Don't allow server to change algorithm.
|
|
[Steve Henson]
|
|
|
|
*) Add load_crls() function to apps tidying load_certs() too. Add option
|
|
to verify utility to allow additional CRLs to be included.
|
|
[Steve Henson]
|
|
|
|
*) Update OCSP request code to permit adding custom headers to the request:
|
|
some responders need this.
|
|
[Steve Henson]
|
|
|
|
*) The function EVP_PKEY_sign() returns <=0 on error: check return code
|
|
correctly.
|
|
[Julia Lawall <julia@diku.dk>]
|
|
|
|
*) Update verify callback code in apps/s_cb.c and apps/verify.c, it
|
|
needlessly dereferenced structures, used obsolete functions and
|
|
didn't handle all updated verify codes correctly.
|
|
[Steve Henson]
|
|
|
|
*) Disable MD2 in the default configuration.
|
|
[Steve Henson]
|
|
|
|
*) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
|
|
indicate the initial BIO being pushed or popped. This makes it possible
|
|
to determine whether the BIO is the one explicitly called or as a result
|
|
of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
|
|
it handles reference counts correctly and doesn't zero out the I/O bio
|
|
when it is not being explicitly popped. WARNING: applications which
|
|
included workarounds for the old buggy behaviour will need to be modified
|
|
or they could free up already freed BIOs.
|
|
[Steve Henson]
|
|
|
|
*) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
|
|
renaming to all platforms (within the 0.9.8 branch, this was
|
|
done conditionally on Netware platforms to avoid a name clash).
|
|
[Guenter <lists@gknw.net>]
|
|
|
|
*) Add ECDHE and PSK support to DTLS.
|
|
[Michael Tuexen <tuexen@fh-muenster.de>]
|
|
|
|
*) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
|
|
be used on C++.
|
|
[Steve Henson]
|
|
|
|
*) Add "missing" function EVP_MD_flags() (without this the only way to
|
|
retrieve a digest flags is by accessing the structure directly. Update
|
|
EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest
|
|
or cipher is registered as in the "from" argument. Print out all
|
|
registered digests in the dgst usage message instead of manually
|
|
attempting to work them out.
|
|
[Steve Henson]
|
|
|
|
*) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
|
|
this allows the use of compression and extensions. Change default cipher
|
|
string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
|
|
by default unless an application cipher string requests it.
|
|
[Steve Henson]
|
|
|
|
*) Alter match criteria in PKCS12_parse(). It used to try to use local
|
|
key ids to find matching certificates and keys but some PKCS#12 files
|
|
don't follow the (somewhat unwritten) rules and this strategy fails.
|
|
Now just gather all certificates together and the first private key
|
|
then look for the first certificate that matches the key.
|
|
[Steve Henson]
|
|
|
|
*) Support use of registered digest and cipher names for dgst and cipher
|
|
commands instead of having to add each one as a special case. So now
|
|
you can do:
|
|
|
|
openssl sha256 foo
|
|
|
|
as well as:
|
|
|
|
openssl dgst -sha256 foo
|
|
|
|
and this works for ENGINE based algorithms too.
|
|
|
|
[Steve Henson]
|
|
|
|
*) Update Gost ENGINE to support parameter files.
|
|
[Victor B. Wagner <vitus@cryptocom.ru>]
|
|
|
|
*) Support GeneralizedTime in ca utility.
|
|
[Oliver Martin <oliver@volatilevoid.net>, Steve Henson]
|
|
|
|
*) Enhance the hash format used for certificate directory links. The new
|
|
form uses the canonical encoding (meaning equivalent names will work
|
|
even if they aren't identical) and uses SHA1 instead of MD5. This form
|
|
is incompatible with the older format and as a result c_rehash should
|
|
be used to rebuild symbolic links.
|
|
[Steve Henson]
|
|
|
|
*) Make PKCS#8 the default write format for private keys, replacing the
|
|
traditional format. This form is standardised, more secure and doesn't
|
|
include an implicit MD5 dependency.
|
|
[Steve Henson]
|
|
|
|
*) Add a $gcc_devteam_warn option to Configure. The idea is that any code
|
|
committed to OpenSSL should pass this lot as a minimum.
|
|
[Steve Henson]
|
|
|
|
*) Add session ticket override functionality for use by EAP-FAST.
|
|
[Jouni Malinen <j@w1.fi>]
|
|
|
|
*) Modify HMAC functions to return a value. Since these can be implemented
|
|
in an ENGINE errors can occur.
|
|
[Steve Henson]
|
|
|
|
*) Type-checked OBJ_bsearch_ex.
|
|
[Ben Laurie]
|
|
|
|
*) Type-checked OBJ_bsearch. Also some constification necessitated
|
|
by type-checking. Still to come: TXT_DB, bsearch(?),
|
|
OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
|
|
CONF_VALUE.
|
|
[Ben Laurie]
|
|
|
|
*) New function OPENSSL_gmtime_adj() to add a specific number of days and
|
|
seconds to a tm structure directly, instead of going through OS
|
|
specific date routines. This avoids any issues with OS routines such
|
|
as the year 2038 bug. New *_adj() functions for ASN1 time structures
|
|
and X509_time_adj_ex() to cover the extended range. The existing
|
|
X509_time_adj() is still usable and will no longer have any date issues.
|
|
[Steve Henson]
|
|
|
|
*) Delta CRL support. New use deltas option which will attempt to locate
|
|
and search any appropriate delta CRLs available.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Support for CRLs partitioned by reason code. Reorganise CRL processing
|
|
code and add additional score elements. Validate alternate CRL paths
|
|
as part of the CRL checking and indicate a new error "CRL path validation
|
|
error" in this case. Applications wanting additional details can use
|
|
the verify callback and check the new "parent" field. If this is not
|
|
NULL CRL path validation is taking place. Existing applications wont
|
|
see this because it requires extended CRL support which is off by
|
|
default.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Support for freshest CRL extension.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Initial indirect CRL support. Currently only supported in the CRLs
|
|
passed directly and not via lookup. Process certificate issuer
|
|
CRL entry extension and lookup CRL entries by bother issuer name
|
|
and serial number. Check and process CRL issuer entry in IDP extension.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Add support for distinct certificate and CRL paths. The CRL issuer
|
|
certificate is validated separately in this case. Only enabled if
|
|
an extended CRL support flag is set: this flag will enable additional
|
|
CRL functionality in future.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Add support for policy mappings extension.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Fixes to pathlength constraint, self issued certificate handling,
|
|
policy processing to align with RFC3280 and PKITS tests.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Support for name constraints certificate extension. DN, email, DNS
|
|
and URI types are currently supported.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) To cater for systems that provide a pointer-based thread ID rather
|
|
than numeric, deprecate the current numeric thread ID mechanism and
|
|
replace it with a structure and associated callback type. This
|
|
mechanism allows a numeric "hash" to be extracted from a thread ID in
|
|
either case, and on platforms where pointers are larger than 'long',
|
|
mixing is done to help ensure the numeric 'hash' is usable even if it
|
|
can't be guaranteed unique. The default mechanism is to use "&errno"
|
|
as a pointer-based thread ID to distinguish between threads.
|
|
|
|
Applications that want to provide their own thread IDs should now use
|
|
CRYPTO_THREADID_set_callback() to register a callback that will call
|
|
either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
|
|
|
|
Note that ERR_remove_state() is now deprecated, because it is tied
|
|
to the assumption that thread IDs are numeric. ERR_remove_state(0)
|
|
to free the current thread's error state should be replaced by
|
|
ERR_remove_thread_state(NULL).
|
|
|
|
(This new approach replaces the functions CRYPTO_set_idptr_callback(),
|
|
CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
|
|
OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
|
|
application was previously providing a numeric thread callback that
|
|
was inappropriate for distinguishing threads, then uniqueness might
|
|
have been obtained with &errno that happened immediately in the
|
|
intermediate development versions of OpenSSL; this is no longer the
|
|
case, the numeric thread callback will now override the automatic use
|
|
of &errno.)
|
|
[Geoff Thorpe, with help from Bodo Moeller]
|
|
|
|
*) Initial support for different CRL issuing certificates. This covers a
|
|
simple case where the self issued certificates in the chain exist and
|
|
the real CRL issuer is higher in the existing chain.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Removed effectively defunct crypto/store from the build.
|
|
[Ben Laurie]
|
|
|
|
*) Revamp of STACK to provide stronger type-checking. Still to come:
|
|
TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
|
|
ASN1_STRING, CONF_VALUE.
|
|
[Ben Laurie]
|
|
|
|
*) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
|
|
RAM on SSL connections. This option can save about 34k per idle SSL.
|
|
[Nick Mathewson]
|
|
|
|
*) Revamp of LHASH to provide stronger type-checking. Still to come:
|
|
STACK, TXT_DB, bsearch, qsort.
|
|
[Ben Laurie]
|
|
|
|
*) Initial support for Cryptographic Message Syntax (aka CMS) based
|
|
on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
|
|
support for data, signedData, compressedData, digestedData and
|
|
encryptedData, envelopedData types included. Scripts to check against
|
|
RFC4134 examples draft and interop and consistency checks of many
|
|
content types and variants.
|
|
[Steve Henson]
|
|
|
|
*) Add options to enc utility to support use of zlib compression BIO.
|
|
[Steve Henson]
|
|
|
|
*) Extend mk1mf to support importing of options and assembly language
|
|
files from Configure script, currently only included in VC-WIN32.
|
|
The assembly language rules can now optionally generate the source
|
|
files from the associated perl scripts.
|
|
[Steve Henson]
|
|
|
|
*) Implement remaining functionality needed to support GOST ciphersuites.
|
|
Interop testing has been performed using CryptoPro implementations.
|
|
[Victor B. Wagner <vitus@cryptocom.ru>]
|
|
|
|
*) s390x assembler pack.
|
|
[Andy Polyakov]
|
|
|
|
*) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
|
|
"family."
|
|
[Andy Polyakov]
|
|
|
|
*) Implement Opaque PRF Input TLS extension as specified in
|
|
draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an
|
|
official specification yet and no extension type assignment by
|
|
IANA exists, this extension (for now) will have to be explicitly
|
|
enabled when building OpenSSL by providing the extension number
|
|
to use. For example, specify an option
|
|
|
|
-DTLSEXT_TYPE_opaque_prf_input=0x9527
|
|
|
|
to the "config" or "Configure" script to enable the extension,
|
|
assuming extension number 0x9527 (which is a completely arbitrary
|
|
and unofficial assignment based on the MD5 hash of the Internet
|
|
Draft). Note that by doing so, you potentially lose
|
|
interoperability with other TLS implementations since these might
|
|
be using the same extension number for other purposes.
|
|
|
|
SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
|
|
opaque PRF input value to use in the handshake. This will create
|
|
an interal copy of the length-'len' string at 'src', and will
|
|
return non-zero for success.
|
|
|
|
To get more control and flexibility, provide a callback function
|
|
by using
|
|
|
|
SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
|
|
SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
|
|
|
|
where
|
|
|
|
int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
|
|
void *arg;
|
|
|
|
Callback function 'cb' will be called in handshakes, and is
|
|
expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
|
|
Argument 'arg' is for application purposes (the value as given to
|
|
SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
|
|
be provided to the callback function). The callback function
|
|
has to return non-zero to report success: usually 1 to use opaque
|
|
PRF input just if possible, or 2 to enforce use of the opaque PRF
|
|
input. In the latter case, the library will abort the handshake
|
|
if opaque PRF input is not successfully negotiated.
|
|
|
|
Arguments 'peerinput' and 'len' given to the callback function
|
|
will always be NULL and 0 in the case of a client. A server will
|
|
see the client's opaque PRF input through these variables if
|
|
available (NULL and 0 otherwise). Note that if the server
|
|
provides an opaque PRF input, the length must be the same as the
|
|
length of the client's opaque PRF input.
|
|
|
|
Note that the callback function will only be called when creating
|
|
a new session (session resumption can resume whatever was
|
|
previously negotiated), and will not be called in SSL 2.0
|
|
handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
|
|
SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
|
|
for applications that need to enforce opaque PRF input.
|
|
|
|
[Bodo Moeller]
|
|
|
|
*) Update ssl code to support digests other than SHA1+MD5 for handshake
|
|
MAC.
|
|
|
|
[Victor B. Wagner <vitus@cryptocom.ru>]
|
|
|
|
*) Add RFC4507 support to OpenSSL. This includes the corrections in
|
|
RFC4507bis. The encrypted ticket format is an encrypted encoded
|
|
SSL_SESSION structure, that way new session features are automatically
|
|
supported.
|
|
|
|
If a client application caches session in an SSL_SESSION structure
|
|
support is transparent because tickets are now stored in the encoded
|
|
SSL_SESSION.
|
|
|
|
The SSL_CTX structure automatically generates keys for ticket
|
|
protection in servers so again support should be possible
|
|
with no application modification.
|
|
|
|
If a client or server wishes to disable RFC4507 support then the option
|
|
SSL_OP_NO_TICKET can be set.
|
|
|
|
Add a TLS extension debugging callback to allow the contents of any client
|
|
or server extensions to be examined.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Final changes to avoid use of pointer pointer casts in OpenSSL.
|
|
OpenSSL should now compile cleanly on gcc 4.2
|
|
[Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
|
|
|
|
*) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
|
|
support including streaming MAC support: this is required for GOST
|
|
ciphersuite support.
|
|
[Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
|
|
|
|
*) Add option -stream to use PKCS#7 streaming in smime utility. New
|
|
function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
|
|
to output in BER and PEM format.
|
|
[Steve Henson]
|
|
|
|
*) Experimental support for use of HMAC via EVP_PKEY interface. This
|
|
allows HMAC to be handled via the EVP_DigestSign*() interface. The
|
|
EVP_PKEY "key" in this case is the HMAC key, potentially allowing
|
|
ENGINE support for HMAC keys which are unextractable. New -mac and
|
|
-macopt options to dgst utility.
|
|
[Steve Henson]
|
|
|
|
*) New option -sigopt to dgst utility. Update dgst to use
|
|
EVP_Digest{Sign,Verify}*. These two changes make it possible to use
|
|
alternative signing paramaters such as X9.31 or PSS in the dgst
|
|
utility.
|
|
[Steve Henson]
|
|
|
|
*) Change ssl_cipher_apply_rule(), the internal function that does
|
|
the work each time a ciphersuite string requests enabling
|
|
("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
|
|
removing ("!foo+bar") a class of ciphersuites: Now it maintains
|
|
the order of disabled ciphersuites such that those ciphersuites
|
|
that most recently went from enabled to disabled not only stay
|
|
in order with respect to each other, but also have higher priority
|
|
than other disabled ciphersuites the next time ciphersuites are
|
|
enabled again.
|
|
|
|
This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
|
|
the same ciphersuites as with "HIGH" alone, but in a specific
|
|
order where the PSK ciphersuites come first (since they are the
|
|
most recently disabled ciphersuites when "HIGH" is parsed).
|
|
|
|
Also, change ssl_create_cipher_list() (using this new
|
|
funcionality) such that between otherwise identical
|
|
cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
|
|
the default order.
|
|
[Bodo Moeller]
|
|
|
|
*) Change ssl_create_cipher_list() so that it automatically
|
|
arranges the ciphersuites in reasonable order before starting
|
|
to process the rule string. Thus, the definition for "DEFAULT"
|
|
(SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
|
|
remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
|
|
This makes it much easier to arrive at a reasonable default order
|
|
in applications for which anonymous ciphers are OK (meaning
|
|
that you can't actually use DEFAULT).
|
|
[Bodo Moeller; suggested by Victor Duchovni]
|
|
|
|
*) Split the SSL/TLS algorithm mask (as used for ciphersuite string
|
|
processing) into multiple integers instead of setting
|
|
"SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
|
|
"SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
|
|
(These masks as well as the individual bit definitions are hidden
|
|
away into the non-exported interface ssl/ssl_locl.h, so this
|
|
change to the definition of the SSL_CIPHER structure shouldn't
|
|
affect applications.) This give us more bits for each of these
|
|
categories, so there is no longer a need to coagulate AES128 and
|
|
AES256 into a single algorithm bit, and to coagulate Camellia128
|
|
and Camellia256 into a single algorithm bit, which has led to all
|
|
kinds of kludges.
|
|
|
|
Thus, among other things, the kludge introduced in 0.9.7m and
|
|
0.9.8e for masking out AES256 independently of AES128 or masking
|
|
out Camellia256 independently of AES256 is not needed here in 0.9.9.
|
|
|
|
With the change, we also introduce new ciphersuite aliases that
|
|
so far were missing: "AES128", "AES256", "CAMELLIA128", and
|
|
"CAMELLIA256".
|
|
[Bodo Moeller]
|
|
|
|
*) Add support for dsa-with-SHA224 and dsa-with-SHA256.
|
|
Use the leftmost N bytes of the signature input if the input is
|
|
larger than the prime q (with N being the size in bytes of q).
|
|
[Nils Larsch]
|
|
|
|
*) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
|
|
it yet and it is largely untested.
|
|
[Steve Henson]
|
|
|
|
*) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
|
|
[Nils Larsch]
|
|
|
|
*) Initial incomplete changes to avoid need for function casts in OpenSSL
|
|
some compilers (gcc 4.2 and later) reject their use. Safestack is
|
|
reimplemented. Update ASN1 to avoid use of legacy functions.
|
|
[Steve Henson]
|
|
|
|
*) Win32/64 targets are linked with Winsock2.
|
|
[Andy Polyakov]
|
|
|
|
*) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
|
|
to external functions. This can be used to increase CRL handling
|
|
efficiency especially when CRLs are very large by (for example) storing
|
|
the CRL revoked certificates in a database.
|
|
[Steve Henson]
|
|
|
|
*) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
|
|
new CRLs added to a directory can be used. New command line option
|
|
-verify_return_error to s_client and s_server. This causes real errors
|
|
to be returned by the verify callback instead of carrying on no matter
|
|
what. This reflects the way a "real world" verify callback would behave.
|
|
[Steve Henson]
|
|
|
|
*) GOST engine, supporting several GOST algorithms and public key formats.
|
|
Kindly donated by Cryptocom.
|
|
[Cryptocom]
|
|
|
|
*) Partial support for Issuing Distribution Point CRL extension. CRLs
|
|
partitioned by DP are handled but no indirect CRL or reason partitioning
|
|
(yet). Complete overhaul of CRL handling: now the most suitable CRL is
|
|
selected via a scoring technique which handles IDP and AKID in CRLs.
|
|
[Steve Henson]
|
|
|
|
*) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
|
|
will ultimately be used for all verify operations: this will remove the
|
|
X509_STORE dependency on certificate verification and allow alternative
|
|
lookup methods. X509_STORE based implementations of these two callbacks.
|
|
[Steve Henson]
|
|
|
|
*) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
|
|
Modify get_crl() to find a valid (unexpired) CRL if possible.
|
|
[Steve Henson]
|
|
|
|
*) New function X509_CRL_match() to check if two CRLs are identical. Normally
|
|
this would be called X509_CRL_cmp() but that name is already used by
|
|
a function that just compares CRL issuer names. Cache several CRL
|
|
extensions in X509_CRL structure and cache CRLDP in X509.
|
|
[Steve Henson]
|
|
|
|
*) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
|
|
this maps equivalent X509_NAME structures into a consistent structure.
|
|
Name comparison can then be performed rapidly using memcmp().
|
|
[Steve Henson]
|
|
|
|
*) Non-blocking OCSP request processing. Add -timeout option to ocsp
|
|
utility.
|
|
[Steve Henson]
|
|
|
|
*) Allow digests to supply their own micalg string for S/MIME type using
|
|
the ctrl EVP_MD_CTRL_MICALG.
|
|
[Steve Henson]
|
|
|
|
*) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
|
|
EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
|
|
ctrl. It can then customise the structure before and/or after signing
|
|
if necessary.
|
|
[Steve Henson]
|
|
|
|
*) New function OBJ_add_sigid() to allow application defined signature OIDs
|
|
to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
|
|
to free up any added signature OIDs.
|
|
[Steve Henson]
|
|
|
|
*) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
|
|
EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
|
|
digest and cipher tables. New options added to openssl utility:
|
|
list-message-digest-algorithms and list-cipher-algorithms.
|
|
[Steve Henson]
|
|
|
|
*) Change the array representation of binary polynomials: the list
|
|
of degrees of non-zero coefficients is now terminated with -1.
|
|
Previously it was terminated with 0, which was also part of the
|
|
value; thus, the array representation was not applicable to
|
|
polynomials where t^0 has coefficient zero. This change makes
|
|
the array representation useful in a more general context.
|
|
[Douglas Stebila]
|
|
|
|
*) Various modifications and fixes to SSL/TLS cipher string
|
|
handling. For ECC, the code now distinguishes between fixed ECDH
|
|
with RSA certificates on the one hand and with ECDSA certificates
|
|
on the other hand, since these are separate ciphersuites. The
|
|
unused code for Fortezza ciphersuites has been removed.
|
|
|
|
For consistency with EDH, ephemeral ECDH is now called "EECDH"
|
|
(not "ECDHE"). For consistency with the code for DH
|
|
certificates, use of ECDH certificates is now considered ECDH
|
|
authentication, not RSA or ECDSA authentication (the latter is
|
|
merely the CA's signing algorithm and not actively used in the
|
|
protocol).
|
|
|
|
The temporary ciphersuite alias "ECCdraft" is no longer
|
|
available, and ECC ciphersuites are no longer excluded from "ALL"
|
|
and "DEFAULT". The following aliases now exist for RFC 4492
|
|
ciphersuites, most of these by analogy with the DH case:
|
|
|
|
kECDHr - ECDH cert, signed with RSA
|
|
kECDHe - ECDH cert, signed with ECDSA
|
|
kECDH - ECDH cert (signed with either RSA or ECDSA)
|
|
kEECDH - ephemeral ECDH
|
|
ECDH - ECDH cert or ephemeral ECDH
|
|
|
|
aECDH - ECDH cert
|
|
aECDSA - ECDSA cert
|
|
ECDSA - ECDSA cert
|
|
|
|
AECDH - anonymous ECDH
|
|
EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
|
|
|
|
[Bodo Moeller]
|
|
|
|
*) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
|
|
Use correct micalg parameters depending on digest(s) in signed message.
|
|
[Steve Henson]
|
|
|
|
*) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
|
|
an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
|
|
[Steve Henson]
|
|
|
|
*) Initial engine support for EVP_PKEY_METHOD. New functions to permit
|
|
an engine to register a method. Add ENGINE lookups for methods and
|
|
functional reference processing.
|
|
[Steve Henson]
|
|
|
|
*) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
|
|
EVP_{Sign,Verify}* which allow an application to customise the signature
|
|
process.
|
|
[Steve Henson]
|
|
|
|
*) New -resign option to smime utility. This adds one or more signers
|
|
to an existing PKCS#7 signedData structure. Also -md option to use an
|
|
alternative message digest algorithm for signing.
|
|
[Steve Henson]
|
|
|
|
*) Tidy up PKCS#7 routines and add new functions to make it easier to
|
|
create PKCS7 structures containing multiple signers. Update smime
|
|
application to support multiple signers.
|
|
[Steve Henson]
|
|
|
|
*) New -macalg option to pkcs12 utility to allow setting of an alternative
|
|
digest MAC.
|
|
[Steve Henson]
|
|
|
|
*) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
|
|
Reorganize PBE internals to lookup from a static table using NIDs,
|
|
add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
|
|
EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
|
|
PRF which will be automatically used with PBES2.
|
|
[Steve Henson]
|
|
|
|
*) Replace the algorithm specific calls to generate keys in "req" with the
|
|
new API.
|
|
[Steve Henson]
|
|
|
|
*) Update PKCS#7 enveloped data routines to use new API. This is now
|
|
supported by any public key method supporting the encrypt operation. A
|
|
ctrl is added to allow the public key algorithm to examine or modify
|
|
the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
|
|
a no op.
|
|
[Steve Henson]
|
|
|
|
*) Add a ctrl to asn1 method to allow a public key algorithm to express
|
|
a default digest type to use. In most cases this will be SHA1 but some
|
|
algorithms (such as GOST) need to specify an alternative digest. The
|
|
return value indicates how strong the preference is 1 means optional and
|
|
2 is mandatory (that is it is the only supported type). Modify
|
|
ASN1_item_sign() to accept a NULL digest argument to indicate it should
|
|
use the default md. Update openssl utilities to use the default digest
|
|
type for signing if it is not explicitly indicated.
|
|
[Steve Henson]
|
|
|
|
*) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
|
|
EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
|
|
signing method from the key type. This effectively removes the link
|
|
between digests and public key types.
|
|
[Steve Henson]
|
|
|
|
*) Add an OID cross reference table and utility functions. Its purpose is to
|
|
translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
|
|
rsaEncryption. This will allow some of the algorithm specific hackery
|
|
needed to use the correct OID to be removed.
|
|
[Steve Henson]
|
|
|
|
*) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
|
|
structures for PKCS7_sign(). They are now set up by the relevant public
|
|
key ASN1 method.
|
|
[Steve Henson]
|
|
|
|
*) Add provisional EC pkey method with support for ECDSA and ECDH.
|
|
[Steve Henson]
|
|
|
|
*) Add support for key derivation (agreement) in the API, DH method and
|
|
pkeyutl.
|
|
[Steve Henson]
|
|
|
|
*) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
|
|
public and private key formats. As a side effect these add additional
|
|
command line functionality not previously available: DSA signatures can be
|
|
generated and verified using pkeyutl and DH key support and generation in
|
|
pkey, genpkey.
|
|
[Steve Henson]
|
|
|
|
*) BeOS support.
|
|
[Oliver Tappe <zooey@hirschkaefer.de>]
|
|
|
|
*) New make target "install_html_docs" installs HTML renditions of the
|
|
manual pages.
|
|
[Oliver Tappe <zooey@hirschkaefer.de>]
|
|
|
|
*) New utility "genpkey" this is analogous to "genrsa" etc except it can
|
|
generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
|
|
support key and parameter generation and add initial key generation
|
|
functionality for RSA.
|
|
[Steve Henson]
|
|
|
|
*) Add functions for main EVP_PKEY_method operations. The undocumented
|
|
functions EVP_PKEY_{encrypt,decrypt} have been renamed to
|
|
EVP_PKEY_{encrypt,decrypt}_old.
|
|
[Steve Henson]
|
|
|
|
*) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
|
|
key API, doesn't do much yet.
|
|
[Steve Henson]
|
|
|
|
*) New function EVP_PKEY_asn1_get0_info() to retrieve information about
|
|
public key algorithms. New option to openssl utility:
|
|
"list-public-key-algorithms" to print out info.
|
|
[Steve Henson]
|
|
|
|
*) Implement the Supported Elliptic Curves Extension for
|
|
ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
|
|
[Douglas Stebila]
|
|
|
|
*) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
|
|
EVP_CIPHER structures to avoid later problems in EVP_cleanup().
|
|
[Steve Henson]
|
|
|
|
*) New utilities pkey and pkeyparam. These are similar to algorithm specific
|
|
utilities such as rsa, dsa, dsaparam etc except they process any key
|
|
type.
|
|
[Steve Henson]
|
|
|
|
*) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
|
|
functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
|
|
EVP_PKEY_print_param() to print public key data from an EVP_PKEY
|
|
structure.
|
|
[Steve Henson]
|
|
|
|
*) Initial support for pluggable public key ASN1.
|
|
De-spaghettify the public key ASN1 handling. Move public and private
|
|
key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
|
|
algorithm specific handling to a single module within the relevant
|
|
algorithm directory. Add functions to allow (near) opaque processing
|
|
of public and private key structures.
|
|
[Steve Henson]
|
|
|
|
*) Implement the Supported Point Formats Extension for
|
|
ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
|
|
[Douglas Stebila]
|
|
|
|
*) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
|
|
for the psk identity [hint] and the psk callback functions to the
|
|
SSL_SESSION, SSL and SSL_CTX structure.
|
|
|
|
New ciphersuites:
|
|
PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
|
|
PSK-AES256-CBC-SHA
|
|
|
|
New functions:
|
|
SSL_CTX_use_psk_identity_hint
|
|
SSL_get_psk_identity_hint
|
|
SSL_get_psk_identity
|
|
SSL_use_psk_identity_hint
|
|
|
|
[Mika Kousa and Pasi Eronen of Nokia Corporation]
|
|
|
|
*) Add RFC 3161 compliant time stamp request creation, response generation
|
|
and response verification functionality.
|
|
[Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project]
|
|
|
|
*) Add initial support for TLS extensions, specifically for the server_name
|
|
extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
|
|
have new members for a host name. The SSL data structure has an
|
|
additional member SSL_CTX *initial_ctx so that new sessions can be
|
|
stored in that context to allow for session resumption, even after the
|
|
SSL has been switched to a new SSL_CTX in reaction to a client's
|
|
server_name extension.
|
|
|
|
New functions (subject to change):
|
|
|
|
SSL_get_servername()
|
|
SSL_get_servername_type()
|
|
SSL_set_SSL_CTX()
|
|
|
|
New CTRL codes and macros (subject to change):
|
|
|
|
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
|
|
- SSL_CTX_set_tlsext_servername_callback()
|
|
SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
|
|
- SSL_CTX_set_tlsext_servername_arg()
|
|
SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
|
|
|
|
openssl s_client has a new '-servername ...' option.
|
|
|
|
openssl s_server has new options '-servername_host ...', '-cert2 ...',
|
|
'-key2 ...', '-servername_fatal' (subject to change). This allows
|
|
testing the HostName extension for a specific single host name ('-cert'
|
|
and '-key' remain fallbacks for handshakes without HostName
|
|
negotiation). If the unrecognized_name alert has to be sent, this by
|
|
default is a warning; it becomes fatal with the '-servername_fatal'
|
|
option.
|
|
|
|
[Peter Sylvester, Remy Allais, Christophe Renou]
|
|
|
|
*) Whirlpool hash implementation is added.
|
|
[Andy Polyakov]
|
|
|
|
*) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
|
|
bn(64,32). Because of instruction set limitations it doesn't have
|
|
any negative impact on performance. This was done mostly in order
|
|
to make it possible to share assembler modules, such as bn_mul_mont
|
|
implementations, between 32- and 64-bit builds without hassle.
|
|
[Andy Polyakov]
|
|
|
|
*) Move code previously exiled into file crypto/ec/ec2_smpt.c
|
|
to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
|
|
macro.
|
|
[Bodo Moeller]
|
|
|
|
*) New candidate for BIGNUM assembler implementation, bn_mul_mont,
|
|
dedicated Montgomery multiplication procedure, is introduced.
|
|
BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
|
|
"64-bit" performance on certain 32-bit targets.
|
|
[Andy Polyakov]
|
|
|
|
*) New option SSL_OP_NO_COMP to disable use of compression selectively
|
|
in SSL structures. New SSL ctrl to set maximum send fragment size.
|
|
Save memory by seeting the I/O buffer sizes dynamically instead of
|
|
using the maximum available value.
|
|
[Steve Henson]
|
|
|
|
*) New option -V for 'openssl ciphers'. This prints the ciphersuite code
|
|
in addition to the text details.
|
|
[Bodo Moeller]
|
|
|
|
*) Very, very preliminary EXPERIMENTAL support for printing of general
|
|
ASN1 structures. This currently produces rather ugly output and doesn't
|
|
handle several customised structures at all.
|
|
[Steve Henson]
|
|
|
|
*) Integrated support for PVK file format and some related formats such
|
|
as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
|
|
these in the 'rsa' and 'dsa' utilities.
|
|
[Steve Henson]
|
|
|
|
*) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
|
|
[Steve Henson]
|
|
|
|
*) Remove the ancient ASN1_METHOD code. This was only ever used in one
|
|
place for the (very old) "NETSCAPE" format certificates which are now
|
|
handled using new ASN1 code equivalents.
|
|
[Steve Henson]
|
|
|
|
*) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
|
|
pointer and make the SSL_METHOD parameter in SSL_CTX_new,
|
|
SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
|
|
[Nils Larsch]
|
|
|
|
*) Modify CRL distribution points extension code to print out previously
|
|
unsupported fields. Enhance extension setting code to allow setting of
|
|
all fields.
|
|
[Steve Henson]
|
|
|
|
*) Add print and set support for Issuing Distribution Point CRL extension.
|
|
[Steve Henson]
|
|
|
|
*) Change 'Configure' script to enable Camellia by default.
|
|
[NTT]
|
|
|
|
Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
|
|
|
|
*) When rejecting SSL/TLS records due to an incorrect version number, never
|
|
update s->server with a new major version number. As of
|
|
- OpenSSL 0.9.8m if 'short' is a 16-bit type,
|
|
- OpenSSL 0.9.8f if 'short' is longer than 16 bits,
|
|
the previous behavior could result in a read attempt at NULL when
|
|
receiving specific incorrect SSL/TLS records once record payload
|
|
protection is active. (CVE-2010-0740)
|
|
[Bodo Moeller, Adam Langley <agl@chromium.org>]
|
|
|
|
*) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL
|
|
could be crashed if the relevant tables were not present (e.g. chrooted).
|
|
[Tomas Hoger <thoger@redhat.com>]
|
|
|
|
Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
|
|
|
|
*) Always check bn_wexpend() return values for failure. (CVE-2009-3245)
|
|
[Martin Olsson, Neel Mehta]
|
|
|
|
*) Fix X509_STORE locking: Every 'objs' access requires a lock (to
|
|
accommodate for stack sorting, always a write lock!).
|
|
[Bodo Moeller]
|
|
|
|
*) On some versions of WIN32 Heap32Next is very slow. This can cause
|
|
excessive delays in the RAND_poll(): over a minute. As a workaround
|
|
include a time check in the inner Heap32Next loop too.
|
|
[Steve Henson]
|
|
|
|
*) The code that handled flushing of data in SSL/TLS originally used the
|
|
BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
|
|
the problem outlined in PR#1949. The fix suggested there however can
|
|
trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
|
|
of Apache). So instead simplify the code to flush unconditionally.
|
|
This should be fine since flushing with no data to flush is a no op.
|
|
[Steve Henson]
|
|
|
|
*) Handle TLS versions 2.0 and later properly and correctly use the
|
|
highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
|
|
off ancient servers have a habit of sticking around for a while...
|
|
[Steve Henson]
|
|
|
|
*) Modify compression code so it frees up structures without using the
|
|
ex_data callbacks. This works around a problem where some applications
|
|
call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
|
|
restarting) then use compression (e.g. SSL with compression) later.
|
|
This results in significant per-connection memory leaks and
|
|
has caused some security issues including CVE-2008-1678 and
|
|
CVE-2009-4355.
|
|
[Steve Henson]
|
|
|
|
*) Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
|
|
change when encrypting or decrypting.
|
|
[Bodo Moeller]
|
|
|
|
*) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
|
|
connect and renegotiate with servers which do not support RI.
|
|
Until RI is more widely deployed this option is enabled by default.
|
|
[Steve Henson]
|
|
|
|
*) Add "missing" ssl ctrls to clear options and mode.
|
|
[Steve Henson]
|
|
|
|
*) If client attempts to renegotiate and doesn't support RI respond with
|
|
a no_renegotiation alert as required by RFC5746. Some renegotiating
|
|
TLS clients will continue a connection gracefully when they receive
|
|
the alert. Unfortunately OpenSSL mishandled this alert and would hang
|
|
waiting for a server hello which it will never receive. Now we treat a
|
|
received no_renegotiation alert as a fatal error. This is because
|
|
applications requesting a renegotiation might well expect it to succeed
|
|
and would have no code in place to handle the server denying it so the
|
|
only safe thing to do is to terminate the connection.
|
|
[Steve Henson]
|
|
|
|
*) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
|
|
peer supports secure renegotiation and 0 otherwise. Print out peer
|
|
renegotiation support in s_client/s_server.
|
|
[Steve Henson]
|
|
|
|
*) Replace the highly broken and deprecated SPKAC certification method with
|
|
the updated NID creation version. This should correctly handle UTF8.
|
|
[Steve Henson]
|
|
|
|
*) Implement RFC5746. Re-enable renegotiation but require the extension
|
|
as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
|
|
turns out to be a bad idea. It has been replaced by
|
|
SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
|
|
SSL_CTX_set_options(). This is really not recommended unless you
|
|
know what you are doing.
|
|
[Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson]
|
|
|
|
*) Fixes to stateless session resumption handling. Use initial_ctx when
|
|
issuing and attempting to decrypt tickets in case it has changed during
|
|
servername handling. Use a non-zero length session ID when attempting
|
|
stateless session resumption: this makes it possible to determine if
|
|
a resumption has occurred immediately after receiving server hello
|
|
(several places in OpenSSL subtly assume this) instead of later in
|
|
the handshake.
|
|
[Steve Henson]
|
|
|
|
*) The functions ENGINE_ctrl(), OPENSSL_isservice(),
|
|
CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
|
|
fixes for a few places where the return code is not checked
|
|
correctly.
|
|
[Julia Lawall <julia@diku.dk>]
|
|
|
|
*) Add --strict-warnings option to Configure script to include devteam
|
|
warnings in other configurations.
|
|
[Steve Henson]
|
|
|
|
*) Add support for --libdir option and LIBDIR variable in makefiles. This
|
|
makes it possible to install openssl libraries in locations which
|
|
have names other than "lib", for example "/usr/lib64" which some
|
|
systems need.
|
|
[Steve Henson, based on patch from Jeremy Utley]
|
|
|
|
*) Don't allow the use of leading 0x80 in OIDs. This is a violation of
|
|
X690 8.9.12 and can produce some misleading textual output of OIDs.
|
|
[Steve Henson, reported by Dan Kaminsky]
|
|
|
|
*) Delete MD2 from algorithm tables. This follows the recommendation in
|
|
several standards that it is not used in new applications due to
|
|
several cryptographic weaknesses. For binary compatibility reasons
|
|
the MD2 API is still compiled in by default.
|
|
[Steve Henson]
|
|
|
|
*) Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
|
|
and restored.
|
|
[Steve Henson]
|
|
|
|
*) Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
|
|
OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
|
|
clash.
|
|
[Guenter <lists@gknw.net>]
|
|
|
|
*) Fix the server certificate chain building code to use X509_verify_cert(),
|
|
it used to have an ad-hoc builder which was unable to cope with anything
|
|
other than a simple chain.
|
|
[David Woodhouse <dwmw2@infradead.org>, Steve Henson]
|
|
|
|
*) Don't check self signed certificate signatures in X509_verify_cert()
|
|
by default (a flag can override this): it just wastes time without
|
|
adding any security. As a useful side effect self signed root CAs
|
|
with non-FIPS digests are now usable in FIPS mode.
|
|
[Steve Henson]
|
|
|
|
*) In dtls1_process_out_of_seq_message() the check if the current message
|
|
is already buffered was missing. For every new message was memory
|
|
allocated, allowing an attacker to perform an denial of service attack
|
|
with sending out of seq handshake messages until there is no memory
|
|
left. Additionally every future messege was buffered, even if the
|
|
sequence number made no sense and would be part of another handshake.
|
|
So only messages with sequence numbers less than 10 in advance will be
|
|
buffered. (CVE-2009-1378)
|
|
[Robin Seggelmann, discovered by Daniel Mentz]
|
|
|
|
*) Records are buffered if they arrive with a future epoch to be
|
|
processed after finishing the corresponding handshake. There is
|
|
currently no limitation to this buffer allowing an attacker to perform
|
|
a DOS attack with sending records with future epochs until there is no
|
|
memory left. This patch adds the pqueue_size() function to determine
|
|
the size of a buffer and limits the record buffer to 100 entries.
|
|
(CVE-2009-1377)
|
|
[Robin Seggelmann, discovered by Daniel Mentz]
|
|
|
|
*) Keep a copy of frag->msg_header.frag_len so it can be used after the
|
|
parent structure is freed. (CVE-2009-1379)
|
|
[Daniel Mentz]
|
|
|
|
*) Handle non-blocking I/O properly in SSL_shutdown() call.
|
|
[Darryl Miles <darryl-mailinglists@netbauds.net>]
|
|
|
|
*) Add 2.5.4.* OIDs
|
|
[Ilya O. <vrghost@gmail.com>]
|
|
|
|
Changes between 0.9.8k and 0.9.8l [5 Nov 2009]
|
|
|
|
*) Disable renegotiation completely - this fixes a severe security
|
|
problem (CVE-2009-3555) at the cost of breaking all
|
|
renegotiation. Renegotiation can be re-enabled by setting
|
|
SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
|
|
run-time. This is really not recommended unless you know what
|
|
you're doing.
|
|
[Ben Laurie]
|
|
|
|
Changes between 0.9.8j and 0.9.8k [25 Mar 2009]
|
|
|
|
*) Don't set val to NULL when freeing up structures, it is freed up by
|
|
underlying code. If sizeof(void *) > sizeof(long) this can result in
|
|
zeroing past the valid field. (CVE-2009-0789)
|
|
[Paolo Ganci <Paolo.Ganci@AdNovum.CH>]
|
|
|
|
*) Fix bug where return value of CMS_SignerInfo_verify_content() was not
|
|
checked correctly. This would allow some invalid signed attributes to
|
|
appear to verify correctly. (CVE-2009-0591)
|
|
[Ivan Nestlerode <inestlerode@us.ibm.com>]
|
|
|
|
*) Reject UniversalString and BMPString types with invalid lengths. This
|
|
prevents a crash in ASN1_STRING_print_ex() which assumes the strings have
|
|
a legal length. (CVE-2009-0590)
|
|
[Steve Henson]
|
|
|
|
*) Set S/MIME signing as the default purpose rather than setting it
|
|
unconditionally. This allows applications to override it at the store
|
|
level.
|
|
[Steve Henson]
|
|
|
|
*) Permit restricted recursion of ASN1 strings. This is needed in practice
|
|
to handle some structures.
|
|
[Steve Henson]
|
|
|
|
*) Improve efficiency of mem_gets: don't search whole buffer each time
|
|
for a '\n'
|
|
[Jeremy Shapiro <jnshapir@us.ibm.com>]
|
|
|
|
*) New -hex option for openssl rand.
|
|
[Matthieu Herrb]
|
|
|
|
*) Print out UTF8String and NumericString when parsing ASN1.
|
|
[Steve Henson]
|
|
|
|
*) Support NumericString type for name components.
|
|
[Steve Henson]
|
|
|
|
*) Allow CC in the environment to override the automatically chosen
|
|
compiler. Note that nothing is done to ensure flags work with the
|
|
chosen compiler.
|
|
[Ben Laurie]
|
|
|
|
Changes between 0.9.8i and 0.9.8j [07 Jan 2009]
|
|
|
|
*) Properly check EVP_VerifyFinal() and similar return values
|
|
(CVE-2008-5077).
|
|
[Ben Laurie, Bodo Moeller, Google Security Team]
|
|
|
|
*) Enable TLS extensions by default.
|
|
[Ben Laurie]
|
|
|
|
*) Allow the CHIL engine to be loaded, whether the application is
|
|
multithreaded or not. (This does not release the developer from the
|
|
obligation to set up the dynamic locking callbacks.)
|
|
[Sander Temme <sander@temme.net>]
|
|
|
|
*) Use correct exit code if there is an error in dgst command.
|
|
[Steve Henson; problem pointed out by Roland Dirlewanger]
|
|
|
|
*) Tweak Configure so that you need to say "experimental-jpake" to enable
|
|
JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
|
|
[Bodo Moeller]
|
|
|
|
*) Add experimental JPAKE support, including demo authentication in
|
|
s_client and s_server.
|
|
[Ben Laurie]
|
|
|
|
*) Set the comparison function in v3_addr_canonize().
|
|
[Rob Austein <sra@hactrn.net>]
|
|
|
|
*) Add support for XMPP STARTTLS in s_client.
|
|
[Philip Paeps <philip@freebsd.org>]
|
|
|
|
*) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
|
|
to ensure that even with this option, only ciphersuites in the
|
|
server's preference list will be accepted. (Note that the option
|
|
applies only when resuming a session, so the earlier behavior was
|
|
just about the algorithm choice for symmetric cryptography.)
|
|
[Bodo Moeller]
|
|
|
|
Changes between 0.9.8h and 0.9.8i [15 Sep 2008]
|
|
|
|
*) Fix NULL pointer dereference if a DTLS server received
|
|
ChangeCipherSpec as first record (CVE-2009-1386).
|
|
[PR #1679]
|
|
|
|
*) Fix a state transition in s3_srvr.c and d1_srvr.c
|
|
(was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
|
|
[Nagendra Modadugu]
|
|
|
|
*) The fix in 0.9.8c that supposedly got rid of unsafe
|
|
double-checked locking was incomplete for RSA blinding,
|
|
addressing just one layer of what turns out to have been
|
|
doubly unsafe triple-checked locking.
|
|
|
|
So now fix this for real by retiring the MONT_HELPER macro
|
|
in crypto/rsa/rsa_eay.c.
|
|
|
|
[Bodo Moeller; problem pointed out by Marius Schilder]
|
|
|
|
*) Various precautionary measures:
|
|
|
|
- Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
|
|
|
|
- Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
|
|
(NB: This would require knowledge of the secret session ticket key
|
|
to exploit, in which case you'd be SOL either way.)
|
|
|
|
- Change bn_nist.c so that it will properly handle input BIGNUMs
|
|
outside the expected range.
|
|
|
|
- Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
|
|
builds.
|
|
|
|
[Neel Mehta, Bodo Moeller]
|
|
|
|
*) Allow engines to be "soft loaded" - i.e. optionally don't die if
|
|
the load fails. Useful for distros.
|
|
[Ben Laurie and the FreeBSD team]
|
|
|
|
*) Add support for Local Machine Keyset attribute in PKCS#12 files.
|
|
[Steve Henson]
|
|
|
|
*) Fix BN_GF2m_mod_arr() top-bit cleanup code.
|
|
[Huang Ying]
|
|
|
|
*) Expand ENGINE to support engine supplied SSL client certificate functions.
|
|
|
|
This work was sponsored by Logica.
|
|
[Steve Henson]
|
|
|
|
*) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
|
|
keystores. Support for SSL/TLS client authentication too.
|
|
Not compiled unless enable-capieng specified to Configure.
|
|
|
|
This work was sponsored by Logica.
|
|
[Steve Henson]
|
|
|
|
*) Fix bug in X509_ATTRIBUTE creation: dont set attribute using
|
|
ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
|
|
attribute creation routines such as certifcate requests and PKCS#12
|
|
files.
|
|
[Steve Henson]
|
|
|
|
Changes between 0.9.8g and 0.9.8h [28 May 2008]
|
|
|
|
*) Fix flaw if 'Server Key exchange message' is omitted from a TLS
|
|
handshake which could lead to a cilent crash as found using the
|
|
Codenomicon TLS test suite (CVE-2008-1672)
|
|
[Steve Henson, Mark Cox]
|
|
|
|
*) Fix double free in TLS server name extensions which could lead to
|
|
a remote crash found by Codenomicon TLS test suite (CVE-2008-0891)
|
|
[Joe Orton]
|
|
|
|
*) Clear error queue in SSL_CTX_use_certificate_chain_file()
|
|
|
|
Clear the error queue to ensure that error entries left from
|
|
older function calls do not interfere with the correct operation.
|
|
[Lutz Jaenicke, Erik de Castro Lopo]
|
|
|
|
*) Remove root CA certificates of commercial CAs:
|
|
|
|
The OpenSSL project does not recommend any specific CA and does not
|
|
have any policy with respect to including or excluding any CA.
|
|
Therefore it does not make any sense to ship an arbitrary selection
|
|
of root CA certificates with the OpenSSL software.
|
|
[Lutz Jaenicke]
|
|
|
|
*) RSA OAEP patches to fix two separate invalid memory reads.
|
|
The first one involves inputs when 'lzero' is greater than
|
|
'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
|
|
before the beginning of from). The second one involves inputs where
|
|
the 'db' section contains nothing but zeroes (there is a one-byte
|
|
invalid read after the end of 'db').
|
|
[Ivan Nestlerode <inestlerode@us.ibm.com>]
|
|
|
|
*) Partial backport from 0.9.9-dev:
|
|
|
|
Introduce bn_mul_mont (dedicated Montgomery multiplication
|
|
procedure) as a candidate for BIGNUM assembler implementation.
|
|
While 0.9.9-dev uses assembler for various architectures, only
|
|
x86_64 is available by default here in the 0.9.8 branch, and
|
|
32-bit x86 is available through a compile-time setting.
|
|
|
|
To try the 32-bit x86 assembler implementation, use Configure
|
|
option "enable-montasm" (which exists only for this backport).
|
|
|
|
As "enable-montasm" for 32-bit x86 disclaims code stability
|
|
anyway, in this constellation we activate additional code
|
|
backported from 0.9.9-dev for further performance improvements,
|
|
namely BN_from_montgomery_word. (To enable this otherwise,
|
|
e.g. x86_64, try "-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD".)
|
|
|
|
[Andy Polyakov (backport partially by Bodo Moeller)]
|
|
|
|
*) Add TLS session ticket callback. This allows an application to set
|
|
TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
|
|
values. This is useful for key rollover for example where several key
|
|
sets may exist with different names.
|
|
[Steve Henson]
|
|
|
|
*) Reverse ENGINE-internal logic for caching default ENGINE handles.
|
|
This was broken until now in 0.9.8 releases, such that the only way
|
|
a registered ENGINE could be used (assuming it initialises
|
|
successfully on the host) was to explicitly set it as the default
|
|
for the relevant algorithms. This is in contradiction with 0.9.7
|
|
behaviour and the documentation. With this fix, when an ENGINE is
|
|
registered into a given algorithm's table of implementations, the
|
|
'uptodate' flag is reset so that auto-discovery will be used next
|
|
time a new context for that algorithm attempts to select an
|
|
implementation.
|
|
[Ian Lister (tweaked by Geoff Thorpe)]
|
|
|
|
*) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
|
|
implemention in the following ways:
|
|
|
|
Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
|
|
hard coded.
|
|
|
|
Lack of BER streaming support means one pass streaming processing is
|
|
only supported if data is detached: setting the streaming flag is
|
|
ignored for embedded content.
|
|
|
|
CMS support is disabled by default and must be explicitly enabled
|
|
with the enable-cms configuration option.
|
|
[Steve Henson]
|
|
|
|
*) Update the GMP engine glue to do direct copies between BIGNUM and
|
|
mpz_t when openssl and GMP use the same limb size. Otherwise the
|
|
existing "conversion via a text string export" trick is still used.
|
|
[Paul Sheer <paulsheer@gmail.com>]
|
|
|
|
*) Zlib compression BIO. This is a filter BIO which compressed and
|
|
uncompresses any data passed through it.
|
|
[Steve Henson]
|
|
|
|
*) Add AES_wrap_key() and AES_unwrap_key() functions to implement
|
|
RFC3394 compatible AES key wrapping.
|
|
[Steve Henson]
|
|
|
|
*) Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
|
|
sets string data without copying. X509_ALGOR_set0() and
|
|
X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
|
|
data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
|
|
from an X509_ATTRIBUTE structure optionally checking it occurs only
|
|
once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
|
|
data.
|
|
[Steve Henson]
|
|
|
|
*) Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
|
|
to get the expected BN_FLG_CONSTTIME behavior.
|
|
[Bodo Moeller (Google)]
|
|
|
|
*) Netware support:
|
|
|
|
- fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
|
|
- fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
|
|
- added some more tests to do_tests.pl
|
|
- fixed RunningProcess usage so that it works with newer LIBC NDKs too
|
|
- removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
|
|
- added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
|
|
netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
|
|
- various changes to netware.pl to enable gcc-cross builds on Win32
|
|
platform
|
|
- changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
|
|
- various changes to fix missing prototype warnings
|
|
- fixed x86nasm.pl to create correct asm files for NASM COFF output
|
|
- added AES, WHIRLPOOL and CPUID assembler code to build files
|
|
- added missing AES assembler make rules to mk1mf.pl
|
|
- fixed order of includes in apps/ocsp.c so that e_os.h settings apply
|
|
[Guenter Knauf <eflash@gmx.net>]
|
|
|
|
*) Implement certificate status request TLS extension defined in RFC3546.
|
|
A client can set the appropriate parameters and receive the encoded
|
|
OCSP response via a callback. A server can query the supplied parameters
|
|
and set the encoded OCSP response in the callback. Add simplified examples
|
|
to s_client and s_server.
|
|
[Steve Henson]
|
|
|
|
Changes between 0.9.8f and 0.9.8g [19 Oct 2007]
|
|
|
|
*) Fix various bugs:
|
|
+ Binary incompatibility of ssl_ctx_st structure
|
|
+ DTLS interoperation with non-compliant servers
|
|
+ Don't call get_session_cb() without proposed session
|
|
+ Fix ia64 assembler code
|
|
[Andy Polyakov, Steve Henson]
|
|
|
|
Changes between 0.9.8e and 0.9.8f [11 Oct 2007]
|
|
|
|
*) DTLS Handshake overhaul. There were longstanding issues with
|
|
OpenSSL DTLS implementation, which were making it impossible for
|
|
RFC 4347 compliant client to communicate with OpenSSL server.
|
|
Unfortunately just fixing these incompatibilities would "cut off"
|
|
pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
|
|
server keeps tolerating non RFC compliant syntax. The opposite is
|
|
not true, 0.9.8f client can not communicate with earlier server.
|
|
This update even addresses CVE-2007-4995.
|
|
[Andy Polyakov]
|
|
|
|
*) Changes to avoid need for function casts in OpenSSL: some compilers
|
|
(gcc 4.2 and later) reject their use.
|
|
[Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
|
|
Steve Henson]
|
|
|
|
*) Add RFC4507 support to OpenSSL. This includes the corrections in
|
|
RFC4507bis. The encrypted ticket format is an encrypted encoded
|
|
SSL_SESSION structure, that way new session features are automatically
|
|
supported.
|
|
|
|
If a client application caches session in an SSL_SESSION structure
|
|
support is transparent because tickets are now stored in the encoded
|
|
SSL_SESSION.
|
|
|
|
The SSL_CTX structure automatically generates keys for ticket
|
|
protection in servers so again support should be possible
|
|
with no application modification.
|
|
|
|
If a client or server wishes to disable RFC4507 support then the option
|
|
SSL_OP_NO_TICKET can be set.
|
|
|
|
Add a TLS extension debugging callback to allow the contents of any client
|
|
or server extensions to be examined.
|
|
|
|
This work was sponsored by Google.
|
|
[Steve Henson]
|
|
|
|
*) Add initial support for TLS extensions, specifically for the server_name
|
|
extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
|
|
have new members for a host name. The SSL data structure has an
|
|
additional member SSL_CTX *initial_ctx so that new sessions can be
|
|
stored in that context to allow for session resumption, even after the
|
|
SSL has been switched to a new SSL_CTX in reaction to a client's
|
|
server_name extension.
|
|
|
|
New functions (subject to change):
|
|
|
|
SSL_get_servername()
|
|
SSL_get_servername_type()
|
|
SSL_set_SSL_CTX()
|
|
|
|
New CTRL codes and macros (subject to change):
|
|
|
|
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
|
|
- SSL_CTX_set_tlsext_servername_callback()
|
|
SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
|
|
- SSL_CTX_set_tlsext_servername_arg()
|
|
SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
|
|
|
|
openssl s_client has a new '-servername ...' option.
|
|
|
|
openssl s_server has new options '-servername_host ...', '-cert2 ...',
|
|
'-key2 ...', '-servername_fatal' (subject to change). This allows
|
|
testing the HostName extension for a specific single host name ('-cert'
|
|
and '-key' remain fallbacks for handshakes without HostName
|
|
negotiation). If the unrecognized_name alert has to be sent, this by
|
|
default is a warning; it becomes fatal with the '-servername_fatal'
|
|
option.
|
|
|
|
[Peter Sylvester, Remy Allais, Christophe Renou, Steve Henson]
|
|
|
|
*) Add AES and SSE2 assembly language support to VC++ build.
|
|
[Steve Henson]
|
|
|
|
*) Mitigate attack on final subtraction in Montgomery reduction.
|
|
[Andy Polyakov]
|
|
|
|
*) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
|
|
(which previously caused an internal error).
|
|
[Bodo Moeller]
|
|
|
|
*) Squeeze another 10% out of IGE mode when in != out.
|
|
[Ben Laurie]
|
|
|
|
*) AES IGE mode speedup.
|
|
[Dean Gaudet (Google)]
|
|
|
|
*) Add the Korean symmetric 128-bit cipher SEED (see
|
|
http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
|
|
add SEED ciphersuites from RFC 4162:
|
|
|
|
TLS_RSA_WITH_SEED_CBC_SHA = "SEED-SHA"
|
|
TLS_DHE_DSS_WITH_SEED_CBC_SHA = "DHE-DSS-SEED-SHA"
|
|
TLS_DHE_RSA_WITH_SEED_CBC_SHA = "DHE-RSA-SEED-SHA"
|
|
TLS_DH_anon_WITH_SEED_CBC_SHA = "ADH-SEED-SHA"
|
|
|
|
To minimize changes between patchlevels in the OpenSSL 0.9.8
|
|
series, SEED remains excluded from compilation unless OpenSSL
|
|
is configured with 'enable-seed'.
|
|
[KISA, Bodo Moeller]
|
|
|
|
*) Mitigate branch prediction attacks, which can be practical if a
|
|
single processor is shared, allowing a spy process to extract
|
|
information. For detailed background information, see
|
|
http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
|
|
J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
|
|
and Necessary Software Countermeasures"). The core of the change
|
|
are new versions BN_div_no_branch() and
|
|
BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
|
|
respectively, which are slower, but avoid the security-relevant
|
|
conditional branches. These are automatically called by BN_div()
|
|
and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
|
|
of the input BIGNUMs. Also, BN_is_bit_set() has been changed to
|
|
remove a conditional branch.
|
|
|
|
BN_FLG_CONSTTIME is the new name for the previous
|
|
BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
|
|
modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag
|
|
in the exponent causes BN_mod_exp_mont() to use the alternative
|
|
implementation in BN_mod_exp_mont_consttime().) The old name
|
|
remains as a deprecated alias.
|
|
|
|
Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
|
|
RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
|
|
constant-time implementations for more than just exponentiation.
|
|
Here too the old name is kept as a deprecated alias.
|
|
|
|
BN_BLINDING_new() will now use BN_dup() for the modulus so that
|
|
the BN_BLINDING structure gets an independent copy of the
|
|
modulus. This means that the previous "BIGNUM *m" argument to
|
|
BN_BLINDING_new() and to BN_BLINDING_create_param() now
|
|
essentially becomes "const BIGNUM *m", although we can't actually
|
|
change this in the header file before 0.9.9. It allows
|
|
RSA_setup_blinding() to use BN_with_flags() on the modulus to
|
|
enable BN_FLG_CONSTTIME.
|
|
|
|
[Matthew D Wood (Intel Corp)]
|
|
|
|
*) In the SSL/TLS server implementation, be strict about session ID
|
|
context matching (which matters if an application uses a single
|
|
external cache for different purposes). Previously,
|
|
out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
|
|
set. This did ensure strict client verification, but meant that,
|
|
with applications using a single external cache for quite
|
|
different requirements, clients could circumvent ciphersuite
|
|
restrictions for a given session ID context by starting a session
|
|
in a different context.
|
|
[Bodo Moeller]
|
|
|
|
*) Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
|
|
a ciphersuite string such as "DEFAULT:RSA" cannot enable
|
|
authentication-only ciphersuites.
|
|
[Bodo Moeller]
|
|
|
|
*) Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
|
|
not complete and could lead to a possible single byte overflow
|
|
(CVE-2007-5135) [Ben Laurie]
|
|
|
|
Changes between 0.9.8d and 0.9.8e [23 Feb 2007]
|
|
|
|
*) Since AES128 and AES256 (and similarly Camellia128 and
|
|
Camellia256) share a single mask bit in the logic of
|
|
ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
|
|
kludge to work properly if AES128 is available and AES256 isn't
|
|
(or if Camellia128 is available and Camellia256 isn't).
|
|
[Victor Duchovni]
|
|
|
|
*) Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c
|
|
(within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters):
|
|
When a point or a seed is encoded in a BIT STRING, we need to
|
|
prevent the removal of trailing zero bits to get the proper DER
|
|
encoding. (By default, crypto/asn1/a_bitstr.c assumes the case
|
|
of a NamedBitList, for which trailing 0 bits need to be removed.)
|
|
[Bodo Moeller]
|
|
|
|
*) Have SSL/TLS server implementation tolerate "mismatched" record
|
|
protocol version while receiving ClientHello even if the
|
|
ClientHello is fragmented. (The server can't insist on the
|
|
particular protocol version it has chosen before the ServerHello
|
|
message has informed the client about his choice.)
|
|
[Bodo Moeller]
|
|
|
|
*) Add RFC 3779 support.
|
|
[Rob Austein for ARIN, Ben Laurie]
|
|
|
|
*) Load error codes if they are not already present instead of using a
|
|
static variable. This allows them to be cleanly unloaded and reloaded.
|
|
Improve header file function name parsing.
|
|
[Steve Henson]
|
|
|
|
*) extend SMTP and IMAP protocol emulation in s_client to use EHLO
|
|
or CAPABILITY handshake as required by RFCs.
|
|
[Goetz Babin-Ebell]
|
|
|
|
Changes between 0.9.8c and 0.9.8d [28 Sep 2006]
|
|
|
|
*) Introduce limits to prevent malicious keys being able to
|
|
cause a denial of service. (CVE-2006-2940)
|
|
[Steve Henson, Bodo Moeller]
|
|
|
|
*) Fix ASN.1 parsing of certain invalid structures that can result
|
|
in a denial of service. (CVE-2006-2937) [Steve Henson]
|
|
|
|
*) Fix buffer overflow in SSL_get_shared_ciphers() function.
|
|
(CVE-2006-3738) [Tavis Ormandy and Will Drewry, Google Security Team]
|
|
|
|
*) Fix SSL client code which could crash if connecting to a
|
|
malicious SSLv2 server. (CVE-2006-4343)
|
|
[Tavis Ormandy and Will Drewry, Google Security Team]
|
|
|
|
*) Since 0.9.8b, ciphersuite strings naming explicit ciphersuites
|
|
match only those. Before that, "AES256-SHA" would be interpreted
|
|
as a pattern and match "AES128-SHA" too (since AES128-SHA got
|
|
the same strength classification in 0.9.7h) as we currently only
|
|
have a single AES bit in the ciphersuite description bitmap.
|
|
That change, however, also applied to ciphersuite strings such as
|
|
"RC4-MD5" that intentionally matched multiple ciphersuites --
|
|
namely, SSL 2.0 ciphersuites in addition to the more common ones
|
|
from SSL 3.0/TLS 1.0.
|
|
|
|
So we change the selection algorithm again: Naming an explicit
|
|
ciphersuite selects this one ciphersuite, and any other similar
|
|
ciphersuite (same bitmap) from *other* protocol versions.
|
|
Thus, "RC4-MD5" again will properly select both the SSL 2.0
|
|
ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite.
|
|
|
|
Since SSL 2.0 does not have any ciphersuites for which the
|
|
128/256 bit distinction would be relevant, this works for now.
|
|
The proper fix will be to use different bits for AES128 and
|
|
AES256, which would have avoided the problems from the beginning;
|
|
however, bits are scarce, so we can only do this in a new release
|
|
(not just a patchlevel) when we can change the SSL_CIPHER
|
|
definition to split the single 'unsigned long mask' bitmap into
|
|
multiple values to extend the available space.
|
|
|
|
[Bodo Moeller]
|
|
|
|
Changes between 0.9.8b and 0.9.8c [05 Sep 2006]
|
|
|
|
*) Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
|
|
(CVE-2006-4339) [Ben Laurie and Google Security Team]
|
|
|
|
*) Add AES IGE and biIGE modes.
|
|
[Ben Laurie]
|
|
|
|
*) Change the Unix randomness entropy gathering to use poll() when
|
|
possible instead of select(), since the latter has some
|
|
undesirable limitations.
|
|
[Darryl Miles via Richard Levitte and Bodo Moeller]
|
|
|
|
*) Disable "ECCdraft" ciphersuites more thoroughly. Now special
|
|
treatment in ssl/ssl_ciph.s makes sure that these ciphersuites
|
|
cannot be implicitly activated as part of, e.g., the "AES" alias.
|
|
However, please upgrade to OpenSSL 0.9.9[-dev] for
|
|
non-experimental use of the ECC ciphersuites to get TLS extension
|
|
support, which is required for curve and point format negotiation
|
|
to avoid potential handshake problems.
|
|
[Bodo Moeller]
|
|
|
|
*) Disable rogue ciphersuites:
|
|
|
|
- SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
|
|
- SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
|
|
- SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
|
|
|
|
The latter two were purportedly from
|
|
draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
|
|
appear there.
|
|
|
|
Also deactivate the remaining ciphersuites from
|
|
draft-ietf-tls-56-bit-ciphersuites-01.txt. These are just as
|
|
unofficial, and the ID has long expired.
|
|
[Bodo Moeller]
|
|
|
|
*) Fix RSA blinding Heisenbug (problems sometimes occured on
|
|
dual-core machines) and other potential thread-safety issues.
|
|
[Bodo Moeller]
|
|
|
|
*) Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key
|
|
versions), which is now available for royalty-free use
|
|
(see http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html).
|
|
Also, add Camellia TLS ciphersuites from RFC 4132.
|
|
|
|
To minimize changes between patchlevels in the OpenSSL 0.9.8
|
|
series, Camellia remains excluded from compilation unless OpenSSL
|
|
is configured with 'enable-camellia'.
|
|
[NTT]
|
|
|
|
*) Disable the padding bug check when compression is in use. The padding
|
|
bug check assumes the first packet is of even length, this is not
|
|
necessarily true if compresssion is enabled and can result in false
|
|
positives causing handshake failure. The actual bug test is ancient
|
|
code so it is hoped that implementations will either have fixed it by
|
|
now or any which still have the bug do not support compression.
|
|
[Steve Henson]
|
|
|
|
Changes between 0.9.8a and 0.9.8b [04 May 2006]
|
|
|
|
*) When applying a cipher rule check to see if string match is an explicit
|
|
cipher suite and only match that one cipher suite if it is.
|
|
[Steve Henson]
|
|
|
|
*) Link in manifests for VC++ if needed.
|
|
[Austin Ziegler <halostatue@gmail.com>]
|
|
|
|
*) Update support for ECC-based TLS ciphersuites according to
|
|
draft-ietf-tls-ecc-12.txt with proposed changes (but without
|
|
TLS extensions, which are supported starting with the 0.9.9
|
|
branch, not in the OpenSSL 0.9.8 branch).
|
|
[Douglas Stebila]
|
|
|
|
*) New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support
|
|
opaque EVP_CIPHER_CTX handling.
|
|
[Steve Henson]
|
|
|
|
*) Fixes and enhancements to zlib compression code. We now only use
|
|
"zlib1.dll" and use the default __cdecl calling convention on Win32
|
|
to conform with the standards mentioned here:
|
|
http://www.zlib.net/DLL_FAQ.txt
|
|
Static zlib linking now works on Windows and the new --with-zlib-include
|
|
--with-zlib-lib options to Configure can be used to supply the location
|
|
of the headers and library. Gracefully handle case where zlib library
|
|
can't be loaded.
|
|
[Steve Henson]
|
|
|
|
*) Several fixes and enhancements to the OID generation code. The old code
|
|
sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't
|
|
handle numbers larger than ULONG_MAX, truncated printing and had a
|
|
non standard OBJ_obj2txt() behaviour.
|
|
[Steve Henson]
|
|
|
|
*) Add support for building of engines under engine/ as shared libraries
|
|
under VC++ build system.
|
|
[Steve Henson]
|
|
|
|
*) Corrected the numerous bugs in the Win32 path splitter in DSO.
|
|
Hopefully, we will not see any false combination of paths any more.
|
|
[Richard Levitte]
|
|
|
|
Changes between 0.9.8 and 0.9.8a [11 Oct 2005]
|
|
|
|
*) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
|
|
(part of SSL_OP_ALL). This option used to disable the
|
|
countermeasure against man-in-the-middle protocol-version
|
|
rollback in the SSL 2.0 server implementation, which is a bad
|
|