Incidentes e Vulnerabilidades

Heartbleed (CVE-2014-0160) — um bug do OpenSSL que vazava a memória do servidor

O Heartbleed foi uma falha do OpenSSL (2014) que vazava memória do servidor, até chaves privadas. Como funcionava e as lições: reemitir e rotacionar.

Publicado 2026-06-07 Atualizado 2026-10-23 5 min de leitura
Nesta página

Revisitando um grande incidente do passado pelas lições que ainda valem para suas operações, de um ângulo defensivo, não como reprodução.

2014
descoberto
~17%
Pesquisa TLS na divulgação (2014)
chave privada
vazamento no pior caso
sem rastro
dificuldade de detecção

O que aconteceu: um bug que retornava mais dados do que o pedido

O TLS (a criptografia por trás do HTTPS) tem uma troca de keep-alive chamada "heartbeat". O cliente envia um pouco de dados mais um comprimento ("devolva isto"), e o servidor o ecoa de volta. É simples por design.

A implementação do OpenSSL não validava o comprimento alegado. Envie alguns bytes mas alegue "devolva 64KB", e o servidor lê além dos seus dados, na memória adjacente, e a retorna. Se uma chave privada ou sessão estivesse ali, vazava junto.

Normal: comprimento enviado = comprimento retornado

"devolva 'bird' (4 caracteres), comprimento 4" → servidor: "bird"

↓ sem validar o comprimento…

Heartbleed: payload minúsculo + comprimento alegado enorme

"devolva 'bird' (4 caracteres), comprimento 64KB" → servidor: "bird + 64KB de memória vizinha (pode incluir chaves, sessões)"

Normalmente você recebe de volta o que enviou. O Heartbleed confiava no comprimento alegado e retornava a memória vizinha.

Nenhum privilégio especial era necessário; repetir isso coletava fragmentos de memória aos poucos. Um bug minúsculo numa biblioteca TLS da qual uma enorme quantidade de software depende afetou a segurança do tráfego HTTPS no mundo inteiro.

Um vazamento que deixa pouco rastro não pode ter seu alcance medido

O Heartbleed deixava pouquíssimo rastro nos logs de acesso normais, então "vazou?" e "o que vazou?" eram difíceis de afirmar. Na dúvida, aja com base no pior caso.

Linha do tempo

  1. 2014-04-07

    A falha é divulgada e um OpenSSL corrigido é lançado no mesmo dia.
  2. logo depois

    Servidores no mundo todo são corrigidos em massa; a amplitude do impacto causa alarme.
  3. depois disso

    Muitos serviços revogam e reemitem certificados "assumindo que a chave vazou", e pedem aos usuários que troquem as senhas.

Por que só aplicar o patch não encerra o trabalho

Se a chave privada pode ter vazado, então mesmo depois de corrigir, a chave antiga ainda é válida. Então a resposta tem duas partes: corrigir a vulnerabilidade (patch) e rotacionar chaves, certificados e segredos como se tivessem vazado.

Resposta insuficiente

  • Atualizar o OpenSSL e considerar "resolvido"
  • Rotacionar apenas o único segredo que você confirmou abusado
  • Continuar usando o mesmo certificado

Resposta correta

  • Atualizar e revogar/reemitir os certificados (regerar a chave privada)
  • Rotacionar todo segredo, chave e senha que o servidor guarda
  • Solicitar aos usuários que troquem as senhas

Lições que ainda valem

1

Aja como se tudo tivesse vazado

Rotacione todo segredo, chave e senha — não apenas o único que você confirmou. Quando um vazamento deixa pouco rastro, assuma o pior.

2

Revogue e reemita certificados

Se a chave privada pode ter vazado, reconstrua também o certificado. Até você rotacionar a chave, uma chave que vazou no passado continua utilizável.

3

Monitore também as bibliotecas de base

Acompanhe os CVEs em bibliotecas de base como o OpenSSL, não só no seu app. Quanto mais software depende de uma biblioteca, mais amplo o impacto.

4

Valorize a segurança de memória

Bugs de "ler mais do que foi pedido" diminuem estruturalmente com design e linguagens seguros em memória. Leve isso em conta ao escolher a tecnologia sobre a qual você constrói.

Leia em seguida

Fontes e escopo

Estas fontes primárias fundamentam as configurações, o escopo ou as medidas acima; links conferidos em 23 de outubro de 2026. Confira as condições de versão e configuração. As prioridades e lições são orientações deste site, não uma revalidação completa nem garantia de segurança.

FAQ

QO que podia vazar no Heartbleed?
A

Memória do servidor: no pior caso, a chave privada TLS, o conteúdo da sessão e dados de login. E deixava pouquíssimo rastro, então 'quanto vazou' era difícil de determinar depois.

QPor que ele 'retornava mais do que foi pedido'?
A

Na troca de keep-alive (heartbeat), o servidor confiava no comprimento que o outro lado alegava em vez de verificá-lo. Envie alguns bytes mas alegue 'devolva 64KB', e o servidor lia além dos seus dados, na memória adjacente, e a retornava. Confiar na entrada (o comprimento) sem verificá-la foi a causa.

QO que mais importava na resposta?
A

Depois de corrigir, agir como se tudo tivesse vazado: revogar e reemitir os certificados TLS, e rotacionar todo segredo e senha que o servidor guardava. Só corrigir o app não bastava.