Overview
CVE-2014-0160, nicknamed "Heartbleed," is a critical information disclosure vulnerability in OpenSSL's implementation of the TLS/DTLS Heartbeat Extension (RFC 6520). A missing bounds check allows a remote attacker to read up to 64 kilobytes of server memory per request — repeatedly, with no authentication, leaving no server-side log entries. Memory returned may contain TLS private keys, session tokens, passwords, and other plaintext data that was in the server's memory at the time of the request.
At time of disclosure, an estimated 17% of the internet's SSL/TLS servers were running vulnerable OpenSSL versions. The vulnerability introduced in December 2011 had been in production for over two years across an enormous fraction of the global internet infrastructure.
What Is OpenSSL?
OpenSSL is the dominant open-source cryptographic library for TLS/SSL connections, used by Apache, nginx, and most other open-source web servers, as well as email servers, VPN clients, database servers, and network appliances. At time of the Heartbleed disclosure, it secured the majority of HTTPS traffic on the internet. A vulnerability in OpenSSL is, in effect, a vulnerability in the encryption layer of the modern internet.
Affected Versions
| OpenSSL Version | Status |
|---|---|
| 1.0.1 – 1.0.1f | Vulnerable |
| 1.0.1g | Fixed |
| 1.0.0 (all) | Not affected (heartbeat extension not present) |
| 0.9.8 (all) | Not affected |
The heartbeat extension was added in OpenSSL 1.0.1 (released March 14, 2012). The vulnerability existed from that date until 1.0.1g was released April 7, 2014 — over two years.
Affected distributions (at time of disclosure): Ubuntu 12.04 LTS, Ubuntu 12.10, Ubuntu 13.04, Ubuntu 13.10; Debian Wheezy; Red Hat Enterprise Linux 6.5; Fedora 18, 19, 20; OpenSUSE 12.2+; FreeBSD 8.4, 9.x, 10.x; and many others. All web servers running nginx or Apache with affected OpenSSL versions were exposed.
Technical Details
Root Cause: Missing Bounds Check in Heartbeat Response
The TLS Heartbeat Extension (RFC 6520) allows a TLS endpoint to send a "heartbeat" request containing a payload and a declared length, and receive the same payload back in the response — used to verify the connection is alive without a full handshake.
The vulnerable OpenSSL code in ssl/d1_both.c and ssl/t1_lib.c processes incoming heartbeat requests:
/* Simplified vulnerable code */
unsigned int payload = *(unsigned short *)(p + 1); /* Attacker-controlled length */
unsigned char *pl = p + 3; /* Pointer to actual payload data */
/* MISSING: check that payload <= actual received data length */
memcpy(bp, pl, payload); /* Copy 'payload' bytes from server memory to response */
The server reads the attacker-declared payload length without verifying it matches the actual length of received data. By sending a heartbeat with 1 byte of payload but declaring a length of 65,535 bytes, the memcpy reads 65,535 bytes starting from the heartbeat payload location — returning whatever happens to be in adjacent server memory.
What Heartbleed Can Leak
Each 64 KB read returns a different slice of the server process's heap memory. An attacker making thousands of requests can recover:
- TLS private keys — confirmed extractable (Cloudflare challenge broken April 9, 2014)
- Session tokens and cookies — allowing session hijacking without a password
- Usernames and passwords — if recently processed by the server
- Other TLS session data — including client certificates, pre-master secrets
- Application memory — database queries, API keys, any data recently in heap
Why It's Particularly Dangerous
- No authentication required — any internet client can send heartbeat requests.
- No server-side logs — heartbeat processing leaves no application log entries; exploitation is invisible.
- Repeatable — each request returns a fresh 64 KB slice; an attacker can drain significant memory over time.
- Private key extraction — once a private key is obtained, an attacker can: decrypt previously captured TLS sessions retroactively, impersonate the server going forward, perform man-in-the-middle attacks.
Attack Characteristics
| Attribute | Detail |
|---|---|
| Attack Vector | Network — any HTTPS/TLS client can exploit it |
| Authentication Required | None |
| Server-Side Logging | None — exploitation is forensically silent |
| Data Exposed Per Request | Up to 64 KB of heap memory |
| Private Key Extractable | Yes — confirmed by Cloudflare challenge (April 9, 2014) |
Discovery
Neel Mehta of Google Security Team discovered the vulnerability and reported it to OpenSSL on April 1, 2014. Concurrently and independently, researchers at Codenomicon (a Finnish security firm) discovered the same bug. Codenomicon created the heartbleed.com website and coined the "Heartbleed" name and the iconic bleeding heart logo, which became widely associated with the disclosure. The vulnerability was introduced by Robin Seggelmann, who submitted the heartbeat extension implementation to OpenSSL in December 2011; Seggelmann stated the omission of the bounds check was an unintentional programming error.
Exploitation Context
- Estimated exposure: 17–20% of all HTTPS servers on the internet at time of disclosure; approximately 500,000+ servers
- High-profile affected services: Yahoo! Mail (confirmed; session tokens leaked), Imgur, OKCupid, LastPass, and many others
- Canada Revenue Agency breach (April 9, 2014): 900 Social Insurance Numbers stolen; CRA took its systems offline
- Private key confirmation: Cloudflare publicly challenged the security community to extract private keys using Heartbleed on April 9, 2014; multiple researchers succeeded within hours
- Persistent exposure: Network appliances, VPNs, embedded systems, and industrial equipment running OpenSSL 1.0.1 remained unpatched for years; Heartbleed exploitation continued to be detected in threat intelligence through the late 2010s
- CISA KEV: Added May 4, 2022 — eight years after disclosure — confirming active exploitation continued
Remediation
Recommended Actions
-
Update OpenSSL to 1.0.1g or later (or a distribution-provided backport patch). Verify:
openssl version. Any version below 1.0.1g is vulnerable. -
Revoke and reissue TLS certificates. If a server was running vulnerable OpenSSL, assume private keys are compromised. Generate new keys, obtain new certificates, and revoke the old ones — in that order.
-
Invalidate all active sessions. Session tokens in server memory may have been exposed. Force re-authentication for all users.
-
Rotate application secrets — API keys, passwords, symmetric keys — that may have been in server memory during the exposure window.
-
Network appliances and VPNs: Identify all devices using OpenSSL (firewalls, load balancers, VPN concentrators, storage devices). Many ran unpatched for extended periods; apply firmware updates and rotate credentials used with those devices.
-
Audit for exploitation: While heartbeat requests leave no application logs, TLS/SSL session logs may show unusual patterns. Review for anomalous connection volumes from single IPs.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2014-0160 |
| Vendor / Product | OpenSSL — OpenSSL |
| NVD Published | 2014-04-07 |
| NVD Last Modified | 2025-10-22 |
| CVSS 3.1 Score | 7.5 |
| CVSS 3.1 Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| Severity | HIGH |
| CWE | CWE-125 — Out-of-bounds Read |
| CISA KEV Added | 2022-05-04 |
| CISA KEV Deadline | 2022-05-25 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2014-03-21 | Robin Seggelmann submits the vulnerable heartbeat extension code to OpenSSL (December 31, 2011 — actually introduced in commit to OpenSSL 1.0.1 development) |
| 2014-04-01 | Neel Mehta of Google Security Team reports the vulnerability to OpenSSL |
| 2014-04-07 | Coordinated disclosure; OpenSSL 1.0.1g released with fix; CVE-2014-0160 published; Codenomicon publishes heartbleed.com |
| 2014-04-07 | Mass exploitation begins; CloudFlare challenge broken; private keys confirmed extractable |
| 2014-04-09 | Canada Revenue Agency breached — 900 SINs stolen using Heartbleed |
| 2022-05-04 | Added to CISA Known Exploited Vulnerabilities catalog |
| 2022-05-25 | CISA BOD 22-01 remediation deadline |
References
| Resource | Type |
|---|---|
| NVD — CVE-2014-0160 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |
| Heartbleed Bug — heartbleed.com (Codenomicon) | Security Research |
| OpenSSL Security Advisory — April 7, 2014 | Vendor Advisory |
| OpenSSL Fix Commit 731f4314 — Fix for the Heartbleed bug | Patch / Source Code |
| Cloudflare: Can You Get Private SSL Keys Using Heartbleed? | Security Research |
| CWE-125 — Out-of-bounds Read | Weakness Classification |