Heartbleed

Heartbleed
Logótipo representativo de Heartbleed. A conscientização e a cobertura da mídia sobre o Heartbleed foram excepcionalmente altas para um bug de software.[1][2]
Identificador CVECVE-2014-0160
Pontuação CVSSBase: 7.5 HIGH, CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Lançamento1 fevereiro 2012
Data da descoberta1 abril 2014
Data da correção7 abril 2014
DescobridorNeel Mehta (Google Security)[3] Riku, Antti, and Matti (Codenomicon)[3][4]
Software afetadoOpenSSL (1.0.1)
Websiteheartbleed.com

Heartbleed é um bug na biblioteca de software de criptografia open-source OpenSSL, que permite a um atacante ler a memória de um servidor ou de um cliente, permitindo a este recuperar chaves SSL privadas do servidor. [5][6][7] Os logs que foram examinados até agora, levam a crer que alguns hackers podem ter explorado a falha de segurança pelo menos cinco meses antes da falha ser descoberta por equipes de segurança. [8][9][10]

Comportamento

Uma representação de Heartbleed.

A extensão Heartbeat da RFC 6520 testa links de comunicação seguros TLS/DTLS, permitindo que um computador numa extremidade da conexão envie uma mensagem de solicitação de pulsação (ou Heartbeat Request), composta por uma carga útil, geralmente uma string de texto, juntamente com o comprimento da carga útil como um inteiro de 16 bits . O computador receptor deve então re-enviar a mesma carga útil de volta ao remetente.

As versões afetadas do OpenSSL alocam um buffer de memória para a mensagem a ser retornada com base no campo de comprimento da mensagem solicitada, sem terem em consideração o tamanho real do conteúdo da mensagem. Devido a esta falha na verificação adequada dos limites, a mensagem retornada consiste no conteúdo, possivelmente seguido por qualquer outro elemento presente no buffer de memória alocado.

O Heartbleed é, portanto, explorado através do envio de uma solicitação de pulsação malformada, com uma pequena carga útil e um campo de comprimento grande, para a parte vulnerável (geralmente um servidor) para obter uma resposta da vítima, permitindo aos atacantes lerem até 64 kibibytes da memória da vítima que provavelmente foram usados anteriormente pelo OpenSSL. [11] Enquanto uma solicitação de heartbeat pode pedir a uma parte para "enviar de volta a palavra de quatro letras 'gato'", resultando numa resposta "gato", uma solicitação de Heartbleed (uma solicitação de heartbeat maliciosa) a pedir para "enviar de volta a palavra de 500 letras 'gato'" faria com que a vítima retornasse "gato" seguido por quaisquer 496 caracteres subsequentes que a vítima tivesse na memória ativa. Os atacantes, dessa forma, poderiam ler dados sensíveis, comprometendo a confidencialidade das comunicações da vítima. Embora um atacante tenha algum controlo sobre o tamanho do bloco de memória revelado, não tem controlo sobre sua localização e, portanto, não pode escolher que conteúdo será revelado.

Instalações OpenSSL afetadas

As versões afetadas do OpenSSL são as versões entre OpenSSL 1.0.1 e 1.0.1f (inclusive). Versões subsequentes (1.0.1g [12] e posteriores) e versões anteriores (branch 1.0.0 e anteriores) não são vulneráveis. [13] As instalações das versões afetadas são vulneráveis, a menos que o OpenSSL tenha sido compilado com a bandeira -DOPENSSL_NO_HEARTBEATS . [14] [15]

Programa e função vulneráveis

Os ficheiros-fonte do programa vulneráveis são t1_lib.c e d1_both.c e as funções vulneráveis são tls1_process_heartbeat() e dtls1_process_heartbeat() . [16] [17]

Patch

O problema pode ser resolvido ignorando as mensagens de solicitação de pulsação (ou Heartbeat Request) que pedem mais dados do que o necessário para sua carga útil, conforme exigido pela RFC.

A versão 1.0.1g do OpenSSL adiciona algumas verificações de limites para evitar a leitura excessiva do buffer. O teste listado abaixo foi introduzido para determinar se uma solicitação de heartbeat seria um ataque Heartbleed, descartando silenciosamente solicitações maliciosas.

if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* descartar silenciosamente, de acordo com RFC 6520 sec. 4 */


Referências

  1. McKenzie, Patrick (9 April 2014). «What Heartbleed Can Teach The OSS Community About Marketing». Kalzumeus. Consultado em 8 February 2018. Cópia arquivada em 20 December 2017  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  2. Biggs, John (9 April 2014). «Heartbleed, The First Security Bug With A Cool Logo». TechCrunch (em inglês). Consultado em 8 February 2018. Cópia arquivada em 11 February 2018  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  3. a b Erro de citação: Etiqueta <ref> inválida; não foi fornecido texto para as "refs" nomeadas hb
  4. Pitkänen, Perttu (9 de abril de 2014). «Näin suomalaistutkijat löysivät vakavan vuodon internetin sydämestä» [This is how Finnish researchers discovered a serious leak in the heart of the internet]. Ilta-Sanomat (em finlandês). Consultado em 11 de outubro de 2023 
  5. Chen, Brian X. (9 de abril de 2014). «Q. and A. on Heartbleed: A Flaw Missed by the Masses». New York Times. Consultado em 11 de abril de 2014 
  6. Wood, Molly (10 de abril de 2014). «Flaw Calls for Altering Passwords, Experts Say». New York Times. Consultado em 11 de abril de 2014 
  7. Manjoo, Farhad (10 de abril de 2014). «Users' Stark Reminder: As Web Grows, It Grows Less Secure». New York Times. Consultado em 11 de abril de 2014 
  8. Gallagher, Sean (9 de abril de 2014). «Heartbleed vulnerability may have been exploited months before patch». Ars Technica. Consultado em 11 de abril de 2014 
  9. "No, we weren't scanning for hearbleed before April 7"
  10. "Were Intelligence Agencies Using Heartbleed in November 2013?", 10 de abril de 2014, Peter Eckersley, EFF.org
  11. Hunt, Troy (9 April 2014). «Everything you need to know about the Heartbleed SSL bug». Troyhunt. Consultado em 11 April 2014. Arquivado do original em 11 April 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  12. Hunt, Troy (9 April 2014). «Everything you need to know about the Heartbleed SSL bug». Troyhunt. Consultado em 11 April 2014. Arquivado do original em 11 April 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  13. Kranthi (12 April 2014). «Cyberoam Users Need not Bleed over Heartbleed». Spiceworks Community. Consultado em 3 October 2025. Arquivado do original em 15 April 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  14. «OpenSSL Security Advisory [07 Apr 2014]: TLS heartbeat read overrun (CVE-2014-0160)». The OpenSSL Project. 7 April 2014. Consultado em 9 April 2014. Arquivado do original em 8 April 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  15. «Heartbleed Bug: Comodo Urges OpenSSL Users to Apply Patch». Comodo. April 9, 2014. Consultado em 9 April 2014. Arquivado do original em 5 July 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  16. Hunt, Troy (9 April 2014). «Everything you need to know about the Heartbleed SSL bug». Troyhunt. Consultado em 11 April 2014. Arquivado do original em 11 April 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  17. Hunt, Troy (9 April 2014). «Everything you need to know about the Heartbleed SSL bug». Troyhunt. Consultado em 11 April 2014. Arquivado do original em 11 April 2014  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)