CVE-2014-0160

OpenSSL 'Heartbleed' — TLS Heartbeat Extension Bounds Check Missing Allows Server Memory Read Without Authentication
⚠️ CVSS 3.1  7.5 / 10 — HIGH 🔴 CISA Known Exploited Vulnerability

Overview

Actively Exploited. This vulnerability has been added to CISA's Known Exploited Vulnerabilities (KEV) Catalog on May 4, 2022. Federal agencies are required to apply mitigations per BOD 22-01.

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

  1. No authentication required — any internet client can send heartbeat requests.
  2. No server-side logs — heartbeat processing leaves no application log entries; exploitation is invisible.
  3. Repeatable — each request returns a fresh 64 KB slice; an attacker can drain significant memory over time.
  4. 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

CISA BOD 22-01 Deadline: May 25, 2022. Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Recommended Actions

  1. 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.

  2. 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.

  3. Invalidate all active sessions. Session tokens in server memory may have been exposed. Force re-authentication for all users.

  4. Rotate application secrets — API keys, passwords, symmetric keys — that may have been in server memory during the exposure window.

  5. 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.

  6. 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

PropertyValue
CVE ID CVE-2014-0160
Vendor / Product OpenSSL — OpenSSL
NVD Published2014-04-07
NVD Last Modified2025-10-22
CVSS 3.1 Score7.5
CVSS 3.1 VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
SeverityHIGH
CWE CWE-125 — Out-of-bounds Read
CISA KEV Added2022-05-04
CISA KEV Deadline2022-05-25
Known Ransomware Use No

CVSS 3.1 Breakdown

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Required Action

CISA BOD 22-01 Deadline: 2022-05-25. Apply updates per vendor instructions.

Timeline

DateEvent
2014-03-21Robin Seggelmann submits the vulnerable heartbeat extension code to OpenSSL (December 31, 2011 — actually introduced in commit to OpenSSL 1.0.1 development)
2014-04-01Neel Mehta of Google Security Team reports the vulnerability to OpenSSL
2014-04-07Coordinated disclosure; OpenSSL 1.0.1g released with fix; CVE-2014-0160 published; Codenomicon publishes heartbleed.com
2014-04-07Mass exploitation begins; CloudFlare challenge broken; private keys confirmed extractable
2014-04-09Canada Revenue Agency breached — 900 SINs stolen using Heartbleed
2022-05-04Added to CISA Known Exploited Vulnerabilities catalog
2022-05-25CISA BOD 22-01 remediation deadline