提交 206310c3 编写于 作者: D Dr. Stephen Henson

Fix bug in CVE-2011-4619: check we have really received a client hello

before rejecting multiple SGC restarts.
上级 58631637
...@@ -548,6 +548,13 @@ ...@@ -548,6 +548,13 @@
Add command line options to s_client/s_server. Add command line options to s_client/s_server.
[Steve Henson] [Steve Henson]
Changes between 1.0.0g and 1.0.0h [xx XXX xxxx]
*) 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] Changes between 1.0.0f and 1.0.0g [18 Jan 2012]
*) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109. *) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
......
...@@ -873,14 +873,6 @@ int ssl3_check_client_hello(SSL *s) ...@@ -873,14 +873,6 @@ int ssl3_check_client_hello(SSL *s)
int ok; int ok;
long n; long n;
/* We only allow the client to restart the handshake once per
* negotiation. */
if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE)
{
SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS);
return -1;
}
/* this function is called when we really expect a Certificate message, /* this function is called when we really expect a Certificate message,
* so permit appropriate message length */ * so permit appropriate message length */
n=s->method->ssl_get_message(s, n=s->method->ssl_get_message(s,
...@@ -893,6 +885,13 @@ int ssl3_check_client_hello(SSL *s) ...@@ -893,6 +885,13 @@ int ssl3_check_client_hello(SSL *s)
s->s3->tmp.reuse_message = 1; s->s3->tmp.reuse_message = 1;
if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO) if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO)
{ {
/* We only allow the client to restart the handshake once per
* negotiation. */
if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE)
{
SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS);
return -1;
}
/* Throw away what we have done so far in the current handshake, /* Throw away what we have done so far in the current handshake,
* which will now be aborted. (A full SSL_clear would be too much.) */ * which will now be aborted. (A full SSL_clear would be too much.) */
#ifndef OPENSSL_NO_DH #ifndef OPENSSL_NO_DH
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册