Uma das vulnerabilidades mais conhecidas de meados de 2010 era chamada de “Heartbleed”. O Heartbleed era particularmente sério porque afetava o software “OpenSSL”, a principal biblioteca criptográfica para conexões HTTPS, que são amplamente utilizadas. Para piorar as coisas, a vulnerabilidade estava presente no OpenSSL por mais de dois anos antes de ser descoberta, divulgada e corrigida, o que significava que muitas pessoas estavam usando uma versão vulnerável.
Heartbleed era uma vulnerabilidade de vazamento de dados na extensão de pulsação que, quando explorada, vazava dados da RAM do servidor para o cliente. A extensão heartbeat é usada para manter uma conexão entre o servidor da web e o cliente sem fazer uma solicitação de página normal.
No caso do OpenSSL, o cliente envia uma mensagem para o servidor e informa ao servidor a extensão da mensagem, até 64 KB. O servidor deve então ecoar a mesma mensagem de volta. Porém, o mais importante é que o servidor não verificou se a mensagem era tão longa quanto o cliente alegou. Isso significava que um cliente poderia enviar uma mensagem de 10 KB, alegar que tinha 64 KB e obter uma resposta de 64 KB, com os 54 KB extras sendo compostos pelos próximos 54 KB de RAM, independentemente dos dados armazenados lá. Este processo é bem visualizado na história em quadrinhos # 1354 do XKCD .
Imagem cortesia de xkcd.com .
Fazendo várias solicitações pequenas de pulsação e alegando que eram grandes, um invasor poderia construir uma imagem da maior parte da RAM do servidor juntando as respostas. Os dados armazenados na RAM que podem ser vazados incluem chaves de criptografia, certificados HTTPS, bem como dados POST não criptografados, como nomes de usuário e senhas.
Observação: é menos conhecido, mas o protocolo de pulsação e a exploração também funcionaram na outra direção. Um servidor malicioso pode ter sido configurado para ler até 64 KB de memória do usuário por solicitação de pulsação.
O problema foi descoberto por vários pesquisadores de segurança independentemente no dia primeiro de abril de 2014 e foi divulgado em particular para a OpenSSL para que um patch pudesse ser criado. O bug foi divulgado quando o patch foi lançado no dia 7 de abril de 2014. A melhor solução para resolver o problema era aplicar o patch, mas também era possível remediar o problema desativando a extensão de pulsação se o patch imediatamente não fosse um opção.
Infelizmente, apesar da exploração ser pública e geralmente bem conhecida, muitos sites ainda não foram atualizados imediatamente, com a vulnerabilidade ainda sendo encontrada ocasionalmente anos depois. Isso levou a várias instâncias do exploit sendo usado para obter acesso a contas ou vazar dados.