{"id":66891,"date":"2016-12-12T17:54:37","date_gmt":"2016-12-13T01:54:37","guid":{"rendered":"https:\/\/securingtomorrow.mcafee.com\/?p=66891"},"modified":"2025-06-02T01:01:04","modified_gmt":"2025-06-02T08:01:04","slug":"how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309","status":"publish","type":"post","link":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/","title":{"rendered":"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309"},"content":{"rendered":"<p><em>This blog post was written by Rock Liu.<\/em><\/p>\n<p>Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects OpenSSL Version 1.1.0a. The remote attackers can cause the OpenSSL server to crash, or execute arbitrary code on it, by simply sending a handshake packet with a message larger than 16KB. To defend against these attacks we analyzed the code, wrote a proof of concept, and prepared a signature for our customers.<\/p>\n<p>OpenSSL offers the following description:<\/p>\n<p style=\"padding-left: 30px;\">\u201cThe buffer to receive messages is initialized to 16KB. If a message is received that is larger than that, then the buffer is \u2018realloc&#8217;d.\u2019 This can cause the location of the underlying buffer to change. Anything that is referring to the old location will be referring to free&#8217;d data.\u201d<\/p>\n<p>From the OpenSSL source code, we know it uses the structure &#8220;<a href=\"http:\/\/openxdas.sourceforge.net\/doxygen\/html\/structssl__st.html\">ssl_st<\/a>&#8221; to store the SSL session information. Both init_msg and init_buf are members of the structure of ssl_st. Init_msg points to the handshake message body, which is contained in the buffer pointed to by init_buf. The variable \u201cs\u201d (s-&gt;init_msg) is a pointer to the structure of ssl_st.<\/p>\n<p>From this information, we suspect a single handshake message might trigger this vulnerability.<\/p>\n<p>This is the format of a handshake packet in the TLS protocol:<\/p>\n<p>&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>| 0x16 | 0x0301 | 0x4000 | 0x0100 | 0x5560 | DATA(length=0x5560) |<\/p>\n<p>&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |&#8212;&#8212;&#8212;&#8212;&#8211;Length of challenge<\/p>\n<p>|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/p>\n<p>|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-Length handshake message<\/p>\n<p>|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;Version<\/p>\n<p>|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;Content type\uff1aHandshake<\/p>\n<p>&nbsp;<\/p>\n<p>We manually constructed a handshake packet of more than 16KB (0x5560).<\/p>\n<p><em>Figure 1: The TLS handshake packet.<\/em><\/p>\n<p>We sent the oversized handshake to a vulnerable OpenSSL server, and it crashed.<\/p>\n<p><em>Figure 2: <\/em><em>Crash information from the vulnerable OpenSSL server.<\/em><\/p>\n<p>Now for more details. First, let&#8217;s take a look at how the issue was fixed. <a href=\"https:\/\/git.openssl.org\/?p=openssl.git;a=commitdiff;h=acacbfa7565c78d2273c0b2a2e5e803f44afefeb;hp=df7681e46825d4a86df5dd73317d88923166a506\">The patch is available here.<\/a><\/p>\n<p style=\"padding-left: 30px;\">if (!SSL_IS_DTLS(s)<\/p>\n<p style=\"padding-left: 60px;\">&amp;&amp; s-&gt;s3-&gt;tmp.message_size &gt; 0<\/p>\n<p style=\"padding-left: 90px;\">&#8211;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &amp;&amp; !BUF_MEM_grow_clean(s-&gt;init_buf,<\/p>\n<p style=\"padding-left: 90px;\">&#8211;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(int)s-&gt;s3-&gt;tmp.message_size<\/p>\n<p style=\"padding-left: 90px;\">&#8211;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 + SSL3_HM_HEADER_LENGTH)) {<\/p>\n<p style=\"padding-left: 90px;\">+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &amp;&amp; !grow_init_buf(s, s-&gt;s3-&gt;tmp.message_size<\/p>\n<p style=\"padding-left: 90px;\">+\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 + SSL3_HM_HEADER_LENGTH)) {<\/p>\n<p style=\"padding-left: 60px;\">ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);<\/p>\n<p style=\"padding-left: 60px;\">SSLerr(SSL_F_READ_STATE_MACHINE, ERR_R_BUF_LIB);<\/p>\n<p style=\"padding-left: 60px;\">return SUB_STATE_ERROR;<\/p>\n<p>The lines preceded by &#8220;-&#8221; are the old code, while the &#8220;+&#8221; lines are the patch. The patch introduced a new function, grow_init_buf, to replace the function BUF_MEM_grow_clean. This new function handles the chores of buffer reallocation to make sure the buffer is big enough to hold the handshake message.<\/p>\n<p>Now let\u2019s check out the new function: grow_init_buf:<\/p>\n<p style=\"padding-left: 30px;\">static int grow_init_buf(SSL *s, size_t size) {<\/p>\n<p style=\"padding-left: 60px;\">size_t msg_offset = (char *)s-&gt;init_msg &#8211; s-&gt;init_buf-&gt;data;<\/p>\n<p style=\"padding-left: 60px;\">if (!BUF_MEM_grow_clean(s-&gt;init_buf, (int)size))<\/p>\n<p style=\"padding-left: 60px;\">return 0;<\/p>\n<p style=\"padding-left: 60px;\">if (size &lt; msg_offset)<\/p>\n<p style=\"padding-left: 60px;\">return 0;<\/p>\n<p style=\"padding-left: 60px;\">s-&gt;init_msg = s-&gt;init_buf-&gt;data + msg_offset; \u00a0\u00a0&lt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;reset the init_msg<\/p>\n<p style=\"padding-left: 60px;\">return 1;<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p>This newly introduced function internally will still call the old function BUF_MEM_grow_clean; after that it resets the init_msg (marked above).<\/p>\n<p>Next, let\u2019s look into this piece of vulnerable code with a debugger.<\/p>\n<p><em>Figure 3: The unpatched code before the control flow reaches the function BUF_MEM_grow_clean.<\/em><\/p>\n<p>Figure 3 gives us the following status information:<\/p>\n<ul>\n<li>s-&gt;init_msg=0x6c3184<\/li>\n<li>s-&gt;init_buf.data=0x6c3180<\/li>\n<li>length=0x4000 and is controllable by the attacker through the handshake message<\/li>\n<\/ul>\n<p>Now s-&gt;init_msg points to our handshake message, and is contained in the buffer pointed to by s-&gt;init_buf.data.<\/p>\n<p><em>Figure 4: The scenario in which the control flow returns only from the function BUF_MEM_grow_clean.<\/em><\/p>\n<p>At this point, apparently init_buf.data has been changed, but init_msg still points to 0x6c3184.<\/p>\n<ul>\n<li>s-&gt;init_msg=0x6c3184<\/li>\n<li>s-&gt;init_buf.data=0x6ce7c0<\/li>\n<\/ul>\n<p>Now let\u2019s step into the function BUF_MEM_grow_clean to find out why s-&gt;init_buf.data has changed:<\/p>\n<p style=\"padding-left: 30px;\">size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len)<\/p>\n<p style=\"padding-left: 30px;\">{<\/p>\n<p style=\"padding-left: 60px;\">char *ret;<\/p>\n<p style=\"padding-left: 60px;\">size_t n;<\/p>\n<p style=\"padding-left: 60px;\">if (str-&gt;length &gt;= len) {<\/p>\n<p style=\"padding-left: 90px;\">if (str-&gt;data != NULL)<\/p>\n<p style=\"padding-left: 120px;\">memset(&amp;str-&gt;data[len], 0, str-&gt;length &#8211; len);<\/p>\n<p style=\"padding-left: 90px;\">str-&gt;length = len;<\/p>\n<p style=\"padding-left: 90px;\">return (len);<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p style=\"padding-left: 60px;\">if (str-&gt;max &gt;= len) {<\/p>\n<p style=\"padding-left: 90px;\">memset(&amp;str-&gt;data[str-&gt;length], 0, len &#8211; str-&gt;length);<\/p>\n<p style=\"padding-left: 90px;\">str-&gt;length = len;<\/p>\n<p style=\"padding-left: 90px;\">return (len);<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p style=\"padding-left: 60px;\">if (len &gt; LIMIT_BEFORE_EXPANSION) {<\/p>\n<p style=\"padding-left: 90px;\">BUFerr(BUF_F_BUF_MEM_GROW_CLEAN, ERR_R_MALLOC_FAILURE);<\/p>\n<p style=\"padding-left: 90px;\">return 0;<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p style=\"padding-left: 60px;\">n = (len + 3) \/ 3 * 4;<\/p>\n<p style=\"padding-left: 60px;\">if ((str-&gt;flags &amp; BUF_MEM_FLAG_SECURE))<\/p>\n<p style=\"padding-left: 90px;\">ret = sec_alloc_realloc(str, n);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&#8212;&#8211;realloc a new memory for init_buf<\/p>\n<p style=\"padding-left: 60px;\">else<\/p>\n<p style=\"padding-left: 90px;\">ret = OPENSSL_clear_realloc(str-&gt;data, str-&gt;max, n);<\/p>\n<p style=\"padding-left: 60px;\">if (ret == NULL) {<\/p>\n<p style=\"padding-left: 90px;\">BUFerr(BUF_F_BUF_MEM_GROW_CLEAN, ERR_R_MALLOC_FAILURE);<\/p>\n<p style=\"padding-left: 90px;\">len = 0;<\/p>\n<p style=\"padding-left: 60px;\">} else {<\/p>\n<p style=\"padding-left: 90px;\">str-&gt;data = ret;<\/p>\n<p style=\"padding-left: 90px;\">str-&gt;max = n;<\/p>\n<p style=\"padding-left: 90px;\">memset(&amp;str-&gt;data[str-&gt;length], 0, len &#8211; str-&gt;length);<\/p>\n<p style=\"padding-left: 90px;\">str-&gt;length = len;<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p style=\"padding-left: 60px;\">return (len);<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p>In the preceding code, we have marked the place where memory reallocation occurs. If we can pass all three checks (&#8220;str-&gt;length &gt;= len,&#8221; &#8220;str-&gt;max &gt;= len,&#8221; and &#8220;len &gt; LIMIT_BEFORE_EXPANSION&#8221;), the function would eventually change s-&gt;init_buf.data (str-&gt;data) with the memory allocated by sec_alloc_realloc (marked).<\/p>\n<p><em>Figure 5: The values of variables str-&gt;length, len, and str-&gt;max. All three variables can be controlled by the attacker.<\/em><\/p>\n<p>From Figure 5, we can clearly see the values of variables when the program is executing inside the BUF_MEM_grow_clean:<\/p>\n<ul>\n<li>len=0x5564 (the packet\u2019s real length)<\/li>\n<li>str-&gt;length=0x4000 (the length of the handshake message)<\/li>\n<li>str-&gt;max=0x5558 (the length of challenge)<\/li>\n<\/ul>\n<p>Because we can control the value of all three variables, it is trivial to bypass all the checks and hit the sec_alloc_realloc function.<\/p>\n<p>Finally, let\u2019s see what happens inside the function sec_alloc_realloc:<\/p>\n<p style=\"padding-left: 30px;\">static char *sec_alloc_realloc(BUF_MEM *str, size_t len)<\/p>\n<p style=\"padding-left: 30px;\">{<\/p>\n<p style=\"padding-left: 60px;\">char *ret;<\/p>\n<p style=\"padding-left: 60px;\">ret = OPENSSL_secure_malloc(len);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0&lt;&#8212;&#8212;&#8212;realloc memory<\/p>\n<p style=\"padding-left: 60px;\">if (str-&gt;data != NULL) {<\/p>\n<p style=\"padding-left: 90px;\">if (ret != NULL)<\/p>\n<p style=\"padding-left: 120px;\">memcpy(ret, str-&gt;data, str-&gt;length);<\/p>\n<p style=\"padding-left: 90px;\">OPENSSL_secure_free(str-&gt;data);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;&#8212;&#8212;&#8212;free old memory<\/p>\n<p style=\"padding-left: 60px;\">}<\/p>\n<p style=\"padding-left: 60px;\">return (ret);<\/p>\n<p style=\"padding-left: 30px;\">}<\/p>\n<p>The function sec_alloc_realloc reallocates new memory, and then frees the old memory (marked). At this point, however, s-&gt;init_msg is still pointing to the old memory that has been freed by sec_alloc_realloc. Thus later when s-&gt;init_msg is referenced, the program will either crash, or in some cases be forced to access the attacker-controlled memory, which may lead to code execution.<\/p>\n<p>The patch added the new function grow_init_buf to replace the function BUF_MEM_grow_clean, and the new function will update init_msg when OpenSSL reallocates new memory to make sure it points to valid memory. For better visualization, we prepared a video to demonstrate the attack in action. (In the video, the\u00a0right window shows an OpenSSL server on port 443 with standard parameters. In the\u00a0left window, we send an\u00a0oversized handshake to the vulnerable server, which crashes.)<\/p>\n<h2>Impact<\/h2>\n<p>More than 60% of active websites use OpenSSL to transfer data. More and more sites now use OpenSSL to protect the sensitive user information, such as passwords, card IDs, and usernames. Amazon, the world\u2019s largest cloud vendor, recommend OpenSSL to its customers, and offers many <a href=\"https:\/\/aws.amazon.com\/security\/security-bulletins\/openssl-security-advisory-may-2016\/\">advisories<\/a>.<\/p>\n<p>Many of us remember the notorious OpenSSL <a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/heartbleed-vulnerability-opens-the-door-to-ssl-heartbeat-exploits\/\">Heartbleed attack,<\/a> which occurred in April 2014. At that time it was considered the Internet\u2019s worst nightmare. \u201cA survey of American adults conducted in April 2014 showed that 60% had heard about Heartbleed. Among those using the Internet, 39% had protected their online accounts, for example by changing passwords or canceling accounts; 29% believed their personal information was put at risk because of the Heartbleed bug; and 6% believed their personal information had been stolen,\u201d according to Wikipedia. From the attack and these survey results, we can see that a single critical OpenSSL issue can cause a significant impact on the Internet due to OpenSSL\u2019s wide deployment. The vulnerability, CVE-2016-6309, that we discuss in this post is different from other OpenSSL vulnerabilities. In this case, the flaw occurs when the OpenSSL server handles the handshake message, the first packet of the TLS protocol. This makes the attack easy to carry out because the attacker can send just one packet to deny access to the server without the need for authentication.<\/p>\n<p><a href=\"https:\/\/www.openssl.org\/source\/\">The update is available here.<\/a><\/p>\n<p>For McAfee Network Security Platform customers, we have released the signature 0x45c08f00 \u201cSSL: Possible OpenSSL Use-After-Free Vulnerability (CVE-2016-6309)\u201d to prevent this attack.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security&#8230;<\/p>\n","protected":false},"author":695,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[442],"tags":[4827],"coauthors":[4136],"class_list":["post-66891","post","type-post","status-publish","format-standard","hentry","category-mcafee-labs","tag-vulnerability"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309 | McAfee Blog<\/title>\n<meta name=\"description\" content=\"This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309 | McAfee Blog\" \/>\n<meta property=\"og:description\" content=\"This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/\" \/>\n<meta property=\"og:site_name\" content=\"McAfee Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/McAfee\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/McAfee\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-13T01:54:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-02T08:01:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2016-12-07-OpenSSL-vuln-2016-6309-1.png\" \/>\n<meta name=\"author\" content=\"McAfee Labs\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@McAfee_Labs\" \/>\n<meta name=\"twitter:site\" content=\"@McAfee\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"McAfee Labs\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/\"},\"author\":{\"name\":\"McAfee Labs\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/86f325fa6532a017d06d6b49a2f3b1ad\"},\"headline\":\"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309\",\"datePublished\":\"2016-12-13T01:54:37+00:00\",\"dateModified\":\"2025-06-02T08:01:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/\"},\"wordCount\":1496,\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"keywords\":[\"vulnerability\"],\"articleSection\":[\"McAfee Labs\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/\",\"name\":\"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309 | McAfee Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\"},\"datePublished\":\"2016-12-13T01:54:37+00:00\",\"dateModified\":\"2025-06-02T08:01:04+00:00\",\"description\":\"This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Other Blogs\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"McAfee Labs\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/\",\"name\":\"McAfee Blog\",\"description\":\"Internet Security News\",\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.mcafee.com\/blogs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\",\"name\":\"McAfee\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png\",\"contentUrl\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png\",\"width\":1286,\"height\":336,\"caption\":\"McAfee\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/McAfee\/\",\"https:\/\/x.com\/McAfee\",\"https:\/\/www.linkedin.com\/company\/mcafee\/\",\"https:\/\/www.youtube.com\/McAfee\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/86f325fa6532a017d06d6b49a2f3b1ad\",\"name\":\"McAfee Labs\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/image\/af947d76ffbef8521094b476cf8050c3\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Social-Media-PF-Logo-Pic-300x300-2-96x96.jpg\",\"contentUrl\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Social-Media-PF-Logo-Pic-300x300-2-96x96.jpg\",\"caption\":\"McAfee Labs\"},\"description\":\"McAfee Labs is one of the leading sources for threat research, threat intelligence, and cybersecurity thought leadership. See our blog posts below for more information.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/mcafee\/\",\"https:\/\/www.facebook.com\/McAfee\/\",\"https:\/\/x.com\/McAfee_Labs\"],\"url\":\"https:\/\/www.mcafee.com\/blogs\/author\/mcafee-labs\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309 | McAfee Blog","description":"This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309 | McAfee Blog","og_description":"This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects","og_url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/","og_site_name":"McAfee Blog","article_publisher":"https:\/\/www.facebook.com\/McAfee\/","article_author":"https:\/\/www.facebook.com\/McAfee\/","article_published_time":"2016-12-13T01:54:37+00:00","article_modified_time":"2025-06-02T08:01:04+00:00","og_image":[{"url":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2016-12-07-OpenSSL-vuln-2016-6309-1.png","type":"","width":"","height":""}],"author":"McAfee Labs","twitter_card":"summary_large_image","twitter_creator":"@McAfee_Labs","twitter_site":"@McAfee","twitter_misc":{"Written by":"McAfee Labs","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/#article","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/"},"author":{"name":"McAfee Labs","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/86f325fa6532a017d06d6b49a2f3b1ad"},"headline":"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309","datePublished":"2016-12-13T01:54:37+00:00","dateModified":"2025-06-02T08:01:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/"},"wordCount":1496,"publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"keywords":["vulnerability"],"articleSection":["McAfee Labs"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/","url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/","name":"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309 | McAfee Blog","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/#website"},"datePublished":"2016-12-13T01:54:37+00:00","dateModified":"2025-06-02T08:01:04+00:00","description":"This blog post was written by Rock Liu. Recently the OpenSSL security library gained a fix for a critical security issue (CVE-2016-6309) that affects","breadcrumb":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/how-to-protect-against-openssl-1-1-0a-vulnerability-cve-2016-6309\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mcafee.com\/blogs\/"},{"@type":"ListItem","position":2,"name":"Other Blogs","item":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/"},{"@type":"ListItem","position":3,"name":"McAfee Labs","item":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/"},{"@type":"ListItem","position":4,"name":"How to Protect Against OpenSSL 1.1.0a Vulnerability CVE-2016-6309"}]},{"@type":"WebSite","@id":"https:\/\/www.mcafee.com\/blogs\/#website","url":"https:\/\/www.mcafee.com\/blogs\/","name":"McAfee Blog","description":"Internet Security News","publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mcafee.com\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mcafee.com\/blogs\/#organization","name":"McAfee","url":"https:\/\/www.mcafee.com\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png","contentUrl":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png","width":1286,"height":336,"caption":"McAfee"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/McAfee\/","https:\/\/x.com\/McAfee","https:\/\/www.linkedin.com\/company\/mcafee\/","https:\/\/www.youtube.com\/McAfee"]},{"@type":"Person","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/86f325fa6532a017d06d6b49a2f3b1ad","name":"McAfee Labs","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/image\/af947d76ffbef8521094b476cf8050c3","url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Social-Media-PF-Logo-Pic-300x300-2-96x96.jpg","contentUrl":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Social-Media-PF-Logo-Pic-300x300-2-96x96.jpg","caption":"McAfee Labs"},"description":"McAfee Labs is one of the leading sources for threat research, threat intelligence, and cybersecurity thought leadership. See our blog posts below for more information.","sameAs":["https:\/\/www.linkedin.com\/company\/mcafee\/","https:\/\/www.facebook.com\/McAfee\/","https:\/\/x.com\/McAfee_Labs"],"url":"https:\/\/www.mcafee.com\/blogs\/author\/mcafee-labs\/"}]}},"_links":{"self":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/66891","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/users\/695"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/comments?post=66891"}],"version-history":[{"count":4,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/66891\/revisions"}],"predecessor-version":[{"id":214802,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/66891\/revisions\/214802"}],"wp:attachment":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/media?parent=66891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/categories?post=66891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/tags?post=66891"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/coauthors?post=66891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}