Do not resume a session if the negotiated protocol version does not match
the session's version (server).
See also BoringSSL's commit bdf5e72f50e25f0e45e825c156168766d8442dde.
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
(cherry picked from commit 9e189b9dc1
)
This commit is contained in:
parent
249a3e362f
commit
7fc5f4f117
6
CHANGES
6
CHANGES
@ -4,6 +4,12 @@
|
|||||||
|
|
||||||
Changes between 1.0.1j and 1.0.1k [xx XXX xxxx]
|
Changes between 1.0.1j and 1.0.1k [xx XXX xxxx]
|
||||||
|
|
||||||
|
*) 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
|
*) Tighten handling of the ChangeCipherSpec (CCS) message: reject
|
||||||
early CCS messages during renegotiation. (Note that because
|
early CCS messages during renegotiation. (Note that because
|
||||||
renegotiation is encrypted, this early CCS was not exploitable.)
|
renegotiation is encrypted, this early CCS was not exploitable.)
|
||||||
|
@ -1051,7 +1051,16 @@ int ssl3_get_client_hello(SSL *s)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
i=ssl_get_prev_session(s, p, j, d + n);
|
i=ssl_get_prev_session(s, p, j, d + n);
|
||||||
if (i == 1)
|
/*
|
||||||
|
* Only resume if the session's version matches the negotiated
|
||||||
|
* version.
|
||||||
|
* RFC 5246 does not provide much useful advice on resumption
|
||||||
|
* with a different protocol version. It doesn't forbid it but
|
||||||
|
* the sanity of such behaviour would be questionable.
|
||||||
|
* In practice, clients do not accept a version mismatch and
|
||||||
|
* will abort the handshake with an error.
|
||||||
|
*/
|
||||||
|
if (i == 1 && s->version == s->session->ssl_version)
|
||||||
{ /* previous session */
|
{ /* previous session */
|
||||||
s->hit=1;
|
s->hit=1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user