A memory leak can occur in dtls1_buffer_record if either of the calls to
authorMatt Caswell <matt@openssl.org>
Wed, 7 Jan 2015 14:18:13 +0000 (14:18 +0000)
committerMatt Caswell <matt@openssl.org>
Thu, 8 Jan 2015 15:46:42 +0000 (15:46 +0000)
commit7c6a3cf2375f5881ef3f3a58ac0fbd0b4663abd1
tree2160fa1b9bdbbae772ac0e4772a8a5b58ea2a5cc
parentbe3fb8d15dd5a233eab0c454677d538e64d17f82
A memory leak can occur in dtls1_buffer_record if either of the calls to
ssl3_setup_buffers or pqueue_insert fail. The former will fail if there is a
malloc failure, whilst the latter will fail if attempting to add a duplicate
record to the queue. This should never happen because duplicate records should
be detected and dropped before any attempt to add them to the queue.
Unfortunately records that arrive that are for the next epoch are not being
recorded correctly, and therefore replays are not being detected.
Additionally, these "should not happen" failures that can occur in
dtls1_buffer_record are not being treated as fatal and therefore an attacker
could exploit this by sending repeated replay records for the next epoch,
eventually causing a DoS through memory exhaustion.

Thanks to Chris Mueller for reporting this issue and providing initial
analysis and a patch. Further analysis and the final patch was performed by
Matt Caswell from the OpenSSL development team.

CVE-2015-0206

Reviewed-by: Dr Stephen Henson <steve@openssl.org>
(cherry picked from commit 652ff0f4796eecd8729b4690f2076d1c7ccb2862)
ssl/d1_pkt.c