Join our Newsletter — 33% off our NHI Course
Home› Guides› Historic TLS Attacks Guide: What Each Attack Broke…
Guide Network Security

Historic TLS Attacks Guide: What Each Attack Broke and What Changed

PDF for newsletter subscribers · free to read online

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 11 November 2026 16 min read
On this page

Scanners and auditors still report BEAST, POODLE, Heartbleed, DROWN, Logjam and Sweet32 on live systems, and teams often cannot tell which findings are real risk and which are noise. Each of these attacks broke a specific part of SSL or TLS: a cipher mode, a compression feature, a legacy key exchange, or a single bug in one library. Each one also changed the protocol or the defaults that every modern configuration now relies on. This guide explains what each attack targeted, the conditions it needed, which fix closed it, and how to check whether your estate is still exposed. It is written for security engineers, auditors and platform teams who triage TLS scan results or defend legacy systems that cannot move to TLS 1.3 yet.

Key takeaways

  • Most historic attacks need a legacy option to be switched on. SSL 2.0 or 3.0, TLS 1.0, CBC with MAC-then-encrypt, RC4, 3DES, export suites, static RSA key exchange or TLS compression. Turning those off closes almost the whole list.
  • Two attacks were implementation bugs, not protocol flaws. Heartbleed (CVE-2014-0160) was a bounds-check error in OpenSSL, and ROBOT was a set of vendor padding oracles. They are fixed by patching, plus key and credential rotation after Heartbleed.
  • One attack lives in the application, not TLS. BREACH abuses HTTP response compression, so no TLS setting fixes it: it needs application-level controls on secrets in responses.
  • A shared private key spreads the risk. DROWN makes a modern TLS server vulnerable if any other server using the same key, such as a mail server, still accepts SSLv2.
  • TLS 1.3 was designed around these lessons. It removed static RSA and Diffie-Hellman, compression, non-AEAD ciphers and renegotiation, and added downgrade protection, which is why moving to TLS 1.2 with AEAD and TLS 1.3 is the durable fix.

The attacks at a glance

The table lists each attack with the identifier given by the primary source we checked. Where a source gave no CVE, none is shown. RFC 7457, the IETF summary of known attacks on TLS and DTLS (Informational, February 2015), is the reference for the earlier entries.

Attack (year)IdentifierWhat it targetedPreconditionsClosing fix
Renegotiation attack (2009)CVE-2009-3555TLS renegotiation in all versions then currentServer allows insecure renegotiationRenegotiation Indication Extension, RFC 5746
BEAST (2011)CVE-2011-3389Predictable IV in TLS 1.0 CBC modeTLS 1.0 or SSL 3.0 with a CBC suite; attacker can inject chosen plaintext into the browserTLS 1.1 and later use explicit IVs; disable TLS 1.0
CRIME (2012)CVE-2012-4929TLS-level compressionTLS compression enabled; secret and attacker data in the same streamDisable TLS compression (removed in TLS 1.3)
Lucky Thirteen (2013)CVE-2013-0169Timing side channel in CBC MAC-then-encryptCBC suites; many observed sessionsAEAD such as AES-GCM, or encrypt-then-MAC (RFC 7366)
RC4 biases (2001 to 2013)None givenKeystream biases in RC4RC4 suite negotiated; same secret encrypted many timesRFC 7465 prohibits RC4
BREACH (2013)CVE-2013-3587 (RFC 7457 notes it was not officially allocated)HTTP-level response compressionSecret and reflected input in a compressed HTTP response bodyApplication controls, such as per-request CSRF token masking
Heartbleed (2014)CVE-2014-0160Missing bounds check in OpenSSL heartbeatOpenSSL 1.0.1 to 1.0.1fOpenSSL 1.0.1g or later, then rekey and rotate credentials
Triple handshake (2014)CVE-2014-1295Session resumption and renegotiation sharing keys across connectionsClient authentication or channel binding across resumed sessionsExtended master secret, RFC 7627; TLS 1.3 redesign
POODLE (2014)CVE-2014-3566SSL 3.0 CBC paddingClient and server accept SSL 3.0, often via insecure fallbackRFC 7568 forbids SSL 3.0; TLS_FALLBACK_SCSV (RFC 7507)
FREAK (2015)No CVE on the source pageClient state machine accepting export RSA keysServer offers export suites; vulnerable client libraryDisable export suites; patch clients
Logjam (2015)No CVE on the source pageDowngrade to 512-bit export Diffie-HellmanServer supports DHE_EXPORT, or uses common weak DH groupsDisable export suites; 2048-bit DH groups or ECDHE
DROWN (2016)CVE-2016-0800SSLv2 used as a Bleichenbacher oracle against the same RSA keyAny server using the key accepts SSLv2Disable SSLv2 everywhere the key is used; rekey if unsure
Sweet32 (2016)CVE-2016-2183 (TLS), CVE-2016-6329 (OpenVPN)Birthday collisions in 64-bit block ciphers3DES or Blowfish in CBC; hundreds of gigabytes on one connectionRemove 64-bit ciphers; limit data per key
ROBOT (2017)Vendor CVEs, for example CVE-2017-6168 (F5), CVE-2017-17382 (Citrix)RSA PKCS #1 v1.5 padding oracles in implementationsServer accepts TLS_RSA key exchange suitesPatch; disable all TLS_RSA key exchange suites

Cipher mode and padding attacks: BEAST, Lucky Thirteen and POODLE

All three exploited how SSL 3.0 and early TLS combined CBC encryption with a MAC. SSL and TLS up to 1.2 compute the MAC first and then encrypt (MAC-then-encrypt), so the receiver must decrypt and check padding before it can check integrity. That ordering leaks information.

  • BEAST: TLS 1.0 used the last ciphertext block of the previous record as the IV for the next, so an attacker who could inject chosen plaintext from the victim's browser could recover cookie bytes. TLS 1.1 introduced explicit per-record IVs. Browsers also added record splitting, which is why BEAST findings against current clients carry little practical risk, but a TLS 1.0 finding still fails RFC 8996.
  • Lucky Thirteen: a timing variant of the padding oracle that works against TLS 1.1 and 1.2 CBC suites. RFC 7457 names authenticated encryption (AES-GCM, RFC 5288) or encrypt-then-MAC (RFC 7366) as the mitigations.
  • POODLE: SSL 3.0 padding is not deterministic and is not covered by the MAC, so the oracle needed no timing at all. RFC 7457 records no mitigation within SSL 3.0. Attackers reached SSL 3.0 by breaking handshakes until clients retried at a lower version, the so-called downgrade dance. RFC 7507 added TLS_FALLBACK_SCSV (value 0x5600) and the fatal inappropriate_fallback alert (86) to stop that, and RFC 7568 (June 2015) then forbade SSL 3.0 outright.

What changed: AEAD cipher suites became the default in TLS 1.2 baselines and the only option in TLS 1.3. RFC 8996 later obsoleted RFC 7507, because once TLS 1.0 and 1.1 are gone there is nothing to fall back to. See the Authenticated Encryption and Block Cipher Modes Guide.

Compression attacks: CRIME, TIME and BREACH

Compression makes output length depend on content. If a secret (a session cookie or CSRF token) and attacker-controlled text are compressed together, the attacker can guess the secret one character at a time by watching which guess makes the ciphertext shorter.

AttackLayer compressedSecret targetedFix location
CRIMETLS record compressionRequest headers such as cookiesTLS library: disable compression
TIMEHTTP compression, measured by timingSecrets in responsesDisable TLS compression; application controls
BREACHHTTP response compression (gzip, deflate)Secrets in response bodies, such as CSRF tokensApplication only

TLS compression is now off in mainstream libraries and absent from TLS 1.3, so CRIME is closed by any current configuration. BREACH is different: RFC 7457 states there is no TLS-level mitigation. Practical controls are masking or randomising CSRF tokens per response, keeping secrets out of bodies that reflect user input, adding SameSite cookies and rate limiting, and disabling compression only on the sensitive endpoints rather than site-wide. A BREACH finding from a scanner usually only means "this page is compressed"; confirm whether a secret and reflected input share the response before raising it.

Key exchange and downgrade attacks: FREAK, Logjam, DROWN and ROBOT

These four share a root cause: 1990s export cryptography and RSA key exchange that were left enabled long after anyone needed them.

  • FREAK: part of the SMACK state machine bugs. Vulnerable clients (the miTLS team named Safari and OpenSSL-based Android browsers) accepted an export-grade RSA key they had not asked for. The researchers reported that such keys, under 512 bits, could be factored in under 12 hours for about 100 dollars of cloud compute. The fix was client patches and removing export suites from servers.
  • Logjam: made public on 20 May 2015. An attacker in the middle downgraded connections to 512-bit export Diffie-Hellman. The weakdh.org team reported 8.4% of the top one million HTTPS domains vulnerable, and warned that a nation-state could break the most common 1024-bit group. Their advice: disable export suites, use DH groups of 2048 bits or more, and have clients reject primes under 1024 bits.
  • DROWN: CVE-2016-0800, disclosed in March 2016. An SSLv2 server is used as a Bleichenbacher padding oracle to decrypt TLS sessions protected by the same RSA key. The researchers measured 33% of HTTPS servers vulnerable at disclosure. A web server with a perfect TLS configuration is still exposed if its certificate key is reused on a mail or VPN service that accepts SSLv2. Clients cannot mitigate it.
  • ROBOT: disclosed in 2017, it showed that Bleichenbacher's 1998 attack still worked against many products, including load balancers and firewalls. Recorded traffic to servers using RSA key exchange could be decrypted later. The researchers recommend disabling every cipher suite whose name starts with TLS_RSA; suites that use RSA only for signatures with ECDHE or DHE are not affected.

What changed: TLS 1.3 removed static RSA and static Diffie-Hellman, so all key exchange is forward secret, and removed custom DHE groups. It also embeds a downgrade sentinel in ServerHello.random (RFC 8446 section 4.1.3) so a TLS 1.3 client can detect an attacker forcing TLS 1.2 or lower. RFC 8446 has since been obsoleted by RFC 9846, which keeps these properties. See the How TLS Works Guide.

Cipher and implementation flaws: RC4, Sweet32 and Heartbleed

  • RC4: statistical biases in the keystream let an attacker recover plaintext that is encrypted many times, such as a cookie. RFC 7465 (February 2015) says clients MUST NOT offer RC4 and servers MUST NOT select it.
  • Sweet32: with a 64-bit block, CBC ciphertext blocks start to collide after about 232 blocks. The researchers recovered an HTTPS cookie from 610 GB of 3DES traffic captured over 30.5 hours, and estimated about 785 GB in general. The fixes are removing 3DES and Blowfish, and limiting data per connection or key. OpenVPN deployments that still default to Blowfish need explicit attention.
  • Heartbleed: CVE-2014-0160 in OpenSSL 1.0.1 through 1.0.1f, made public on 7 April 2014. A malformed heartbeat request returned chunks of server memory, including private keys, passwords and session cookies, and left no trace in normal logs. It is in the CISA Known Exploited Vulnerabilities catalogue. Patching alone was not enough: the published remediation was to patch, revoke and reissue certificates with new keys, invalidate sessions and have users change passwords.

Heartbleed is the clearest example of why TLS private keys are credentials. If you suspect a key was exposed, follow the Leaked TLS Private Key Response.

Triaging scanner findings today

Use the table to decide whether a finding is current risk, a compliance gap or noise. Version and cipher findings are cheap to confirm with a handshake test from outside and inside the network.

FindingReal risk todayConfirm byAction
SSLv2 or SSLv3 enabledHigh: DROWN and POODLE; forbidden by RFC 6176 and RFC 7568Handshake test per protocol on every port, including SMTP, IMAP, POP3 and VPNDisable now; if SSLv2 was on anywhere the key is shared, rekey
TLS 1.0 or 1.1 enabledMedium: BEAST and SHA-1 handshake weaknesses; forbidden by RFC 8996Version scan; client telemetry for who still connectsDisable after checking legacy clients
RC4 or 3DES offeredMedium: RC4 biases, Sweet32Cipher enumerationRemove from the cipher list
Export or anonymous suitesHigh: FREAK, LogjamCipher enumerationRemove
TLS_RSA key exchange suitesMedium to high: ROBOT, no forward secrecyCipher enumeration plus vendor advisory checkRemove; patch affected appliances
DH group under 2048 bitsMedium: Logjam classScanner reports DH sizeUse RFC 7919 groups or ECDHE only
BREACH flaggedDepends on the pageCheck whether secrets and reflected input share a compressed responseApplication controls on that endpoint
Heartbleed flaggedCritical if confirmedLibrary version checkPatch, rekey, revoke, rotate credentials
Insecure renegotiationLow on current stacksScanner check for RFC 5746 supportPatch the library

How to retire legacy TLS safely

  1. Inventory every TLS endpoint, not just websites. Include mail, LDAP over TLS, databases, VPNs, load balancer back ends and management interfaces. Record which certificates and private keys are shared across them, because DROWN crosses services.
  2. Measure who still uses legacy options. Log the negotiated protocol and cipher at load balancers and servers for at least two business cycles. This shows which clients, often embedded devices, payment terminals or old Java runtimes, will break.
  3. Remove the always-safe items first. SSLv2, SSLv3, export, NULL and anonymous suites, RC4 and TLS compression have no legitimate modern users. Remove them everywhere in one change.
  4. Pilot the TLS 1.0, 1.1, 3DES and TLS_RSA removal. Start with internal or low-traffic services, watch handshake failure rates, then roll through rings. Keep the previous configuration as a versioned file so rollback is one deployment.
  5. Isolate what cannot move. Put legacy clients behind a dedicated endpoint with its own key and certificate, with network restrictions and an expiry date for the exception.
  6. Prefer TLS 1.3 and AEAD in TLS 1.2. Use ECDHE key exchange and AES-GCM or ChaCha20-Poly1305. NIST SP 800-52 Rev. 2 requires TLS 1.2 for US government servers and TLS 1.3 support by 1 January 2024. See the TLS Server Configuration Baseline Guide.
  7. Rescan and lock the baseline. Add the approved protocol and cipher list to configuration management so drift is caught, and test after every appliance firmware update.

Small versus large organisations: a small organisation using managed hosting or a CDN can usually just select the provider's modern policy and check that mail and VPN endpoints match. A large estate needs the inventory and telemetry steps, because the hard cases are internal appliances and partner integrations that nobody owns.

Where identity fits

Several of these attacks targeted credentials carried inside TLS, not the data alone: BEAST, CRIME, BREACH, RC4 and Sweet32 all aimed at session cookies or tokens, and Heartbleed leaked private keys and passwords. A TLS server key is itself a non-human identity credential. Treat it like one: know where every key is deployed, avoid sharing one key across services, rotate it on a schedule and after any exposure, and keep session lifetimes short so a stolen cookie has limited value. See the SSL/TLS Certificate Types guide and the Certificate Transparency Monitoring Guide for Web Teams.

Detection and measurement

Exploitation of most of these attacks is hard to see in logs, and Heartbleed left no trace at all, so measure exposure rather than hunting for attacks. Network adversary-in-the-middle activity maps to ATT&CK T1557 Adversary-in-the-Middle and T1040 Network Sniffing.

  • Endpoints still offering SSL 2.0, SSL 3.0, TLS 1.0 or TLS 1.1: target zero on internet-facing services.
  • Share of handshakes using TLS 1.3: trend upwards; a sudden fall can indicate a middlebox or downgrade problem.
  • Endpoints offering RC4, 3DES, export or TLS_RSA suites: target zero, with named exceptions.
  • Private keys shared across more than one service: count and reduce.
  • Time from TLS library advisory to patched estate: measured per severity.
  • Open legacy TLS exceptions past their expiry date: target zero.

Common failure patterns

  • Fixing the website and forgetting the mail server. DROWN and Logjam figures were higher for SMTP, IMAP and POP3 than for HTTPS, and a shared key links the two.
  • Patching Heartbleed without rekeying. A patched server still uses a key that may already have leaked.
  • Treating BREACH as a TLS setting. Disabling compression site-wide costs performance and still misses the real issue in the application.
  • Appliances with frozen cipher lists. ROBOT affected load balancers and firewalls whose TLS stacks lag behind server operating systems.
  • Exceptions with no end date. A legacy client exception granted for one partner quietly becomes the default policy on a shared endpoint.

Framework mapping

FrameworkReferenceHow it applies
NIST CSF 2.0PR.DS-02Protecting data in transit with current protocols
NIST CSF 2.0ID.RA-01, PR.PS-02Finding weak TLS configurations and replacing legacy software
NIST SP 800-53 Rev. 5SC-8, SC-13Transmission confidentiality and approved cryptography
NIST SP 800-53 Rev. 5SC-12, CM-7Key management; removing unneeded protocols and suites
NIST SP 800-53 Rev. 5RA-5, SI-2Scanning for and remediating TLS flaws such as Heartbleed
ISO/IEC 27001:2022Annex A 8.24Use of cryptography rules
CIS Controls v8.1Control 3, Control 4Data protection in transit; secure configuration
MITRE ATT&CKT1557, T1040Interception and downgrade on the network path

Practitioner checklist

  • Inventory every TLS service on every port and record which private keys are shared.
  • Disable SSLv2, SSLv3, export, NULL, anonymous and RC4 suites and TLS compression everywhere.
  • Rekey any certificate whose key was ever used on a service that accepted SSLv2.
  • Log negotiated protocol and cipher, then retire TLS 1.0 and 1.1 in pilot rings with a rollback file.
  • Remove 3DES and all TLS_RSA key exchange suites; check appliance vendor advisories for ROBOT.
  • Use ECDHE or 2048-bit RFC 7919 groups, AEAD ciphers and TLS 1.3 where clients allow.
  • Handle BREACH findings in the application by masking per-response secrets.
  • After any memory disclosure bug, patch, rekey, revoke, invalidate sessions and rotate exposed credentials.
  • Give every legacy TLS exception an owner, isolation and an expiry date.

Standards and references

Related NHI Mgmt Group resources: How TLS Works Guide · TLS Server Configuration Baseline Guide · Cryptographic Protocol Failures and Misuse Guide · HSTS and HSTS Preload · Leaked TLS Private Key Response

PDF for subscribers

Take this guide with you

Every section, table and checklist in one PDF, with links to the sources and related guides. Subscribe to our weekly NHI & AI Identity Journal and we’ll email you a download link.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 11 November 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org

PDF Downloads for Newsletter Subscribers

Get the guide

Enter your details and we’ll email you a download link.

The full guide is free to read online. The PDF is a thank you for subscribing.

Fill in all fields marked * and tick the PDF box to continue.