Esta é uma pergunta canônica sobre como entender e corrigir o problema de segurança do Heartbleed.
O que exatamente é o CVE-2014-0160 AKA "Heartbleed"? Qual é a causa, quais SOs e versões do OpenSSL são vulneráveis, quais são os sintomas, existem métodos para detectar uma exploração bem-sucedida?
Como posso verificar se meu sistema está afetado? Como essa vulnerabilidade pode ser mitigada? Deveria me preocupar que minhas chaves ou outros dados privados tenham sido comprometidos? Com que outros efeitos colaterais devo me preocupar?
security
openssl
heartbleed
Jacob
fonte
fonte
Respostas:
Primeiro , antes de surtar, certifique-se de entender se essa vulnerabilidade realmente se aplica a você. Se você possui um servidor, mas nunca teve nenhum aplicativo usando TLS, isso não é uma tarefa de alta prioridade para você corrigir. Se, por outro lado, você já teve aplicativos habilitados para TLS, então está pronto para um deleite. Leia:
É uma grande bagunça, é isso que é. Em resumo, uma vulnerabilidade explorável remotamente foi descoberta nas versões 1.0.1 a 1.0.1f do OpenSSL, através das quais um invasor pode ler certas partes da memória do sistema. Essas partes são aquelas que mantêm dados confidenciais, como chaves privadas, chaves pré-compartilhadas, senhas e dados corporativos de alto valor, entre outras coisas.
O bug foi descoberto independentemente 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).
Bem, código incorreto no OpenSSL. Aqui é a confirmação de que introduziu a vulnerabilidade, e aqui é a confirmação de que fixa 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) que processo existe para garantir que o código incorreto 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) é uma questão de governança e processo no OpenSSL e em muitos outros projetos. Muitos desenvolvedores simplesmente resistem a práticas como revisão de código, análise e varredura. O item (2) está sendo discutido no GT TLS da IETF. Consulte Heartbleed / complexidade do protocolo .
Não vou especular se isso foi realmente um erro ou se algum código foi inserido em nome de um ator ruim. No entanto, a pessoa que desenvolveu o código para o OpenSSL afirma que foi inadvertido. Veja O homem que introduziu séria falha de segurança "Heartbleed" nega que a tenha inserido deliberadamente .
Como mencionado acima, qualquer sistema operacional que esteja usando ou aplicativo vinculado ao OpenSSL 1.0.1 a 1.0.1f.
Esta é a parte assustadora. Até onde sabemos, não há maneira conhecida de detectar se essa vulnerabilidade foi ou não explorada. Teoricamente, é possível que em breve sejam liberadas assinaturas de IDS que possam detectar essa exploração, mas, até o momento da redação deste documento, elas não estavam disponíveis.
Há evidências de que o Heartbleed estava sendo explorado ativamente em estado selvagem desde novembro de 2013. Veja o artigo de natureza selvagem do EFF : as agências de inteligência usavam o Heartbleed em novembro de 2013? E a Bloomberg relata que a NSA havia armado a exploração logo após a introdução da vulnerabilidade. Veja a NSA disse explorar o bug do Heartbleed por inteligência por anos . No entanto, a Comunidade de Inteligência dos EUA nega as alegações da Bloomberg. Veja IC NA GRAVAÇÃO .
Se você estiver mantendo o OpenSSL no seu sistema, poderá simplesmente emitir
openssl version
:Se a distribuição é manter OpenSSL, então você provavelmente não pode determinar a versão do OpenSSL, devido à volta remendar usando
openssl
comando ou as informações do pacote (por exemplo,apt-get
,dpkg
,yum
ourpm
). O processo de correção posterior usado pela maioria das distribuições (todas?) Usa apenas o número da versão base (por exemplo, "1.0.1e"); e não inclui uma versão de segurança efetiva (por exemplo, "1.0.1g").Há uma pergunta em aberto no Superusuário para determinar a versão de segurança efetiva para o OpenSSL e outros pacotes quando os pacotes são devolvidos. Infelizmente, não há respostas úteis (além de consultar o site da distribuição). Consulte Determinar a versão de segurança efetiva quando confrontado com o Backpatching ?
Como regra geral: se você já instalou uma das versões afetadas e já executou programas ou serviços vinculados ao suporte do OpenSSL para TLS, estará vulnerável.
Poucas horas após o anúncio da Heartbleed, várias pessoas na Internet publicaram aplicativos da Web acessíveis ao público que supostamente poderiam ser usados para verificar um servidor quanto à presença dessa vulnerabilidade. Até o momento em que escrevi este artigo, não revisei nenhum, portanto não divulgarei mais suas aplicações. Eles podem ser encontrados com relativa facilidade com a ajuda do seu mecanismo de pesquisa preferido.
Atualize para uma versão não vulnerável e redefina ou proteja os dados vulneráveis. Conforme observado no site Heartbleed , as etapas de resposta apropriadas são amplamente:
Para uma análise e resposta mais detalhadas, consulte O que um operador de site deve fazer sobre a exploração do Heartbleed OpenSSL? no Security Stack Exchange.
Absolutamente. Os administradores de sistemas precisam assumir que seus servidores que usavam versões vulneráveis do OpenSSL estão realmente comprometidos e respondem de acordo.
Logo após a divulgação da vulnerabilidade, o Cloudfare ofereceu um desafio para verificar 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. Veja O Desafio Heartbleed .
Despejo de link, para quem procura mais detalhes:
Uma linha do tempo bastante detalhada dos eventos de divulgação pode ser encontrada na linha do tempo da divulgação da Heartbleed: quem sabia o quê e quando .
Se você é um programador e está interessado em vários truques de programação, como detectar um ataque do Heartbleed através do
msg_cb
retorno de chamada do OpenSSL , consulte o Aviso de Segurança 2014047 do OpenSSL .fonte
Uma explicação simples do bug, por XKCD:
fonte
Ubuntu 12.04, 12.10 e 13.10
O Ubuntu emitiu o USN-2165-1 , que afirma que os pacotes atualizados estão agora disponíveis nos arquivos. Execute os dois comandos a seguir para obter a correção.
Ubuntu 14.04
Fiz upload de um pacote Debian contendo a nova versão (1.0.1g) para um PPA que configurei para esse fim. Esses três comandos adicionam meu PPA ao seu sistema, atualizam a lista de pacotes disponíveis e atualizam tudo:
Nota: o PPA também fornece pacotes para o Ubuntu 12.04 e 13.10, caso você prefira 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 está abaixo de 1.0.1.
A versão para desktop chegou ao fim da 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, o que você não pode esperar. Já chegou ao fim da vida útil e não recebe mais atualizações de segurança. Por muito tempo deveria ter sido atualizado. Se alguém ainda o estiver usando, atualize agora, do zero, ou pode ser atualizado não destrutivo 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, significa basicamente que é necessária uma nova instalação.
Verifique se o patch foi aplicado
Basicamente, execute
openssl version -a
e verifique se a data de compilação é 7 de abril de 2014 ou posterior, mas veja mais aqui .Reiniciar
A melhor maneira de garantir que todos os serviços, dependendo do OpenSSL, sejam reiniciados é reiniciar .
fonte
Mon Apr 7 20:31:55 UTC 2014
) relevante .RedHat 6.5 e CentOS 6.5
Estes são vulneráveis. A errata do RedHat RHSA-2014-0376 diz que existem bibliotecas corrigidas disponíveis e qualquer pessoa afetada deve atualizar o mais rapidamente possível.
No momento da redação deste artigo, o CentOS ainda não tinha uma versão fixa, mas a postagem de Karanbir Singh no CentOS-Announcement diz que eles produziram uma versão atualizada do openssl (
openssl-1.0.1e-16.el6_5.4.0.1
observe os últimos quatro dígitos importantes) que possui o TLS explorável comando desativado e que pode ser aplicado com segurança, pois será substituído por uma versão fixa quando for lançado.A versão temporariamente corrigida ainda não parece ter atingido todos os espelhos, mas está no repositório principal em http://mirror.centos.org/centos/6/updates/x86_64/Packages/ (e da mesma forma para i686).
Edit : como Iain diz, agora parece haver uma versão totalmente corrigida para o C6.5, e parece ter sido empurrada pelos espelhos com pressa. Um straight
yum update
conseguiu para meus servidores; ele éopenssl-1.0.1e-16.el6_5.7
.Versões do RH6 e C6 anteriores à 6.5
Estes não são vulneráveis. De acordo com este comunicado da Red Hat ,
A postagem de Karanbir Singh no CentOS-Announce é igualmente clara sobre o versionamento:
fonte
Debian Wheezy
O Debian emitiu o DSA-2896-1 e as bibliotecas corrigidas estão disponíveis aqui . Um script de shell está disponível aqui .
1. Patch
O repositório Apt-get foi atualizado e agora as bibliotecas corrigidas estão disponíveis via
apt-get update && apt-get upgrade
Como alternativa (não recomendado), os pacotes podem ser atualizados manualmente:
2. Reinicie o servidor / serviços
Para melhor proteção, reinicie o servidor inteiro ou, se o servidor não puder ficar offline, reinicie os serviços necessários.
3. Verifique a versão do OpenSSL
fonte
wheezy/security
então, será bomapt-get update && apt-get upgrade
. Ou, use um gerenciador de pacotes interativo para atualizar apenas os pacotesopenssl
,libssl1.0.0
,libssl1.0.0-dbg
elibssl-dev
(como instalado em seu sistema).OpenSSL 1.0.1e 11 Feb 2013
como o patch é chamado 1.0.1e-2. Você pode verificar comdpkg -l openssl
e ele deve mostrar a versão1.0.1e-2+deb7u6
Gostaria de salientar que as chaves privadas não são os únicos ativos que devem ser considerados comprometidos. O bug pode vazar qualquer memória em execução no mesmo espaço de endereço (ou seja, o mesmo processo) que o OpenSSL. Portanto, se você estiver executando um processo de servidor no qual uma versão vulnerável do OpenSSL está vinculada estaticamente ou dinamicamente, qualquer informação que esse processo já tenha manipulado , incluindo senhas, números de cartão de crédito e outros dados pessoais, deve ser considerada potencialmente comprometida.
fonte
FreeBSD 10.0 ou openssl a partir das portas
A equipe de segurança do FreeBSD emitiu um comunicado sobre o CVE-2014-0160 (aka "Heartbleed") e: FreeBSD-SA-14: 06.openssl
Atualizando o FreeBSD
Atualizando o FreeBSD através de um patch binário
Os sistemas executando uma versão RELEASE do FreeBSD nas plataformas i386 ou amd64 podem ser atualizados através do utilitário freebsd-update (8):
Atualizando o FreeBSD a partir das fontes
Faça o download do patch relevante no local abaixo e verifique a assinatura PGP desanexada usando o seu utilitário PGP.
Execute os seguintes comandos como root:
Recompile o sistema operacional
usando buildworld e installworld conforme descrito no manual do FreeBSD .
Atualize a porta openssl com a versão mínima 1.0.1_10
Reinicie todos os daemons usando a biblioteca ou reinicie o sistema
Aja como se o sistema tiver sido comprometida, re-emissão de todas as suas chaves SSL e / ou certificados e informações potencialmente vazado (ver EEAA resposta mais geral).
FreeBSD 9.xe FreeBSD 8.x
Por padrão, esses sistemas não são vulneráveis ao problema do Heartbleed , pois dependem da versão 0.9.x mais antiga da biblioteca openssl , a menos que você tenha instalado o openssl a partir das portas (consulte as etapas acima).
Se esses sistemas não estiverem vulneráveis ao problema do Heartbleed , talvez seja aconselhável atualizar seu sistema mais cedo ou mais tarde devido a outra vulnerabilidade local (consulte FreeBSD-SA-14: 06.openssl e a seção "FreeBSD 10.0" no andar de cima):
Nota :
O comunicado original do Heartbleed lista o FreeBSD 8.4 e 9.1 como potencialmente vulnerável. Isso não é verdade devido à falta de extensão de pulsação (a biblioteca padrão do OpenBSD openssl é a versão 0.9.x).
fonte
Achei quase impossível determinar as versões do SSL em uso em vários dispositivos com os quais trabalho. Embora tecnicamente não seja uma atenuação, poder identificar hosts atualmente vulneráveis estava no topo da minha lista.
Montei uma pequena VM que executará verificações em hosts e portas arbitrários usando o módulo de teste do FiloSottile . À primeira vista, o código parece sólido.
O lançamento da VM concluída está aqui . Está no formato VMX.
Palavras de Advertência
Este script e VM mostrarão apenas o status atual dos seus sistemas. É perfeitamente possível que em algum momento no passado seus sistemas estivessem em um estado vulnerável e pudessem ter sido abusados.
Algo aparecendo aqui é definitivamente uma alta prioridade para corrigir, mas isso não o tira do sério para aplicar atualizações e alterar todas as suas chaves.
fonte
Amazon Linux (distribuição Linux usada no Amazon EC2)
https://aws.amazon.com/amazon-linux-ami/security-bulletins/ALAS-2014-320/
Visão geral do problema: Uma verificação de limites ausentes foi encontrada na maneira como o OpenSSL lidava com os pacotes de extensão de pulsação TLS. Essa falha pode ser usada para revelar até 64k de memória de um cliente ou servidor conectado.
Versões afetadas: qualquer Amazon Linux AMI no qual o openssl 1.0.1 esteja instalado, qualquer Amazon Linux AMI 2013.03 ou posterior e qualquer Amazon Linux AMI que tenha sido atualizada para 2013.03 ou posterior. O OpenSSL é instalado por padrão na Amazon Linux AMI.
Pacotes afetados: openssl
Correção de problema: Execute yum update openssl para atualizar seu sistema. Após a instalação do novo pacote, é necessário que você reinicie manualmente todos os serviços que estão usando o openssl ou que reinicie sua instância. Embora o novo pacote ainda tenha o nome openssl-1.0.1e, ele contém a correção para o CVE-2014-0160.
Novos pacotes: i686:
x86_64:
fonte