Heartbleed: O que é e quais são as opções para mitigá-lo?

Heartbleed: O que é e quais são as opções para mitigá-lo?

Isto é umPergunta Canônicasobre como entender e corrigir o problema de segurança do Heartbleed.

O que exatamente é CVE-2014-0160 também conhecido como “Heartbleed”? Qual é a causa, quais sistemas operacionais e versões do OpenSSL são vulneráveis, quais são os sintomas, existe algum método para detectar uma exploração bem-sucedida?

Como posso verificar se meu sistema foi afetado? Como essa vulnerabilidade pode ser mitigada? Devo me preocupar com o comprometimento de minhas chaves ou outros dados privados? Com quais outros efeitos colaterais devo me preocupar?

Responder1

Primeiro, antes de surtar, certifique-se de entender se essa vulnerabilidade realmente se aplica a você ou não. Se você tem um servidor, mas nunca teve nenhum aplicativo usando TLS, então isso não é algo de alta prioridade para você consertar. Se, por outro lado, vocêjá tiveAplicativos habilitados para TLS, então você terá uma surpresa. Leia:

O que exatamente é CVE-2014-0160, também conhecido como “Heartbleed”?

É uma grande bagunça, é isso que é. Resumindo, uma vulnerabilidade explorável remotamente foi descoberta nas versões 1.0.1 a 1.0.1f do OpenSSL, por meio da qual um invasor pode ler certas partes da memória do sistema. Essas partes são aquelas que contêm dados confidenciais, como chaves privadas, chaves pré-compartilhadas, senhas e dados corporativos de alto valor, entre outras coisas.

O bug foi descoberto de forma independente por Neel Mehta do Google Security (21 de março de 2014) e pela empresa finlandesa de testes de segurança de TI Codenomicon (2 de abril de 2014).

Qual é a causa?

Bem, código errado no OpenSSL.Aquié o commit que introduziu a vulnerabilidade, eaquié o commit que corrigiu a vulnerabilidade. O bug apareceu em dezembro de 2011 e foi corrigido hoje, 7 de abril de 2014.

O bug também pode ser visto como um sintoma de um problema maior. Os dois problemas relacionados são (1) qual processo existe para garantir que código errôneo não seja introduzido em uma base de código e (2) por que os protocolos e extensões são tão complexos e difíceis de testar. O item (1) é um problema de governança e processo do OpenSSL e de muitos outros projetos. Muitos desenvolvedores simplesmente resistem a práticas como revisões, análises e varreduras de código. O item (2) está sendo discutido no TLS WG da IETF. VerHeartbleed / complexidade do protocolo.

O código errado foi inserido maliciosamente?

Não vou especular se isso foi realmente um erro ou possivelmente um pedaço de código introduzido em nome de um malfeitor. No entanto, a pessoa que desenvolveu o código para OpenSSL afirma que foi inadvertidamente. VerHomem que introduziu séria falha de segurança ‘Heartbleed’ nega que a tenha inserido deliberadamente.

Quais sistemas operacionais e versões do OpenSSL são vulneráveis?

Conforme mencionado acima, qualquer sistema operacional que esteja usando ou aplicativo vinculado ao OpenSSL 1.0.1 a 1.0.1f.

Quais são os sintomas, há algum método para detectar uma exploração bem-sucedida?

Esta é a parte assustadora. Tanto quanto sabemos, não existe uma forma conhecida de detectar se esta vulnerabilidade foi ou não explorada. É teoricamente possível que em breve sejam lançadas assinaturas IDS que possam detectar essa exploração, mas no momento em que este livro foi escrito, elas não estavam disponíveis.

Há evidências de que o Heartbleed estava sendo explorado ativamente na natureza já em novembro de 2013. Veja o relatório da EFFWild at Heart: as agências de inteligência estavam usando o Heartbleed em novembro de 2013?E a Bloomberg relata que a NSA transformou a exploração em uma arma logo após a introdução da vulnerabilidade. VerNSA disse explorar bug Heartbleed para inteligência por anos. No entanto, a Comunidade de Inteligência dos EUA nega as afirmações de Bloomberg. VerIC NO REGISTRO.

Como posso verificar se meu sistema foi afetado?

Sevocê está mantendo OpenSSL em seu sistema, então você pode simplesmente emitir openssl version:

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

Sea distribuição está mantendo o OpenSSL, então você provavelmente não poderá determinar a versão do OpenSSL devido ao back patching usando opensslo comando ou as informações do pacote (por exemplo, apt-get, dpkg, yumou rpm). O processo de back patching usado pela maioria (todas?) das distribuições usa apenas o número da versão base (por exemplo, "1.0.1e"); e faznãoincluir umversão de segurança eficaz(por exemplo, "1.0.1g").

Há uma questão em aberto sobre o superusuário para determinar a versão de segurança efetiva para OpenSSL e outros pacotes quando os pacotes recebem backpatched. Infelizmente, não há respostas úteis (além de verificar o site da distro). VerDetermine a versão de segurança eficaz quando confrontado com backpatching?.

Como regra geral: se você já instalou uma das versões afetadas e já executou programas ou serviços vinculados ao OpenSSL para suporte a TLS, você está vulnerável.

Onde posso encontrar um programa para testar a vulnerabilidade?

Poucas horas após o anúncio do Heartbleed, várias pessoas na Internet divulgaram aplicativos da web acessíveis ao público que supostamente poderiam ser usados ​​para verificar um servidor quanto à presença desta vulnerabilidade. No momento em que este livro foi escrito, não revisei nenhum, portanto não divulgarei mais suas aplicações. Eles podem ser encontrados com relativa facilidade com a ajuda do mecanismo de pesquisa de sua preferência.

Como essa vulnerabilidade é mitigada?

Atualize para uma versão não vulnerável e redefina ou proteja novamente os dados vulneráveis. Como observado noSangramento cardíacosite, as etapas de resposta apropriadas são geralmente:

  1. Corrija sistemas vulneráveis.
  2. Gere novamente novas chaves privadas.
  3. Envie um novo CSR para sua CA.
  4. Obtenha e instale um novo certificado assinado.
  5. Invalidar chaves de sessão e cookies
  6. Redefinir senhas e segredos compartilhados
  7. Revogar certificados antigos.

Para uma análise e resposta mais detalhadas, consulteO que um operador de site deve fazer em relação à exploração do Heartbleed OpenSSL?no Security Stack Exchange.

Devo me preocupar com o comprometimento de minhas chaves ou outros dados privados? Com quais outros efeitos colaterais devo me preocupar?

Absolutamente. Os administradores de sistemas precisampresumirque seus servidores que usavam versões vulneráveis ​​do OpenSSL estão realmente comprometidos e respondem de acordo.

Pouco depois da divulgação da vulnerabilidade, a Cloudfare ofereceu um desafio para ver se a chave privada de um servidor poderia ser recuperada na prática. O desafio foi vencido de forma independente por Fedor Indutny e Ilkka Mattila. VerO Desafio Heartbleed.

Onde posso encontrar mais informações?

Link dump, para quem procura mais detalhes:


Um cronograma bastante detalhado dos eventos de divulgação pode ser encontrado emCronograma de divulgação do Heartbleed: quem sabia o que e quando.


Se você é um programador e está interessado em vários truques de programação, como detectar um ataque Heartbleed através msg_cbdo retorno de chamada do OpenSSL, consulte o OpenSSLComunicado de segurança 2014047.

Responder2

Uma explicação simples do bug, por XKCD:

XKCD1354

Responder3

Ubuntu 12.04, 12.10 e 13.10

Ubuntu emitiuUSN-2165-1, que afirma que os pacotes atualizados agora estão disponíveis nos arquivos. Execute os dois comandos a seguir para obter a correção.

sudo apt-get update
sudo apt-get upgrade

Ubuntu 14.04

Fiz upload de um pacote Debian contendo a nova versão (1.0.1g) para um PPA que configurei para esse propósito. Estes três comandos irão adicionar meu PPA ao seu sistema, atualizar a lista de pacotes disponíveis e atualizar tudo:

sudo add-apt-repository ppa:george-edison55/openssl-heartbleed-fix
sudo apt-get update
sudo apt-get upgrade

Nota: o PPA também fornece pacotes para Ubuntu 12.04 e 13.10, caso você prefira realmente executar a nova versão (1.0.1g) em vez de apenas usar as versões corrigidas nos arquivos.

Ubuntu 10.04

Esta é uma versão LTS, a versão do servidor ainda é suportada e recebe atualizações de segurança. Mas a vulnerabilidade heartbleed não afetou o pacote openssl de uma instalação padrão do ubuntu 10.04, porque a versão é inferior a 1.0.1.

A versão desktop atingiu o fim de sua vida útil e precisa ser atualizada/reinstalada.

Ubuntu 13.04 e outras versões desatualizadas

O Ubuntu 13.04 teve um ciclo de suporte muito curto que você talvez não esperasse. Ele já atingiu o fim de sua vida útil e não recebe mais atualizações de segurança. Deveria ter sido atualizado há muito tempo. Se alguém ainda estiver usando-o, atualize agora, do zero ou pode ser atualizado de forma não destrutiva para 13.10 seguindo este procedimento fácil:http://www.tecmint.com/upgrade-ubuntu-13-04-raring-ringtail-to-ubuntu-13-10-saucy-salamander/Após a atualização, o sistema recebe o patch heartbleed da 13.10.

Para todas as outras versões desatualizadas do Ubuntu, isso significa basicamente que uma nova instalação é necessária.

Verifique se o patch foi aplicado

Essencialmente, execute openssl version -ae certifique-se de que a data de construção seja 7 de abril de 2014 ou posterior, mas veja maisaqui.

Reinício

A melhor maneira de garantir que todos os serviços que dependem do OpenSSL sejam reiniciados éreinício.

Responder4

Debian Wheezy

O Debian emitiuDSA-2896-1e bibliotecas corrigidas sãodisponivel aqui. Um script de shell édisponivel aqui.

1. Patch

O repositório Apt-get foi atualizado, então agora as bibliotecas corrigidas estão disponíveis viaapt-get update && apt-get upgrade

apt-get upgrade libssl1.0.0 openssl

Alternativamente (não recomendado) os pacotes podem ser atualizados manualmente:

wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/openssl_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1e-2+deb7u5_amd64.deb

dpkg -i openssl_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl-dev_1.0.1e-2+deb7u5_amd64.deb

2. Reinicie o servidor/serviços

Para melhor proteção, reinicie todo o servidor ou, se o servidor não puder ficar offline, reinicie os serviços necessários.

3. Verifique a versão do OpenSSL

love@server:~$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
love@server:~$ dpkg -l libssl1.0.0
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-====================================================
ii  libssl1.0.0                 1.0.1e-2+deb7u6  amd64            SSL shared libraries

informação relacionada