Since the patch only concerns DH key parameters >= 1024 bits, does that
mean that exchanges using Elliptic Curve DH (which use much smaller key
sizes than 1024 bits) are not affected by this issue?

-Bryan



On Tue, Jul 15, 2014 at 7:11 AM, Willy Tarreau <[email protected]> wrote:

> Hi Rémi,
>
> On Tue, Jul 15, 2014 at 11:40:29AM +0200, Remi Gacogne wrote:
> >
> > Hi,
> >
> > It was recently reported to the Apache HTTPd dev mailing list [1] that
> > the DH * value returned by the callback set with
> > SSL_CTX_set_tmp_dh_callback() is not freed by OpenSSL but must be
> > tracked by the application and freed when no longer needed, whenever
> > that is. Unfortunately this behavior is not clearly documented and the
> > example included in the documentation [2] doesn't do that.
>
> Quite weird indeed.
>
> > As a result, the patch I submitted earlier in haproxy 1.5 leads haproxy
> > to leak memory for SSL/TLS connections using Diffie Hellman Ephemeral
> > key exchange, as the DH * struct holding the DH parameters is not freed
> > by OpenSSL.
> >
> > This patch fixes the leak by allocating the DH * structs holding the DH
> > parameters once, at configuration time, as it has been done in Apache
> > HTTPd. I am not very satisfied by the fact that it uses 4 file-scope
> > variables, but I didn't see where else to store the DH parameters.
> > Willy, Emeric, do you have any comment?
>
> Don't worry for a few extra static variables, especially for whatever
> relates to configuration (which is the case here). Your patch is fine,
> I've applied it to both 1.5 and 1.6!
>
> > I am sorry I didn't catch that earlier.
>
> You must not be sorry. Nobody could blame you for not figuring all of
> openssl's tricks at first glance! We don't want to claim we have no bugs,
> we just want them to be fixed quickly, that's exactly what you did, so
> that's perfect :-)
>
> Thanks!
> Willy
>
>
>

Reply via email to