Heartbleed - Wikipedia, the Free Encyclopedia Heartbleed from Wikipedia, the Free Encyclopedia
Total Page:16
File Type:pdf, Size:1020Kb
4/14/2014 Heartbleed - Wikipedia, the free encyclopedia Heartbleed From Wikipedia, the free encyclopedia Heartbleed is a security bug in the open-source OpenSSL cryptography library, widely used to implement the Internet's Transport Layer Security (TLS) protocol. This vulnerability is due to a missing bounds check in the handling of the Transport Layer Security (TLS) heartbeat extension.[3] A fixed version of OpenSSL was released on April 7, 2014, at the same time as Heartbleed was publicly disclosed. At that time, some 17 percent (around half a million) of the Internet's secure web servers certified by trusted authorities were believed to be vulnerable to the attack, allowing theft of the servers' private keys and users' session cookies and passwords.[4][5][6][7][8] The Electronic Frontier Foundation,[9] Ars Technica,[10] and Bruce Schneier[11] all deemed the Heartbleed bug "catastrophic". Forbes cybersecurity columnist Joseph Steinberg described the bug as potentially "the worst vulnerability found (at least in terms of its potential impact) since commercial traffic began to flow on the Internet", implying that it is worse than the Israeli spyware/malware Logo representing Heartbleed. [12] pandemic of Stuxnet and Duqu combined. Finland's Codenomicon company gave Heartbleed both a name and a Heartbleed is registered in the Common Vulnerabilities and Exposures logo, contributing to public awareness system as CVE-2014-0160.[13] of the issue.[1][2] Contents 1 History 1.1 Appearance 1.2 Resolution 1.3 Possible exploitation prior to disclosure 1.4 Reported exploitation subsequent to disclosure 2 Behavior 2.1 Impact 2.2 Affected OpenSSL versions 2.2.1 Vulnerable Program and Function 2.3 Patch 2.4 Vulnerability testing services 3 Affected services 3.1 Websites and web services 3.2 Software applications 4 Reaction 5 Root causes and possible lessons 6 References 7 External links http://en.wikipedia.org/wiki/Heartbleed 1/12 4/14/2014 Heartbleed - Wikipedia, the free encyclopedia History Appearance The Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols is a proposed standard specified by RFC 6520, published in February 2012. It provides a way to test and keep alive secure communication links without the need to renegotiate the connection each time. In 2011, Dr. Robin Seggelmann, then a Ph.D. student at the University of Duisburg-Essen, implemented the Heartbeat Extension for OpenSSL. Following Seggelmann's request to put the result of his work into OpenSSL,[14][15][16] his change was reviewed by Dr. Stephen N. Henson, one of OpenSSL's four core developers. Henson apparently failed to notice a bug in Seggelmann's implementation, and introduced the resulting vulnerability, Heartbleed, into OpenSSL's source code repository on December 31, 2011. Heartbeat support was enabled by default, causing affected versions to be affected by default. The vulnerable code has been adopted to widespread use with the release of OpenSSL version 1.0.1 on March 14, 2012.[17][18][19] Resolution On March 21, 2014 Bodo Moeller and Adam Langley of Google wrote a patch that fixed the bug. The date of the patch is known from Red Hat's issue tracker.[20] The next chronological date available from the public evidence is the claim by performance and security company CloudFlare that they fixed the flaw on their systems on March 31, 2014.[21] According to Mark J. Cox of OpenSSL, Neel Mehta of Google's security team reported Heartbleed on April 1, 2014.[22] The bug entailed a severe memory handling error in the implementation of the Transport Layer Security Heartbeat Extension.[23][24] This defect could be used to reveal up to 64 kilobytes of the application's memory with every heartbeat.[24] The bug was named by an engineer at the firm Codenomicon, a Finnish cybersecurity company, which also created the bleeding heart logo, and launched the domain Heartbleed.com (http://heartbleed.com) to explain the bug to the public.[25] According to Codenomicon, Neel Mehta first reported the bug to OpenSSL, but both Google and Codenomicon discovered it independently.[17] Codenomicon reports April 3 as their date of discovery of the bug and as their date of notification of NCSC-FI (formerly known as CERT-FI) for vulnerability coordination.[17][26] Mehta also congratulated Codenomicon, without going into detail.[27] On April 10, "Cisco Systems and Juniper Networks, two of the biggest creators of Internet equipment, announced on Thursday that their products had been affected by the Heartbleed bug. Routers, firewalls and switches ... have all likely been affected by the bug, leaving your personal information at risk of being stolen by hackers."[28] On April 12, at least two independent researchers were able to steal private keys using this attack from an experimental server intentionally set up for that purpose by CloudFlare.[29][30] Possible exploitation prior to disclosure http://en.wikipedia.org/wiki/Heartbleed 2/12 4/14/2014 Heartbleed - Wikipedia, the free encyclopedia Many major web sites patched or disabled the bug within days of its announcement,[31] but it is unclear whether potential attackers were aware of it earlier and to what extent it was exploited. Based on examinations of audit logs by researchers, it has been reported that some attackers may have exploited the flaw for at least five months before discovery and announcement.[32][33] Errata Security has partially rejected this hypothesis,[34] whereas the Department of Homeland Security believes that as of April 11, "there have not been any reported attacks or malicious incidents involving this particular vulnerability confirmed".[35] According to two insider sources speaking to Bloomberg.com, the United States National Security Agency was aware of the flaw since shortly after its introduction, but chose to keep it secret, instead of reporting it, in order to exploit it for their own purposes.[36][37][38] The NSA has denied this claim.[39] Reported exploitation subsequent to disclosure Revenue Canada reported the theft of 900 taxpayer social insurance numbers through an exploit of the bug during a 6-hour period on April 8.[40] When the attack was discovered, the agency shut down its web site and extended the taxpayer filing deadline from April 30 to May 5.[41] The agency said it will provide anyone affected with credit protection services at no cost. Behavior The RFC 6520 Heartbeat Extension tests TLS/DTLS secure communication links by allowing a computer at one end of a connection to send a “Heartbeat Request” message, consisting of a payload, typically a text string, along with the payload’s length as a 16-bit integer. The receiving computer then must send the exact same payload back to the sender. The affected versions of OpenSSL allocate a memory buffer for the message to be returned based on the length field in the requesting Depiction of Heartbleed message, without regard to the size of actual payload in that message. Because of this failure to do proper bounds checking, the message returned consists of the requested payload followed by whatever else happened to be in the allocated memory buffer. The problem was compounded by OpenSSL's decision to write its own version of the C dynamic memory allocation (malloc and free) routines. As a result, the oversized memory buffer returned to the requestor was likely to contain data from memory blocks that had been previously requested and freed by OpenSSL. Such memory blocks may contain sensitive data sent by users or even the private keys used by OpenSSL. In addition, by using its own memory management routines OpenSSL bypassed mitigation measures in some operating systems that might have detected or neutralized the bug.[42] The heartbleed bug is exploited by sending a malformed heartbeat request with a small payload and large length field to the server in order to elicit the server's response permitting attackers to read up to 64 kilobytes of server memory that was likely to have been used previously by SSL.[43] Attackers in this way could receive sensitive data, compromising the security of the server and its users. Vulnerable data include the server's private master key,[17][19] which would enable attackers to decrypt current or stored traffic via passive man-in-the-middle attack (if perfect http://en.wikipedia.org/wiki/Heartbleed 3/12 4/14/2014 Heartbleed - Wikipedia, the free encyclopedia forward secrecy is not used by the server and client), or active man-in-the-middle if perfect forward secrecy is used. The attacker cannot control which data are returned, as OpenSSL typically responds with the chunks of memory it has most recently discarded. The bug might also reveal unencrypted parts of users' requests and responses, including any form post data in users' requests, session cookies and passwords, which might allow attackers to hijack the identity of another user of the service.[44] Impact By attacking a service that uses a vulnerable version of OpenSSL, a remote, unauthenticated attacker may be able to retrieve sensitive information, such as secret keys. By leveraging this information, an attacker may be able to decrypt, spoof, or perform man-in-the-middle attacks on network traffic that would otherwise be protected by OpenSSL.[45] Affected OpenSSL versions The affected versions of OpenSSL include OpenSSL 1.0.1 through 1.0.1f (inclusive). OpenSSL 1.0.1g, OpenSSL 1.0.0 branch and OpenSSL 0.9.8 branch are not vulnerable.[46] Vulnerable Program and Function The vulnerable program source files are t1_lib.c and dl_both.c and the vulnerable functions are tls1_process_heartbeat() and dtls1_process_heartbeat().[47] Patch The bug is classified as a buffer over-read,[48] a situation where software allows more data to be read than should be allowed.[49] The problem can be fixed by ignoring Heartbeat Request messages that ask for more data than their payload needs.