Você está na página 1de 9

Carssimos leitores,

No dia 1 de Abril de 2014, foi comunicado equipa de


segurana do OpenSSL um bug no recurso denominado
Heartbeat. ste foi reportado por Neel Mehta da Google Security.
!a"ia algum tempo que n#o se ou$ia falar tanto de uma
$ulnerabilidade de segurana, e com um impacto t#o brutal na
Internet.
O que o HeartBleed?
ste bug foi bati"ado como Heartbleed, e est% presente em algumas $ers&es do
OpenSSL (releases 1.0.1 at 1.0.1f e 1.0.!beta1' . ( OpenSSL ) uma biblioteca open
source de criptogra*a, adotada por apro+imadamente 2 em cada , ser$idores de
empresas para blindar suas comunica&es $ia Internet. - ela a respons%$el por colocar
o S no HTTPS e o cadeado na barra de endereos dos sites seguros, por e+emplo.
sta fal.a, permite que um ad$ers%rio capture pedaos de dados carregados na
mem/ria num ser$idor, que corra a $ers#o $ulner%$el da biblioteca, e$entualmente
comprometendo informa&es importantes. 0m e+emplo disso, s#o pala$ras1passe de
utili"adores, c.a$es pri$adas do ser$idor, coo"ies ,etc.
ste erro, foi introdu"ido com um no$o recurso implementado pelo
#r.$obin Seggel%ann, um programador alem#o, que em muitas $e"es 2%
contribuiu com c/digos de segurana.
0tili"adores 3em geral, administradores de plataformas &eb' da biblioteca OpenSSL
afetados de$em atuali"%1la para a $ers#o 1.0.1g, lanada em 4 de abril, ou recompilar
o OpenSSL com a op#o -DOPENSSL_NO_HEARTBEATS. A s)rie 1.0.2 est% sendo
corrigida no release 1.0.21beta2. A $ers#o 1.0.1 foi lanada em maro de 2012, o que
signi*ca que sites e produtos que ten.am adotado o OpenSSL 1.0.1 com a e+tens#o
Heartbeat ati$a podem ter estado $ulner%$eis nos 5ltimos dois anos.
( Heartbleed e+plora um recurso interno do OpenSSL c.amado 6Heartbeat7. 8uando
o um computador acede a uma plataforma, esta ir% responder de $olta, para informar
o emissor que ele 3o receptor9ser$idor' est% ati$o e escutando os pedidos. sta
c.amada e resposta, ) feita atra$)s da troca de dados. Normalmente quando o
computador fa" uma solicita#o, o Heart s/ $ai en$iar de $olta a quantidade de dados
solicitadas pelo computador. No entanto, este n#o ) o caso para os ser$idores
atualmente afetados pelo bug. 0m indi$duo mal intencionado 3hac"er' ) capa" de
fa"er um pedido de dados para o ser$idor 3e dos que est#o gra$ados na mem/ria',
com um taman.o m%+imo de :;.;,: b<tes.
=ara os mais leigos, ) poss$el entender esta $ulnerabilidade a partir da seguinte
*gura.
( ser$idor poder% responder com informa#o at) :;.;,: b<tes, e como $isi$el na
imagem, poder% comprometer a autenticidade da informa#o dos utili"adores, como
do ser$io.
ntre os grandes sites de ser$ios afetados est% o 'aceboo", Google, (ahoo 3incluindo
ser$ios populares como (ahoo Mail, 'lic"r e )u%blr'. Como uma das informa&es que
pode ter $a"ado atra$)s do bug Heartblee* ) a c.a$e secreta do pr/prio certi*cado
digital SSL do site https afetado, a recomenda#o dos especialistas para os
administradores destes sites ) que re$oguem o certi*cado utili"ado no site at) o dia
em que corrigirem a $ulnerabilidade, e emitam um no$o certi*cado.
>egundo o site mashable.com, ) recomendado a utili"adores do !aceboo?, @umblr,
Anstagram, Boogle, Ca.oo, Ama"on, entre outros, alterarem as suas pala$ras1passe
pessoais, pois estas poderiam ter sido comprometidas. Der maisE
.ttpE99mas.able.com9201490490F9.eartbleed1bug1Gebsites1aHected9 .
A estimati$a ) que a fal.a ten.a atingido cerca de 14.;I dos sites da Internet, cerca de
;00 mil.&es, mas o n5mero pode ser bem maior, pois a fal.a tamb)m afeta outros
ser$ios que podem utili"ar a mesma biblioteca, como SM)+, ,+N, IM-+ e MyS.L.
Como funciona o bug HeartBleed?
As mensagens de comunica#o SSL/)LS baseiam1se na estrutura SSL3_RECORD, onde
a $ari%$el length de*ne o tamanho total do pacote da mensagem SSL.
struct ssl3_record_st
{
int type;
unsigned int length; /* How many bytes available */
[...]
unsigned char *data; /* HeartbeatMessage goes here */
[...]
} SSL3_RECORD;
( protocolo Heartbeat por sua $e" ) bem simples e consiste em dois m/dulosE !"#
re$%&s&'(o heartbeat_re$%est e !)# res*osta heartbeat_res*onse, como um a**on ao
OpenSSL. ssas mensagens s#o formatadas de acordo com a estrutura
Heartbeat+essageE
struct
{
Hearteat!essage"ype type;
uint#$ payload_length;
opa%ue payload&Hearteat!essage'payload_length(;
opa%ue padding&padding_length(;
} Hearteat!essage;
8uando o ser$idor inicia uma requisi#o aloca em memria espao sufciente para
o pacote que ele dese2a en$iar e con*gura os campos *a,load_length de
HeartbeatMessage e length de SSL01$23O$#E
u)er * O+E,SSL_-alloc.# / 0 / payload / padding1;
0m atacante por sua $e" ao responder informa um valor de *a,load_length maior
que o necessrio, que sendo um inteiro unsigne* de 1:1bits pode ter o $alor m%+imo
de !"#$%#, ou se2a, $&&'& b,tes ou $()b, incoerente com o $alor do length do
SSL01$23O$# declarado inicialmente.
=or outro lado, o R-C .)/0 que trata da e+tens#o Heartbeat ao )LS e #)LS, e+plicita
que 64hen a Heartbeat$e5uest %essage is recei6e* 789 the recei6er M:S) sen* a
correspon*ing Heartbeat$esponse %essage carrying an e;act copy of the payloa* of the
recei6e* Heartbeat$e5uest.7, ou se2a, 61%ando %ma mensagem HeartbeatRe$%est 2
receb&da !3# o rec&*&ente DE4E en5&ar %ma mensagem HeartbeatRes*onse
corres*ondente carregando %ma c6*&a e7ata do *a,load $%e 8o& receb&do *elo
HeartbeatRe$%est.7
Como o ser$idor n*o verifca o valor de *a,load_length, ele responde com b,tes da
prpria memria, que n#o foram alocadas para o Heartbeat, en$iando assim
informa&es fora da %rea de mem/ria da fun#o, contendo dados aleat/rios do
processo.
Como o ataque pode ocorrer repetidamente e e+trair at $()b de informa*o por
ve,, a fal.a pode e+por informa&es crticas, como pala$ras1passe e c.a$es de
criptogra*a de c.a$e p5blica, que podem le$ar a ataques do tipo man-&n-the-m&ddle.
-+plorando o bug HeartBleed
@endo *cado percebido o funcionamento do bug, ) o momento ideal de efetuar uma
e+periJncia pr%tica, de maneira a $eri*car esta potente $ulnerabilidade.
=ara e+plorar esta $ulnerabilidade ser% usado o ambiente Linu; < =ali, e dois *c.eiros
essenciaisE
i. E7*lo&t para efetuar o pedido ao servidor/
ii. Servidor 0pote de mel. vulnervel/
( e;ploit ) um mero *c.eiro em +yhon, que pode descarregar no *nal da p%gina, que
en$ia um pedido ao ser$idor, e $eri*ca se ele est% ou n#o $ulner%$el. =or outro lado, o
ser$idor ) um *c.eiro escrito na linguagem de programa#o +erl, e emula um
ser$idor H))+ com uma liga#o segura SSL (H))+S>.
( conte5do destes *c.eiros pouco interessa neste artigo, mas con$)m referir que
n#o foram escritos pelo autor do artigo.
=ara e+ecutar o ser$idor hone,*ot.*l 3pote de mel', ser% necess%rio indicar a seguinte
lin.a no terminalE *erl hone,*ot.*l . m seguida clicar enter e o ser$idor *car% a
correr esperando por um pedido.
Abrindo outro ter%inal, ) necess%rio e+ecutar o e;ploit. ( comando para proceder
sua e+ecu#o ) o seguinteE *,thon e7*lo&t.*, .
!oi propositado e+ecutar o e;ploit desta maneira, para que se2a poss$el $eri*car os
seus argumentos. Neste caso, basta unicamente de*nir o I+ do ser$idor #!1/2/2/#
3localhost'.
=assando e+ecu#o do e;ploit da seguinte maneiraE *,thon e7*lo&t.*, ")9.0.0." , )
possi$el $eri*car a resposta do ser$idor.
Anicialmente o e;ploit en$ia dados em massa para o ser$idor 3Hello', e espera
igualmente uma resposta longa, com possi$eis dados n#o autori"ados. - poss$el
$eri*car, que no inicio da mensagem de $olta do ser$idor, s#o en$iadas ao utili"ador
alguns utili"adores e suas pala$ras1passe. Asto de$e1se ao facto, de muito
recentemente tais utili"adores se terem autenticado no ser$idor.
ste ) o cen%rio predominante ainda em mil.ares de ser$idores atualmente online na
Internet.
Como corrigir o HeartBleed
=ara colmatar este bug, ) necess%rio atuali"ar as $ers&es do OpenSSL. As $ers&es do
OpenSSL de 1.0.1 at) o 1.0.1f 3inclusi$e' s#o $ulner%$eis. Ders&es anteriores 1.0.1,
como a 1.0.0 e 0.F.K, n#o s#o $ulner%$eis. A $ers#o 1.0.1g corrige o bug, portanto n#o
) $ulner%$el.
=ara $eri*car se os ser$idores est#o $ulner%$eis, poder1se1% utili"ar o seguinte
comando no terminal Linu;E
3 echo %e 4quit5n6 7 openssl s8client %connect seuhost9((' %tlse+tdebug !:;#7
grep <=>S server e+tension 4heartbeat6 0id?#&.@ len?#A
+istem igualmente aplica&es &eb que podem ser usadas para efetuar igual
$eri*ca#o, por e+emploE
L1M 1 .ttpsE99*lippo.io9Neartbleed9
L2M 1 https://lastpass.com/heartbleed/
.
@amb)m ) importante gerar no$os certi*cados para ser$idores que ten.am estado
$ulner%$eis.
No caso dos utili"adores *nais, ) importante a troca de todas as pala$ras1passe de
sites ou ser$ios que possam ter sido comprometidos. Oas antes de trocar, assegure1
se que o pro$edor do ser$io 2% corrigiu o problema. Consulte no$amente o endereo
disponibili"ado acima, pois oferece uma listagem de todos os ser$ios afetados.
=or forma a moti$ar ainda mais o artigo, nada se sabe se esta $ulnerabilidade foi ou
n#o largamente e+plorada. As teorias conspirat/rias est#o a todo o $apor, e por um
moti$oE n*o d para saber. A fal.a introdu"ida por Seggel%ann n#o produ"ia
nen.um log ou registo dos utili"adores do ser$idor e suas requisi&es, o que signi*ca
que n#o apenas a $ulnerabilidade e+iste .% dois anos, como tamb)m n#o e+istem
qualquer ideia de quem ten.a tirado pro$eito dela.