Categorias

Heartbleed: a origem

O Heartbleed sangrou toda a Internet. Se você esteve escondido em uma caverna sem nenhum acesso durante a semana passada, basta eu dizer que, agora que você saiu, é recomendado que você troque suas senhas da web. Quais senhas? Todas, por via das dúvidas. Isso é o Heartbleed.

A falha no módulo de encriptação OpenSSL permite que um hacker engenhoso recupere dados que estejam na memória do servidor. Isso inclui certificados digitais, senhas, números de cartão crédito, números de documentos oficiais, tudo, sem qualquer encriptação. Nesse momento, 900 canadenses estão lamentando o dia em que a falha foi descoberta, para ficar em apenas um exemplo. E esse número de vítimas vai crescer.

Mas de onde veio essa falha? Quem é o culpado? Por que algumas empresas foram afetadas e outras não? A origem do Heartbleed pode dizer muito sobre como funcionam os bastidores da indústria da tecnologia de informação.

Mea Culpa

Robin Seggelmann. Esse é o nome do responsável pelo Heartbleed. O engenheiro de software alemão assumiu sozinho a culpa por ter introduzido a vulnerabilidade. E isso aconteceu em 2012!

Robin Seggelmann
Robin Seggelmann: foi ele!

Seggelmann trabalhava em uma maneira de melhorar o OpenSSL. Como parte do espírito do código-aberto do protocolo, Seggelmann estava corrigindo bugs e acrescentando algumas novas funcionalidades ao protocolo, algo que já havia feito muitas vezes antes e faria muitas vezes depois. Apenas que daquela vez foi diferente: “em uma das novas funcionalidades, infelizmente, eu me esqueci de validar uma variável contendo um comprimento”, declarou o engenheiro de software. Um erro trivial.

O código foi submetido para revisão e o revisor “aparentemente também não percebeu a validação faltando”. O resultado é que o erro passou do código de desenvolvimento para o código de produção. Uma investigação no log identifica um certo Dr Stephen Henson como o revisor responsável. Henson, por enquanto, ainda não foi localizado.

Apesar do encadeamento de erros, Seggelmann segue defendendo o modelo open-source: “o benefício é que qualquer um pode revisar o código para começo de conversa. E quanto mais pessoas olhando, melhor, principalmente com um programa como o OpenSSL”.

Dois Anos de Silêncio e Duas Semanas de Correria

Se o Heartbleed já estava no código do OpenSSL desde a versão 1.01.1 de Março de 2012, o que aconteceu durante esses 2 anos? Ninguém sabe com certeza. Há quem diga que hackers e agências de espionagem governamentais vem explorando a falha de longa data, mas não há qualquer prova nesse sentido até agora, mesmo após tantos vazamentos produzidos pelo Wikileaks ou por Edward Snowden.

A menos que entremos no pantanoso território das teorias de conspiração, vamos supor que o Heartbleed permaneceu escondido por todo esse tempo.

Até 21 de Março de 2014.

Nesta data,  Neel Mehta, do Google Security descobriu a falha de segurança que mais tarde seria classificada como “11 de 10” na escala de perigo.

Quando você descobre um bug que pode afetar dois em cada três servidores do mundo e transformar em poeira a proteção do https, qual é a sua prioridade? Mehta escolheu o sigilo e, de acordo com os analistas, ele fez certo. Uma publicação apressada em um site de segurança ou uma declaração pública poderia levar a existência do problema diretamente para o submundo da Internet, onde os hackers de chapéu preto descobririam formas de explorar a vulnerabilidade muito mais rápido do que seria possível corrigi-la.

Naquele 21 de Março, uma sexta-feira, ninguém foi pra casa cedo no Google Security. Bodo Moeller e Adam Langley conseguiram criar uma correção para o Heartbleed no mesmo dia. Durante todo o final de semana e os dias seguintes, a correção foi aplicada em todos os servidores do Google vulneráveis.

A questão do sigilo ia crescendo como uma bola de neve. Quanto mais pessoas envolvidas no processo, maiores as chances de um vazamento.

secrecy

Por dez dias, o conhecimento do Heartbleed ficou restrito aos corredores do Google. E, como era de se esperar, alguém vazou a informação. Através de uma conexão encriptada com uma chave privada, um informante anônimo revelou a existência da falha para um engenheiro de segurança da Cloudfare. A empresa desenvolveu sua própria correção, mas se comprometeu a não revelar nenhum dado publicamente.

No dia seguinte, em pleno Primeiro de Abril, o Dia da Mentira, o Google repassou a batata quente para o time do OpenSSL. Tiveram a delicadeza de enviar a correção junto com as más notícias. A OpenSSL comunicou a falha para a Red Hat, responsável pelo sistema operacional com mais usuários do protocolo comprometido.

Em algum ponto desta cadeia, o Facebook também foi notificado e tratou de corrigir a falha em seus servidores. O mesmo aconteceu com a Akamai e outras empresas. A esta altura do campeonato, rumores começaram a surgir dentro da comunidade open source, mas a verdadeira natureza do Heartbleed continuava blindada. Sites como Yahoo, OKCupid, Amazon e milhares de outros permaneceram na ignorância.

Por uma destas coincidências que ninguém explica, em 2 de Abril, a empresa de segurança finlandesa Codenomicon identificou a mesma falha que Neel Mehta havia encontrado. Um buraco no protocolo OpenSSL que havia permanecido oculto por dois anos havia sido encontrado em dois lugares diferentes do planeta com um intervalo de pouco mais de dez dias. Se a Codenomicon não foi a primeira, pelo menos teve a honra dúbia de batizar o problema: “Heartbleed”, com direito a compra de domínio próprio logo depois.

heartbleed-vitrine

Mas a falha era tão grave que a Codenomicon também optou pelo sigilo e não comunicou primeiro aos seus clientes, mas sim para o órgão público National Cyber Security Centre Finland (NCSC-FI). O NCSC-FI demorou alguns dias antes de emitir um relatório ao CERT Coordination Centre, solicitando um alerta sobre um “problema grave no OpenSSL”.

E foi esse relatório que acelerou o processo de revelação pública da existência da vulnerabilidade: não era mais possível mantê-la escondida, os hackers logo saberiam por seus meios e o quadro seria muito pior.

Em 7 de Abril, a OpenSSL emitiu um boletim público para assinantes, a Cloufare publicou um artigo em seu blog e Neel Mehta tuitou sobre o problema, quase todos juntos.

No dia seguinte, a notícia explodiu na mídia. E a web nunca mais será a mesma.