Survey Paper On Openssl
Survey Paper On Openssl
Introduction
OpenSSL was initially released and intended to provide users with an open-source library
that supported secure communications against eavesdropping. The open-source implementation
of the SSL and TLS protocols implements basic cryptographic functions that support multiple
computer languages. Because OpenSSL was so vastly implemented, the vulnerabilities
discovered had and currently still have the potential of affecting millions of people.
It is well known and documented that the Heartbleed bug (CVE-2014-0160) was by far
one of the most significant vulnerability discoveries that identified how bad the design and
coding practices really were within OpenSSL. Within this paper, we will identify, summarize,
and analyze more recent vulnerabilities discovered the OpenSSL library.
Related Work
Over the years, OpenSSL has been subjected to an increased number of vulnerabilities.
One could argue that the primary rational for the poor design, coding, and documentation is due
to the lack of dedicated developers. I believe, coding is like art and written in ways that differ
from developer to developer. Much like a painter that is painting a picture. Not every painter will
use the same techniques, but could still accomplish the intent of what is represented. Because
there are multiple developers that contribute to the code, we see many ways that code is being
written and executed. The image below is a screenshot of the increased number of vulnerabilities
that has transpired over the years. (MITRE, 2016, p. 1)
Vulnerability Trends Over Time
3
When reviewing the different vulnerabilities, I decided to use the Common Vulnerabilities and
Exposures (CVE) advisory list. The OpenSSL website was a valuable resource that detailed the
number of recent vulnerabilities and fixes. Below I have identified four CVEs that were
categorized as High or Critical in nature.
CVE-2017-3733 (OpenSSL advisory) [High severity] 16th February 2017:
The Encrypt-Then-Mac renegotiation crash was reported to OpenSSL on January 31st, 2017. It
was determined that OpenSSL could crash because of the renegotiation handshake process. If the
Encrypt-Then-Mac extension is negotiated, but is not in the original handshake then both the
server or client could crash ("CVE-2017-3733," 2017, para. 1).
Once it was reported, Matt Caswell of the OpenSSL development team fixed and released it to
the public. The Fix exists in OpenSSL 1.1.0e, but affected 1.1.0d, 1.1.0c, 1.1.0b, 1.1.0a, 1.1.0.
CVE-2016-7054 (OpenSSL advisory) [High severity] 10th November 2016:
The ChaCha20/Poly1305 heap-buffer-overflow attack focuses on TLS connections which are
susceptible to Denial of Service (DoS) attacks. By corrupting larger payloads, OpenSSL can
crash rendering remote SSL servers inoperable ("CVE-2016-7054," 2016, para. 1). The
vulnerability is triggered by an error when verifying the MAC. If the MAC is incorrect, the
"ChaCha20_Poly1305_Cipher" function clears the buffer used to store the decrypted ciphertext
via "memset." However, an incorrect buffer pointer passed to "memset" clears the import HEAP
structure and causes the crash.
The issue was reported on September 25th, 2016 by Robert Święcki (Google Security Team) and
was fixed in OpenSSL 1.1.0c, but affected versions 1.1.0b, 1.1.0a, 1.1.0.
CVE-2016-6309 (OpenSSL advisory) [Critical severity] 26th September 2016:
Prior to release of this Common Vulnerabilities and Exposures advisory, it was determined that a
previous patch had introduced the vulnerability released in the CVE-2016-6307 update. The
“Use After Free vulnerability” is caused by an error that occurs when relocating a message with
an overlarge message size greater than 16k. Remote attackers may access the freed buffer to
crash, or potentially execute arbitrary code on vulnerable systems. OpenSSL uses structure
"ssl_st" to handle an SSL session, and includes two important buffer pointers: "init_buf" and
init_msg. "init_buf" points to the buffer used during initialization, and "init_msg" points to the
handshake message body, which is included by the buffer pointed to by "init_buf". This
vulnerability can be exploited by accessing the incorrect "init_msg" pointer, which does not
update correspondingly when "init_buf" is updated after reallocation. ("Fix Use After Free for
large message sizes," 2016, para. 2)
The issue was reported on September 23rd, 2016 by Robert Święcki (Google Security Team) and
was fixed in OpenSSL 1.1.0b, but affected version 1.1.0a.
4
patches they would have to perform. LibreSSL was solely developed as result of the Heartbleed
bug as a means to provide a more secure implementation to SSL and TLS.
6
References
OpenSSL Security Advisory . (2017). Retrieved from
https://www.openssl.org/news/secadv/20170216.txt
OpenSSL Security Advisory. (2016). Retrieved from
https://www.openssl.org/news/secadv/20161110.txt
OpenSSL Security Advisory. (2016). Retrieved from
https://www.openssl.org/news/secadv/20160926.txt
OCSP Status Request extension unbounded memory growth. (2016). Retrieved from
https://www.openssl.org/news/secadv/20160922.txt
MITRE. (2016). Vulnerability Trends Over Time. Retrieved from
http://www.cvedetails.com/product/383/Openssl-Openssl.html?vendor_id=217