O que é a vulnerabilidade de Heartbleed?

Uma das vulnerabilidades mais conhecidas de meados de 2010 era chamada de “Heartbleed”. O Heartbleed era particularmente sério porque o software afetava o “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 foi descoberto, divulgado e corrigido, o que significava que muitas pessoas estavam usando um vulnerável versão.

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. Crucialmente, no entanto, o servidor realmente não verificou se a mensagem era tão longa quanto o cliente alegou que era. Isso significava que um cliente poderia enviar uma mensagem de 10 KB, reivindicar 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 pelo

XKCD comic # 1354.

Imagem cortesia de xkcd.com.

Fazendo muitas solicitações de pulsação pequenas 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 imediato não fosse uma opção.

Infelizmente, apesar da exploração ser pública e geralmente bem conhecida, muitos sites ainda não eram atualizados imediatamente, com a vulnerabilidade ainda sendo encontrada ocasionalmente anos depois. Isso levou a uma série de instâncias do exploit sendo usado para obter acesso a contas ou vazar dados.