New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 3 users
Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Dec 2014
Cc:



Sign in to add a comment
LibreSSL DTLS double free
Reported by groebert@google.com, Nov 26 2014 Back to list
Dear LibreSSL developers,

we identified a 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 subject to a 90 day disclosure deadline. If 90 days elapse without a broadly available patch, then the bug report will automatically become visible to the public.

We’ll be tracking this on:
[this URL]

Details:

For DTLS handshakes, in d1_srtp.c in function ssl_parse_clienthello_use_srtp_ext a stack is allocated (clnt) on line 333.

297 →       STACK_OF(SRTP_PROTECTION_PROFILE) *clnt = 0, *srvr;
333 →       clnt = sk_SRTP_PROTECTION_PROFILE_new_null();

$2 = (struct stack_st_SRTP_PROTECTION_PROFILE *) 0x7b6220

If the branch on line 352 (mki_len != len) is taken, the clnt is freed on line 356 and a subsequent goto goes to done.

After the first free, clnt is non NULL
$3 = (struct stack_st_SRTP_PROTECTION_PROFILE *) 0x7b6220

Then, under done a second free occurs, triggering the double free condition.

385 done:
386 →       if (clnt)
387 →       →       sk_SRTP_PROTECTION_PROFILE_free(clnt);

Another use of 'goto done' is not freeing the clnt. The removal of the first free on line 356 should fix the issue.

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

Cheers
Felix
 
Comment 2 by groebert@google.com, Dec 12 2014
Fixed in LibreSSL 2.1.2
Comment 3 by groebert@google.com, Dec 12 2014
Labels: -Restrict-View-Commit Fixed-2014-Dec-08
Owner: groebert@google.com
Status: Fixed
Sign in to add a comment