staticanalysis / google-security-research

Automatically exported from code.google.com/p/google-security-research
0 stars 0 forks source link

LibreSSL vulnerable to Denial-of-Service (null pointer dereference) #200

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Dear LibreSSL developers,

we identified a minor security issues in libressl-2.1.1.

Please confirm at your earliest convenience that you have received this 
vulnerability report. We will gladly work with you so you can successfully 
confirm and reproduce this issue.

Also note that this bug is NOT subject to a 90 day disclosure deadline. This is 
because exploitability is unlikely.

In the case you chose not to fix these issues please provide data points as we 
may make public all this information. In that case, we understand you will have 
no problem having this information public.

Once you have reproduced the issue, we’d appreciate to learn your expected 
timeline for a security update to be released. With any fix, please give credit 
for identifying the vulnerability to "Felix Groebert of the Google Security 
Team".

Don’t hesitate to let us know if you have any questions!

LibreSSL is vulnerable to CVE-2014-3510. From the CVE:

The ssl3_send_client_key_exchange function in s3_clnt.c in OpenSSL 0.9.8 before 
0.9.8zb, 1.0.0 before 1.0.0n, and 1.0.1 before 1.0.1i allows remote DTLS 
servers to cause a denial of service (NULL pointer dereference and client 
application crash) via a crafted handshake message in conjunction with a (1) 
anonymous DH or (2) anonymous ECDH ciphersuite.

https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff;f=ssl/s3_clnt.c;h=0a006
a75342893fd4f2fdd30f930ec220b7694fa;hp=9a94de00d8492a292995a90b3f0c45b1fe85e087;
hb=17160033765480453be0a41335fa6b833691c049;hpb=280b1f1ad12131defcd986676a8fc971
7aaa601b

Using specific anonymous cipher suites will result in a null pointer 
dereference in d1_clnt.c on line 988 and 1072 in function 
dtls1_send_client_key_exchange.

988                             if (s->session->sess_cert->peer_dh_tmp != NULL)

(gdb) p s->session->sess_cert
$1 = (struct sess_cert_st *) 0x0

We recommend to check if sess_cert is non NULL.

Cheers
Felix

Original issue reported on code.google.com by groeb...@google.com on 26 Nov 2014 at 9:22

GoogleCodeExporter commented 9 years ago
Fixed in libressl-2.1.2/ssl/s3_clnt.c

Original comment by groeb...@google.com on 12 Dec 2014 at 8:45

GoogleCodeExporter commented 9 years ago
https://github.com/robertbachmann/openbsd-libssl/commit/b813aa53947c1abcac73fbc8
649c50d42eda809a

Original comment by groeb...@google.com on 12 Dec 2014 at 8:49

GoogleCodeExporter commented 9 years ago
https://github.com/robertbachmann/openbsd-libssl/commit/3382f504da7a17b786828e0d
2808bb5685689247

Original comment by groeb...@google.com on 12 Dec 2014 at 8:50

GoogleCodeExporter commented 9 years ago

Original comment by groeb...@google.com on 12 Dec 2014 at 9:02

GoogleCodeExporter commented 9 years ago

Original comment by groeb...@google.com on 12 Dec 2014 at 9:06