Muito tem se falado ultimamente sobre esse bug. Mas é realmente uma coisa tão séria assim? Sim, bastante.
Vi ontem (08/04/2014) links com palavras do tipo: ”Falha grave”, “OpenSSL comprometido”, “Afetar toda a internet”, “Dados sigilosos vulneráveis” e “Heartbleed” infestarem meu feed de notícias no facebook e twitter.
Extremamente curioso, abri umas 5 abas e fui ler sobre o tal bug sério.
Mas enfim, o que é esse bug e o que ele significa?
Primeiro deixe-me explicar o que é o software afetado: o OpenSSL.
"O OpenSSL é uma implementação de código aberto dos protocolos SSL e TLS. A biblioteca implementa as funções básicas de criptografia e disponibiliza várias funções utilitárias." (De acordo com nossos manos do Wikipédia: http://pt.wikipedia.org/wiki/OpenSSL)
Sim, mas e aí?
Esse rapaz é largamente usado para criar conexões seguras usando os protocolos SSL e TLS. Traduzindo para alguns: ele é usado para conectar você e aquelas páginas (como a do seu banco) onde há um cadeadinho e “https” ao invés do “http” antes do endereço. Isso significa que você está (supostamente) usando uma conexão segura e os dados serão criptografados. Essa criptografia é usada para evitar que terceiros interceptem, leiam ou alterem os dados trocados durante a conexão (senhas, dados bancários, emails, qualquer coisa).
E o que “Heartbleed” tem haver com tudo isso?
Heartbleed é o nome de uma extensão do OpenSSL que permite manter a conexão segura entre os dois lados “viva” sem precisar renegociar a conexão, o que economiza recursos.
O bug foi batizando de “Heartbleed” (algo como “coração sangrando”) porque o pedaço de código falho reside nessa extensão.
E por que está sendo levado tão a sério? O que está em jogo caso a falha seja explorada?
Porque as consequências são graves.
Caso a falha seja explorada, é possível que, com um pouco de paciência, o cara que ataque o servidor obtenha, não só dados como senhas, mas as chaves de criptografia que protegem todo o tráfego e com isso em mãos já era. Com essas chaves, o atacante pode descriptografar qualquer dado já capturado e os FUTUROS dados também. Ou seja: fudeu, né?
E como a falha é explorada?
Se segure aí porque aqui vão um pouco de informações tecnicas.
Basicamente, é tudo culpa dessa única linha de código:
buffer = OPENSSL_malloc(1 + 2 + payload + padding);
Como se pode perceber, há memória alocada para o “payload + padding” e o padding é um valor controlado pelo usuário. Como não há uma checagem para essa alocação de dados, o atacante pode forçar o OpenSSL a ler partes da memória que não deveria.
Após enviar dados de forma maliciosa para a porta 443 do servidor, o atacante receberá de volta uma resposta com 64 kb de dados a mais do que deveria e que, provavelmente, não deveria ter acesso, como nomes de usuários e senhas.
Há esse limite de 64 kb porque é o limite de tamanho para a resposta que o Heartbeat dá. Mas isso não aparenta ser um problema, pois o atacante pode enviar outra requisição maliciosa, receber outros 64 kb, mandar mais uma e receber mais outros 64 kb… E repetir o processo até conseguir o que quer.
Caso se interesse, nesse link há um script escrito na linguagem Python que verifica se um servidor é vulnerável.
E nesse site também é possível testar se um servidor é vulnerável.
Não há uma solução?
Sim. Além de os servidores terem que atualizar suas versões do OpenSSL, é necessário que eles revoguem as chaves comprometidas e distribua novas.
Para os usuários comuns, na maioria das vezes o que resta é mudar as senhas de serviços que foram afetados. O tumblr e outros serviços já andam alertando seus usuários.
Alguns pensamentos
Deu pra concluir que a falha é realmente séria, certo? Além de dados como senhas, transações bancárias e outras coisas valiosas, um bug sério em uma forma popular de criptografia de dados também põe em risco a privacidade. Sabemos que na internet é difícil conseguir alguma, mas a criptografia é o que (supostamente) ainda nos permite a comunicação segura via internet.
Esse bug a solta há tanto tempo me fez lembrar dos slides da NSA e a GCHQ vazados pelo Edward Snowden que citam os esforços para se quebrar as formas de criptografia usadas na internet.
Mas informações sobre isso nesse link.
A rapaziada do tor recomenda que, caso realmente precise de anonimato ou privacidade, fique fora da internet por uns dias até as coisas se acalmarem: https://blog.torproject.org/blog/openssl-bug-cve-2014-0160
E aqui finalizo meu momento “teórico da conspiração”, haha.
UPDATE 12 de abril de 2014
Sim, como eu e vários outros teorizavam, eles já sabiam dessa falha antes de nós: http://www.bloomberg.com/news/2014-04-11/nsa-said-to-have-used-heartbleed-bug-exposing-consumers.html
Fontes consultadas e links com informações mais detalhadas (todos em inglês):
http://www.garage4hackers.com/entry.php?b=2551
https://github.com/musalbas/heartbleed-masstest/blob/master/top1000.txt
http://techcrunch.com/2014/04/08/openssl-heartbleed-bug-leaves-much-of-the-internet-at-risk/
http://www.troyhunt.com/2014/04/everything-you-need-to-know-about.html